K8s 集群高可用master节点ETCD全部挂掉如何恢复?
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
写在前面
- 博文内容涉及集群 ETCD 全部挂掉,通过备份文件恢复的操作 Demo
- 理解不足小伙伴帮忙指正 :),生活加油
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
前提是需要etcd
备份文件,如果没有 etcd
备份,或者其他的备份手段,可能 GG 了
备份文件分享
分享一个备份脚本
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
运行方式
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
生成对应的备份数据
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
可以使用 systemd
配置成 service unit
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
主要是方便看日志,方便管理
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
然后使用 timer unit
配置为定时启动
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
同样可以看日志
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
故障处理恢复
故障表象,集群整个崩了,所有 master
上的 etcd 和 apiserver
都死掉了
1 | ┌──[root@vms100.liruilongs.github.io]-[~] |
移动 etcd 和 apiserver
的对应 静态 pod
的 yaml
文件。关于 静态 Pod 运行原理这里不多讲,感兴趣小伙伴可以官网看下
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
清除当前集群的 etcd
的数据文件和对应的目录
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
拷贝 备份文件到当前集群的每个 etcd
节点
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
确定拷贝文件的备份文件
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
在其中一个节点执行备份恢复命令
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
提示目录存在,所以需要把目录也同样删除掉
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
备份恢复命令
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
再次执行,备份恢复成功
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
其他的etcd节点备份恢复,需要修改脚本两个地方:
- –name vms100.liruilongs.github.io
- –initial-advertise-peer-urls=”https://192.168.26.100:2380“
192.168.26.101
节点执行
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
192.168.26.102
节点执行
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
移动静态 Pod对应的 yaml 文件,恢复 etcd 和apiserver 对应的Pod
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
确认静态pod 恢复
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
查看 etcd 集群节点状态
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
确认集群是否恢复
1 | ┌──[root@vms100.liruilongs.github.io]-[~/ansible] |
博文部分内容参考
© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知 :)
© 2018-至今 liruilonger@gmail.com, 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)
K8s 集群高可用master节点ETCD全部挂掉如何恢复?
https://liruilongs.github.io/2024/06/04/K8s/环境部署-运维/K8s-集群高可用master节点ETCDCD故障如何恢复/
1.K8s 集群高可用master节点故障如何恢复?
2.K8s 镜像缓存管理 kube-fledged 认知
3.K8s集群故障(The connection to the server <host>:<port> was refused - did you specify the right host or port)解决
4.关于 Kubernetes中Admission Controllers(准入控制器) 认知的一些笔记
5.K8s Pod 创建埋点处理(Mutating Admission Webhook)
6.关于AI(深度学习)相关项目 K8s 部署的一些思考
7.K8s Pod 安全认知:从openshift SCC 到 PSP 弃用以及现在的 PSA
8.K8s:通过 PSA(Pod Security Admission) 定义K8s 集群安全基线