出现这个报错,多是因为之前的集群信息没有清理干净。
解决办法如下:

执行命令,获取etcd节点列表。

kubectl get pod -n kube-system

etcd节点名称为 “etcd”+hostname
这里以 etcd-k8s-master1 为例, 进入etcd容器内部

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

返回的信息如下

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删掉即可添加成功

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
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐