当前位置: 代码迷 >> 综合 >> Kubernetes 青云QingCloud 主机上部署 KubeSphere
  详细解决方案

Kubernetes 青云QingCloud 主机上部署 KubeSphere

热度:46   发布时间:2023-09-30 12:38:57.0

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 青云QingCloud 主机上部署 KubeSphere

根据 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

Kubernetes 青云QingCloud 主机上部署 KubeSphere

Kubernetes 青云QingCloud 主机上部署 KubeSphere

Kubernetes 青云QingCloud 主机上部署 KubeSphere

Kubernetes 青云QingCloud 主机上部署 KubeSphere

 创建监听器,监听器使用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.

上面没有问题然后再看看图形界面是否为活越状态

Kubernetes 青云QingCloud 主机上部署 KubeSphere

 先测试lb然后再去修改config文件拉起ks集群

步骤 3:设置集群节点


当您采用包含堆叠控制平面节点的高可用拓扑时,主节点和 etcd 节点在相同的三台机器上。

参数 描述
hosts 所有节点的详细信息
etcd etcd 节点名称
master 主节点名称
worker 工作节点名称

在 etcd 和 master 参数下分别设置主节点的名称(master1master2 和 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 字段修改域名。
  相关解决方案