K8S-ETCD数据库备份与恢复
kubernetes使用etcd数据库实时存储集群中的数据,安全起见,一定要备份
需要指定使用etcdctl的版本
etcd数据库备份是使用数控快照的方式进行备份的,备份后的新数据不会保留,后面创建的pod也会被清除掉
kubeadm方式
kubeadm部署方备份:
首先需要安装etcdctl 命令行命令
1 | yum install -y etcd |
备份
1 2 3 4 5 6 | ETCDCTL_API=3 etcdctl \ snapshot save snap.db \ #注意是当前路径,可以指定路径 --endpoints=https: //127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key |
ETCDCTL_API=3 etcdctl snapshot status snap.db #查看文件存储的信息
kubeadm 部署恢复etcd数据库
1 2 3 4 5 6 7 8 9 10 | 1、先暂停kube-apiserver和etcd容器 mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak mv / var /lib/etcd/ / var /lib/etcd.bak 2、恢复 ETCDCTL_API=3 etcdctl \ snapshot restore snap.db \ --data-dir=/ var /lib/etcd 3、启动kube-apiserver和etcd容器 mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests mv / var /lib/etcd.bak / var /lib/etcd/ |
二进制方式:
kubernetes使用etcd数据库实时存储集群中的数据,安全起见,一定要备份
二进制部署方式备份:
首先需要安装etcdctl 命令行命令
1 | yum install -y etcd |
备份
1 2 3 4 5 6 | ETCDCTL_API=3 etcdctl \ snapshot save snap.db \ --endpoints=https: //192.168.10.160:2379 \ --cacert=/opt/etcd/ssl/ca.pem \ --cert=/opt/etcd/ssl/server.pem \ --key=/opt/etcd/ssl/server-key.pem |
恢复
1、先暂停kube-apiserver和etcd
1 2 3 | systemctl stop kube-apiserver systemctl stop etcd etcd mv / var /lib/etcd/ default .etcd / var /lib/etcd/ default .etcd.bak |
2、在每个节点上恢复
节点一恢复
1 2 3 4 5 | ETCDCTL_API=3 etcdctl snapshot restore snap.db \ --name etcd-1 \ --initial-cluster= "etcd-1=https://192.168.10.160:2380,etcd-2=https://192.168.10.161:2380,etcd-3=https:192.168.10.162:2380" \ --initial-advertise-peer-url=https: //192.168.10.160:2380 \ --data-dir=/ var /lib/etcd/ default .etcd |
节点二恢复
1 2 3 4 5 | ETCDCTL_API=3 etcdctl snapshot restore snap.db \ --name etcd-2 \ --initial-cluster= "etcd-1=https://192.168.10.160:2380,etcd-2=https://192.168.10.161:2380,etcd-3=https:192.168.10.162:2380" \ --initial-advertise-peer-url=https: //192.168.10.162:2380 \ --data-dir=/ var /lib/etcd/ default .etcd |
节点三恢复
1 2 3 4 5 | ETCDCTL_API=3 etcdctl snapshot restore snap.db \ --name etcd-3 \ --initial-cluster= "etcd-1=https://192.168.10.160:2380,etcd-2=https://192.168.10.161:2380,etcd-3=https:192.168.10.162:2380" \ --initial-advertise-peer-url=https: //192.168.10.162:2380 \ --data-dir=/ var /lib/etcd/ default .etcd |
3、启动kube-apiserver和etcd
1 2 3 | mv / var /lib/etcd/ default .etcd.bak / var /lib/etcd/ default .etcd systemctl start kube-apiserver systemctl start etcd.service |
使劲折腾才会有更好的结果!!!!
如有不对请不吝赐教,感谢!
转载请注明出处!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)