背景
由于当前测试开发环境中,单master的Kubernetes集群存在单点故障,为提升集群的可用性,需要对集群做高可用配置
方案
1.Kubernetes高可用主要分两个方面:
第一,Kubernetes matser高可用
kube-apisever
无状态,天生可用于分布式高可用
kube-controller-manager
打开--leader-elect=true,形成只有一个leader可用,其他实例standby
kube-scheduler
同上
第二,Kubernetes etcd高可用
etcd集群,利用raft协议自动选举出master
2.keepalive+haproxy
keepalive保持master主机之间始终有一个处于active,其他处于standby
haproxy将分发进入master主机的流量到各个
kube-apisever去
配置
1.在每台master主机上安装keepalive+haproxy
2.安装kubernetes,并在kube-controller-manager和kube-scheduler里面加入参数--leader-elect=true,--kubeconfig中配置的kube-apiserver地址,用vip地址
3.kubernetes部署的时候所有master都采用同一个证书,否则一个master down了,采用第二个和第三个master,客户端需要重新配置证书,或者负载均衡的过程中,因为master的证书不一致,导致有时候能访问集群,有时候不能访问集群
验证
1.首先查看kube-controller-manager和kube-scheduler是否有leader
查看kube-system中endpoint的描述,看是否有leader出现
2.破坏性测试
停掉一个vm或停掉一个master,观察访问kube-apisever是否出现异常