出现这个报错,多是因为之前的集群信息没有清理干净。
解决办法如下:
执行命令,获取etcd节点列表。
plain text_snippet
Plain Text · 1 line|
| kubectl get pod -n kube-system |
etcd 节点名称为 “etcd”+hostname
这里以 etcd-k8s-master1 为例, 进入 etcd 容器内部
plain text_snippet
Plain Text · 5 lines|
| kubectl exec -ti etcd-k8s-master1 -n kube-system sh |
| # k8s中etcd使用的是v3的api, 所以要先声明变量 |
| export ETCDCTL_API=3 |
| # 执行命令,查看当前的etcd节点数量 |
| etcdctl --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key" member list |
返回的信息如下
plain text_snippet
Plain Text · 3 lines|
| 6ae633bf7c3f438, started, master1, https://10.62.142.103:2380, https://10.62.142.103:2379 |
| ed749226b340ac7b, started, master3, https://10.62.142.97:2380, https://10.62.142.97:2379 |
| f2ff34b220f4cac9, started, master2, https://10.62.142.84:2380, https://10.62.142.84:2379 |
返回信息的第三列为主机名。 我当前加入失败的节点,主机名为 master2,master2 恰恰在列表中。所以得出结论, 加入失败是因为 etcd 节点信息没有重制, 我们手动把 master2 删掉即可添加成功
plain text_snippet
Plain Text · 1 line|
| etcdctl --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key" member remove f2ff34b220f4cac9 |
✦ 卷终 · 柯航存卷 ✦