etcd受损节点重新加入集群
由于自己的误操作,将A节点的etcd备份数据复制到B节点的etcd备份节点目录下,还原etcd快照后,导致etcd数据受损,B节点加入之前的集群失败
理论上,只要有一个etcd节点还在,就可以重新将etcd节点加回到原来的集群
查看当前集群状态
etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
member list
f0a399bcc03bea5f, started, k8s-02, https://172.31.243.179:2380, https://172.31.243.179:2379, false
8262a810106df86c, started, k8s-03, https://172.31.243.180:2380, https://172.31.243.180:2379, false
原本是三节点,现在一个节点加入不了集群,因为数据受损,已经没有那个节点的信息了,如果这里有出现受损节点的信息,需要
member remove <集群id>
,然后再执行后面的操作
删除受损etcd节点的数据
通过
systemctl status etcd -l
可以看到etcd的数据存储路径,参数为--data-dir
,下面的路径,以自己的实际路径为准,不要纯复制黏贴
cd /opt/k8s/server/etcd
mv data{,-bak$(date +%F)}
mkdir data
数据受损节点重新加入集群
etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
member add k8s-03 https://172.31.243.178:2380
修改etcd启动参数,重启etcd
将etcd的
--initial-cluster-state
启动参数,改为--initial-cluster-state=existing
systemctl daemon-reload
systemctl restart etcd