如何恢复堆叠的控制平面和etcd节点的HA群集

时间:2019-01-09 02:56:40

标签: high-availability etcd stacked

我使用kubeadm设置了堆叠有控制平面和etcd节点的HA集群(3个主节点);但是当我使用kubeadm reset销毁一个主节点时,就无法再将主节点加入ha集群中了:

步骤1:

docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes k8s.gcr.io/etcd:3.2.24 etcdctl --cert-file /etc/kubernetes/pki/etcd/peer.crt --key-file /etc/kubernetes/pki/etcd/peer.key --ca-file /etcd/kubernetes/pki/etcd/ca.crt --endpoints https://xxx.xxx.xxx.xxx:2379 member remove xxxxxxx

删除不良的etcd;

第二步:

docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes k8s.gcr.io/etcd:3.2.24 etcdctl --cert-file /etc/kubernetes/pki/etcd/peer.crt --key-file /etc/kubernetes/pki/etcd/peer.key --ca-file /etcd/kubernetes/pki/etcd/ca.crt --endpoints https://xxx.xxx.xxx.xxx:2379 cluster-health
……
……
cluster is healthy

第3步:

kubeadm get cs
……
……
etcd-0      Healthy    {"health":"true"}

第4步:

kubeadm将新的主服务器加入ha集群,但会出错:

 etcd cluster is not healthy: context deadline exceeded

任何人都可以帮助我解决这个问题

1 个答案:

答案 0 :(得分:1)

$ kubectl -n kube-system编辑cm kubeadm-config 然后删除apiEndpoints下面的错误节点信息, 例如:删除下面的这三行   master1-k8s:     advertiseAddress:172.16.12.216     bindPort:6443

最后,您可以使用“ kubeadm join”将控制平面成功加入HA集群!!!