多节点Master集群高可用
一、Kubernetes多Master集群高可用方案
作用:实现高可用
apiserver对外安全通信端口6443,对内端口8080
1、实现高可用方法
- etcd:etcd群集至少是3副本,奇数台,通过raft算法,保证数据的一致性
- node节点:承载业务,跟Master进行对接
- master节点:高可用使用keepalived+LB方案,keepalived能够提供VIP和主备,LB实现负载均衡,使用nginx+haproxy,将master加入nginx地址池,由nginx转发到对应的apiserver,再通过schduleer调度到相应的node节点,使用轮询算法。
2、多节点Master高可用的部署
- 从maste01复制etcd,k8s的证书,可执行文件,配置文件,master组件的服务管理文件 到 master02节点
- 再Masters节点修改apiserver的配置,修改为自己的配置
- 启动master相关组件
- 部署keepalived + LB (nginx , haproxy)实现高可用 和 负载均衡
- keepalived需要健康检查脚本来实现自动的故障切换
- 在所有Node节点上修改 node相关组件的 Kubeconfig 文件配置 ,把对接的 server ip 指定为VIP
二、多节点Master部署
在单节点Master搭建基础之上部署,在此新添加了一台master02,两台负载均衡节点
实验环境
服务器 | 主机名 | IP地址 | 主要组件 |
---|---|---|---|
k8s集群master01 + etcd01 | master01 | 192.168.10.130 | kube-apiserver kube-controller-manager kube-schedular etcd |
k8s集群master02 | master02 | 192.168.10.134 | kube-apiserver kube-controller-manager kube-schedular |
k8s集群node01 + etcd02 | node01 | 192.168.10.132 | kubelet kube-proxy docker flannel |
k8s集群node02 + etcd03 | node02 | 192.168.10.133 | kubelet kube-proxy docker flannel |
Balanc01 | nginx01 | 192.168.10.135 | keepalived 负载均衡(主) |
Balanc02 | nginx02 | 192.168.10.136 | keepalived 负载均衡(备) |
1、配置master02
从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点
[root@master01 ~]#scp -r /opt/etcd/ root@192.168.10.134:/opt/
[root@master01 ~]#scp -r /opt/kubernetes/ root@192.168.10.134:/opt/
[root@master01 ~]#scp -r /root/.kube root@192.168.10.134:/root/
[root@master01 ~]#scp -r /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.10.134:/usr/lib/systemd/system/