https://kubesphere.com.cn/docs/installing-on-linux/public-cloud/install-kubesphere-on-qingcloud-vms/
记录的主要是如何测试负载均衡那块
介绍
对于生产环境,需要考虑集群的高可用性。如果关键组件(例如 kube-apiserver、kube-scheduler 和 kube-controller-manager)在相同的主节点上运行,一旦主节点出现故障,Kubernetes 和KubeSphere 将不可用。因此,您需要为多个主节点配置负载均衡器,以搭建高可用集群。
准备工作
如果搭建生产环境,建议您提前准备持久化存储并创建 StorageClass。如果搭建开发测试环境,您可以直接使用集成的 OpenEBS 配置 LocalPV 存储服务。
集群架构
本教程使用六台机器。您需要创建两个负载均衡器,并在其中的三台机器上部署三个主节点和 etcd 节点。您可以在 KubeKey 创建的 config-sample.yaml
文件中配置上述节点(config-sample.yaml
为文件的默认名称,可以手动更改)。
根据 Kubernetes 官方文档高可用拓扑选项,Kubernetes 高可用集群有两种拓扑配置形式,即堆叠 etcd 拓扑和外部 etcd 拓扑。在搭建高可用集群前,您需要根据该文档仔细权衡两种拓扑的利弊。本教程采用堆叠 etcd 拓扑搭建高可用集群作为示例。
步骤 1:创建负载均衡器
在创建监听器后需要检查负载均衡器的防火墙规则。请确保 6443
端口已添加到防火墙规则中并且外部流量可以通过 6443
端口,否则安装将会失败。在青云QingCloud 平台上,您可以在安全下的安全组页面查看相关信息。
测试master防火墙是否关闭:
第一步在三个master上使用下面命令模拟启动三个6443端口
###验证服务地址
#python 2
ssh k.m1 python -m SimpleHTTPServer 6443
ssh k.m2 python -m SimpleHTTPServer 6443
ssh k.m3 python -m SimpleHTTPServer 6443
#python3
ssh k.m1 python -m http.server 6443
ssh k.m2 python -m http.server 6443
ssh k.m3 python -m http.server 6443
查看本地python的版本确定使用哪个启动端口命令
[root@master01 ~]# python -V
Python 2.7.5[root@master01 ~]# python -m SimpleHTTPServer 7777
Serving HTTP on 0.0.0.0 port 7777 ...[root@master01 ~]# netstat -tpln | grep 7777
tcp 0 0 0.0.0.0:7777 0.0.0.0:* LISTEN 14210/python
第二步测试端口是否起来
Serving HTTP on 0.0.0.0 port 6443 ... 测试三个服务端口是否开放,怕有防火墙限制
[root@master01 ~]# python -m SimpleHTTPServer 6443
[root@master02 ~]# python -m SimpleHTTPServer 6443
[root@master03 ~]# python -m SimpleHTTPServer 6443
然后使用telnet测试,如果卡着说明端口是起来的,没问题的
[root@master02 ~]# telnet 192.168.0.15 6443
Trying 192.168.0.15...
Connected to 192.168.0.15.
Escape character is '^]'.
^C^C^C^C^C
Connection closed by foreign host.
You have new mail in /var/spool/mail/root
[root@master02 ~]# telnet 192.168.0.14 6443
Trying 192.168.0.14...
Connected to 192.168.0.14.
Escape character is '^]'.
^CConnection closed by foreign host.
[root@master02 ~]# telnet 192.168.0.16 6443
Trying 192.168.0.16...
Connected to 192.168.0.16.
Escape character is '^]'.
测试负载均衡器端口是否有防火墙限制(负载均衡器 192.168.0.252 端口6443)
[root@master02 ~]# telnet 192.168.0.252 6443
Trying 192.168.0.252...
Connected to 192.168.0.252.
Escape character is '^]'.
创建LB
创建监听器,监听器使用TCP协议,然后创建后端,后端是上面使用python模拟的端口所在的主机IP和地址。三台机器telnet三次,因为都是轮询。
[root@master01 ~]# telnet 192.168.0.252 6443
Trying 192.168.0.252...
Connected to 192.168.0.252.
Escape character is '^]'.
^CConnection closed by foreign host.
[root@master01 ~]# telnet 192.168.0.252 6443
Trying 192.168.0.252...
Connected to 192.168.0.252.
Escape character is '^]'.
^CConnection closed by foreign host.
[root@master01 ~]# telnet 192.168.0.252 6443
Trying 192.168.0.252...
Connected to 192.168.0.252.
Escape character is '^]'.
^CConnection closed by foreign host.
上面没有问题然后再看看图形界面是否为活越状态
先测试lb然后再去修改config文件拉起ks集群
步骤 3:设置集群节点
当您采用包含堆叠控制平面节点的高可用拓扑时,主节点和 etcd 节点在相同的三台机器上。
参数 | 描述 |
---|---|
hosts |
所有节点的详细信息 |
etcd |
etcd 节点名称 |
master |
主节点名称 |
worker |
工作节点名称 |
在 etcd
和 master
参数下分别设置主节点的名称(master1
、master2
和 master3
)使得三台机器同时作为主节点和 etcd 节点。etcd 节点的数量必须是奇数。此外,由于 etcd 内存占用较高,不建议将 etcd 安装在工作节点上。
步骤 4:配置负载均衡器
在前述 YAML 文件中除了需要配置节点信息外,还需要配置负载均衡器信息。本步骤需要用到创建内部负载均衡器时记录的内网 VIP 地址。在本示例中,内部负载均衡器的 VIP 地址和监听端口分别为 192.168.0.253
和 6443
。您可以参考如下 YAML 文件配置。
config-sample.yaml 文件示例
## Internal LB config example
## apiserver_loadbalancer_domain_name: "lb.kubesphere.local"controlPlaneEndpoint:domain: lb.kubesphere.localaddress: "192.168.0.253"port: "6443"
- 在
config-sample.yaml
文件中,address
和port
字段应缩进两个空格,同时address
字段的值应为 VIP 地址。 - 负载均衡器的默认域名为
lb.kubesphere.local
,用于内部访问。您可以在domain
字段修改域名。