侧边栏壁纸
博主头像
技术博客 博主等级

行动起来,活在当下

  • 累计撰写 15 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

etcd 恢复方案

Administrator
2025-02-18 / 0 评论 / 1 点赞 / 15 阅读 / 0 字

背景: 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、按新集群部署

   

1

评论区