master的重装
下掉master1
删除master1节点
3台master下掉一个,剩下2个master运行基本也没问题。坚持个一两天问题不大。
1 | kubectl drain rrs-t-paas-master0 --delete-local-data --force --ignore-daemonsets |
清理etcd集群
进去etcd容器
1 | kubectl -n kube-system exec -it etcd-paas-m-k8s-master-2 -- /bin/sh |
查看member list
1 | etcdctl --endpoints=127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key member list |
看到现在还是3个member,把下掉的那个删除
1 | etcdctl --endpoints=127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key member remove 8aab0313a9647d4d |

然后master-1做了一些硬盘修复
之后再加入集群
master1再重新加入集群
重置下master1
1 | kubeadm reset |
配置一个对域名apiserver.cluster.local的解析
修改 /etc/hosts
1 | 你的活着的master的ip apiserver.cluster.local |
在kubeadm join的时候会用到
在master2上生成join命令
1 | [root@paas-m-k8s-master-2 ~]# kubeadm init phase upload-certs --upload-certs |
1 | [root@paas-m-k8s-master-2 ~]# kubeadm token create --print-join-command |
master1加入集群
到要被加入的机器上执行
加master节点才需要–control-plane –certificate-key
1 | kubeadm join apiserver.cluster.local:6443 \ |
成功

遇到过的问题总结
- 域名解析不到apiserver.cluster.local
1 | [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' |
是域名解析的问题,找不到apiserver.cluster.local
解决:
直接在/ets/hosts里配上
1 | 你的活着的master的ip apiserver.cluster.local |
- kubelet的端口占用
1 | Port 10250 is in use |
kubelet还活着。kubeadm join时会启动kubelet
使用kubeadm reset 重置配置
- etcd目录不为空
1 | [ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty |
删除即可。
1 | rm -rf /var/lib/etcd |
也可以kubeadm reset 重置
- etcd健康检查失败
原因是之前的etcd记录还存在,查看
1 | etcdctl --endpoints=127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key member list |
删除
1 | etcdctl --endpoints=127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key member remove 7eab7c23b19f6778 |