Kubernetes(k8s) 集群部署多Master

Kubernetes是支持集群环境内容编排的工具 简称k8s。k8s是谷歌官方提供的,底层基于docker,与docker-swarm是竞争关系。集群容器管理领域几乎都是采用的k8s。Kubernetes(k8s)主要作用是自动化容器的部署和复制,随时扩展或收缩容器规模,容器分组Group,并且提供容器间的负载均衡,实时监控,即时故障发现,自动替换。本文主要介绍Kubernetes(k8s) 集群部署多Master的配置及操作步骤。

示例服务器:

Loadbalance:lb-31 192.168.31.31
Master:m-41 192.168.31.41
Work:w-42 192.168.31.42
Work:w-43 192.168.31.43

1、使用场景

当集群中只有一个master节点时,如果其出现了故障,会导致Kubernetes(k8s)的控制平面完全失效。如要保证Kubernetes(k8s)集群的高可靠性,可以设置多个master,当其中部分master出现故障时,其他master还可以管理整个集群。

正常情况下,可以使用一个负载均衡器(Loadbalance)将请求转发给集群中的master,如果有一天其中的一个master出现故障后,负载均衡器仅需要将请求发送另外的master即可。

环境中有2个master,1个worker node。管理访问负载均衡器haproxy,地址为192.168.31.31,然后访问请求被均匀负载到两个master上。两个master之间的数据由etcd来同步。如果想要更高的可靠性,可以设置两个以上的loadbalance、和worker。

2、安装Loadbalance

1)安装haproxy

yum inastll haproxy -y

2)编辑配置文件,在文件末尾设置关联的Master:

vim /etc/haproxy/haproxy.cfg

设置两个服务器权重相同,内容如下:

listen k8s-lb *:6443
        mode tcp
        balance roundrobin
        server s1 192.168.31.41:6443 weight 1
        server s2 192.168.31.42:6443 weight 1

3)启动服务及查看状态

systemctl enable haproxy --now
systemctl status haproxy

3、安装etcd

参考文档:

Kubernetes(k8s) etcd 安装与配置单节点集群方法

Kubernetes(k8s) etcd配置多节点集群方法

Kubernetes(k8s) etcd创建快照及恢复数据方法

4、部署多master集群

参考文档Kubernetes(k8s) 简介及安装与配置方法

1)基本上和部署单master时一致,不同的是可以选择使用yaml文件在第一个master上来初始化集群

kubeadm init --config=kubeadm-config.yaml

2)kubeadm-config.yaml文件从kubeadm config view获取,修改控制平面选项controlPlaneEndpoint,指向了haproxy的地址

apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 3m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
controlPlaneEndpoint: "192.168.31.31:6443"
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.21.0
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

3)之后会和单节点操作相同,提示将其余的worker node和master加入集群的命令。如果是master身份加入集群,需要在以worker node加入的命令后写上–control-plane。

参考文档:Kubernetes(k8s) 简介及安装与配置方法

注意:需要将在第一个master上的/etc/kubernetes/pki下的所有证书文件拷贝到其他master的相同目录中。

Master高可用性的方案还可以使用sealos,具体可以参考如下文档:

参考文档https://www.sealyun.com/

推荐阅读
cjavapy编程之路首页