LAB-04:备份还原ETCD
LAB 需求
针对 etcd 实例 https://127.0.0.1:2379 创建一个快照,保存到 /srv/data/etcd-snapshot.db。在创建快照的过程中,如果卡住了,就键入 ctrl+c 终止,然后重试。
然后恢复一个已经存在的快照: /var/lib/backup/etcd-snapshot-previous.db
执行 etcdctl 命令的证书存放在:
ca证书: /opt/KUIN00601/ca.crt
客户端证书:/opt/KUIN00601/etcd-client.crt
客户端密钥:/opt/KUIN00601/etcd-client.key
LAB 预配
user1@k8s-master:~$ sudo docker ps | grep etcd
9c1e60ade311 303ce5db0e90 "etcd --advertise-cl…" 3 hours ago Up 3 hours k8s_etcd_etcd-k8s-master_kube-system_4ffc056bc44b10088ef49648e403a455_1
user1@k8s-master:~$ sudo docker cp 9c1e60ade311:/usr/local/bin/etcdctl /usr/local/bin/etcdctl
user1@k8s-master:~$ etcdctl version
etcdctl version: 3.5.0
API version: 3.5
user1@k8s-master:~$ sudo mkdir /opt/KUIN00601/
user1@k8s-master:~$ cd /etc/kubernetes/pki/etcd
user1@k8s-master:/etc/kubernetes/pki/etcd$ sudo cp ca.crt /opt/KUIN00601/ca.crt
user1@k8s-master:/etc/kubernetes/pki/etcd$ sudo cp peer.crt /opt/KUIN00601/etcd-client.crt
user1@k8s-master:/etc/kubernetes/pki/etcd$ sudo cp peer.key /opt/KUIN00601/etcd-client.key
user1@k8s-master:~$ ls -l /opt/KUIN00601/
total 12
-rw-r--r-- 1 root root 1017 1月 9 20:38 ca.crt
-rw-r--r-- 1 root root 1135 1月 9 20:38 etcd-client.crt
-rw------- 1 root root 1679 1月 9 20:38 etcd-client.key
user1@k8s-master:~$ sudo mkdir /srv/data/
user1@k8s-master:~$ sudo mkdir /var/lib/backup
user1@k8s-master:~$ sudo cp /srv/data/etcd-snapshot.db /var/lib/backup/etcd-snapshot-previous.db
LAB 答案
# 备份:要求备份到指定路径及指定文件名
$ sudo ETCDCTL_API=3 etcdctl --endpoints https://127.0.0.1:2379 --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-client.crt --key=/opt/KUIN00601/etcd-client.key snapshot save /srv/data/etcd-snapshot.db
# 还原:要求使用指定文件进行还原
# 1、先将 etcd、api 停止,移动静态 pod 文件
$ sudo mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak
# 2、备份一个原来的 etcd 文件
$ sudo mv /var/lib/etcd /var/lib/etcd.bak
# 3、恢复数据
$ sudo ETCDCTL_API=3 etcdctl --endpoints https://127.0.0.1:2379 --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-client.crt --key=/opt/KUIN00601/etcd-client.key snapshot restore /var/lib/backup/etcd-snapshot-previous.db --data-dir=/var/lib/etcd
# 4、启动 etcd、api,把静态 pod 文件移回来
$ sudo mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests
LAB 验证
user1@k8s-master:~$ ETCDCTL_API=3 etcdctl --write-out=table snapshot status /srv/data/etcd-snapshot.db
Deprecated: Use `etcdutl snapshot status` instead.
+----------+----------+------------+------------+
| HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| f2bc1e87 | 76745 | 1041 | 5.8 MB |
+----------+----------+------------+------------+
$ kubectl get nodes
$ kubectl get pods
参考资料
- https://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-06-14 RHEL6.5 和 RHCL7.0 忘记root 密码