案例——原生Kubernetes容器云平台基本测试使用
一、案例目标
(1)了解Kubernetes IPVS的工作原理和开启方式。
(2)掌握Kubernetes节点的调度方法。
(3)掌握Kubernetes服务的运行方法。
二、案例分析
1.规划节点
主机名 |
节点 |
master |
master节点 |
node |
node节点 |
2.基础准备
Kubernetes集群已部署完成。
三、案例实施
1. 开启IPVS
IPVS是基于TCP四层(IP+端口)的负载均衡软件。
IPVS会从TCPSYNC包开始为一个TCP连接所有的数据包,建立状态跟踪机制,保证一个TCP连接中所有的数据包能到同一个后端。所以IPVS是基于TCP状态机进行控制管理,只感知TCP头而不对TCP的payload进行查看;因此,对IPVS后端服务器集群还有一个假定,那就是所有后端都具有同样的应用层的服务功能,但是由于IPVS可以给后端设定权重,所以每个后端的服务的能力可以不同。
一个合理的负载均衡软件,应该能够尽量提高服务接入能力(Request Per Second,ReqPS),而将服务处理能力(Response Per second,ResPS)通过合理分配后端来达到最佳。
根据处理请求和响应数据包的模式的不同,IPVS具有如下4种工作模式:
① NAT模式
② DR(Direct Routing)模式
③ TUN(IP Tunneling)模式
④ FULLNAT模式
而根据响应数据包返回路径的不同,可以分为如下两种模式:
① 双臂模式:请求、转发和返回在同一路径上,client和IPVS director、IPVS director和后端real server都是由请求和返回2个路径连接。
② 三角模式:请求、转发和返回3个路径连接client、IPVS director和后端real server成为一个三角形。
(1)修改配置文件
登录master节点,修改ConfigMap的kube-system/kube-proxy中的config.conf文件,修改为mode: "ipvs"。
(2)重启kube-proxy
由于已经通过ConfigMap修改了kube-proxy的配置,所以后期增加的Node节点,会直接使用IPVS模式。查看日志。
日志中打印出了Using ipvs Proxier,说明IPVS模式已经开启。
(3)测试IPVS
使用ipvsadm测试,可以查看之前创建的Service已经使用LVS创建了集群。
2. 调度master节点
出于安全考虑,默认配置下Kubernetes不会将Pod调度到Master节点。查看Master节点Taints字段默认配置:
[root@master ~]# kubectl describe node master
//状态为NoSchedule
如果希望将k8s-master也当作Node节点使用,可以执行如下命令:
//状态已经改变
3. 运行容器
(1)运行Nginx应用
运行具有4个副本的Nginx应用。
安装下面两个安装包和拉取镜像资源
(2)查看Pods
验证Pods是否正常运行。
[root@master ~]# kubectl get pods
(3)开放端口
使用expose将service的80端口开放出去。
(4)测试Nginx应用
使用curl工具可以成功获取到Nginx网页信息,说明80端口已开放成功。