Kubernetes之节点删除后重新加入异常处理
Kubernetes之节点删除后重新加入异常处理
删除节点重新加入报错:
1 | error execution phase check-etcd: etcd cluster is not healthy: failed to dial endpoint https://192.168.123.21:2379 with maintenance client: context deadline exceeded |
解决方法:
1.在kubeadm-config删除的状态不存在的etcd节点:
1 | kubectl edit configmaps -n kube-system kubeadm-config |
1 | # Please edit the object below. Lines beginning with a '#' will be ignored, |
2.删除etcd集群内的成员
因为我是用kubeadm搭建的集群,所有etcd在每个master节点都会以pod的形式存在一个,etcd是在每个控制平面都启动一个实例的,当删除k8s-001节点时,etcd集群未自动删除此节点上的etcd成员,因此需要手动删除。
注意这里首先要进入etcd的pod。
1 | kubectl exec -it etcd-master1 sh -n kube-system |
容器内执行
1 | export ETCDCTL_API=3 |
最后每次kubeadm join失败后要kubeadm reset重置节点,在kubeadm join才会成功。
join加入后报错
1 | error execution phase control-plane-prepare/download-certs |
控制平面认证的certs已过期,默认时间两个小时,需要重新生成上传
在已存在的控制平面运行:
1 | kubeadm init phase upload-certs --upload-certs |
生成的替换–certificate-key的值
例子:
1 | kubeadm join 172.31.182.153:6443 --token vauo7d.d40khbya379q7bk4 --discovery-token-ca-cert-hash sha256:139ff25e1af59d940089f85614bd02066dfbe6bee937b087f0cc7896e24d8e54 --control-plane --certificate-key 2d0f05294f03306f7867c27b11c2d73c5ebef4413a8369e5cc03bf9abe53b836 |
有跳过的步骤可在–ignore-preflight-errors加入跳过的名称
1 | kubeadm join 192.168.11.52:6443 --token vauo7d.d40khbya379q7bk4 --discovery-token-ca-cert-hash sha256:139ff25e1af59d940089f85614bd02066dfbe6bee937b087f0cc7896e24d8e54 --control-plane --certificate-key 2d0f05294f03306f7867c27b11c2d73c5ebef4413a8369e5cc03bf9abe53b836 --ignore-preflight-errors all |
The END
评论