背景: etcd有三个副本,默认有两个(含)以上健康运行,etcd集群即正常
场景一 | 恢复方案 |
---|
只有一个副本挂了 | 查看启动失败原因,可以删除重建,一般会自动恢复,如自动恢复失败 通过一个其他可以运行的容器,挂载运行异常的容器的数据卷,路径临时挂载为/etcd-0 修改路径/etcd-0/data/new_member_envs里面的变量"esxiting"为"new", 保留该文件,删除/etcd-0/data下面的其他的文件和目录,重启pod, 运行正常。 |
两个副本挂了 | 1、确认剩余的副本没有重启过,手动备份剩余的一个etcd数据 AUTH_OPTIONS=""
ETCDCTL_ENDPOINTS="http://etcd:2379,"
etcdctl snapshot save "/snapshots/snapshot.db"
|
2、暂停etcd定时任务 kubectl edit cronjob etcd-26khqd2-snapshotter -o yaml -n test
|
修改成 suspend: true 3、通过临时容器将文件放入定时备份那个目录 #从etcd容器拷贝出来
kubectl cp pod/test-etcd-0:snapshot.db ./snapshot.db -n test
# 新建一个nginx容器,挂载etcd定时备份pvc test-etcd-snapshot到/snapshot 文件夹下面
kubectl cp ./snapshot.db pod/test-nginx:snapshot.db -n test
#进入nginx容器,执行shell,移动快照文件到/snapshot目录
4、按照新建etcd手册,先删除etcd deploy,svc,重新部署集群 |
三个副本都挂了 | 1、按新集群部署 |
评论区