LAB-04:备份还原ETCD
作者:互联网
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 预配
# 1、etcdctl 命令
# 如果没有 etcdctl 命令的话,可以从 docker 中复制 etcdctl 命令,查看 etcd 的 docker 名字
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
# 从 etcd 的 docker 中把 etcdctl 文件 copy 出来
user1@k8s-master:~$ sudo docker cp 9c1e60ade311:/usr/local/bin/etcdctl /usr/local/bin/etcdctl
# 确认有 etcdctl 命令
user1@k8s-master:~$ etcdctl version
etcdctl version: 3.5.0
API version: 3.5
# 2、预配置解决证书问题
# 把 /etc/kubernetes/pki/etcd 目录下的证书,copy 到 /opt/KUIN000601/ 目录
# 创建证书的目录
user1@k8s-master:~$ sudo mkdir /opt/KUIN00601/
# 把 etcd 的证书 copy 到上面创建的目录中,并且修改名字
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
# 查看 etcd 的证书
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/
# 3、创建还原 /var/lib/backup/etcd-snapshot-previous.db 文件,可以在前面3题完成后(就是把本地备份的文件cp到该目录),创建一个备份,然后cp到该该目录,不影响整体的实验。
# 创建一个还原的目录
user1@k8s-master:~$ sudo mkdir /var/lib/backup
# 把备份的文件 copy 为 etcd-snapshot-previous.db,用于还原的实验(要等前面3题完成时的备份)
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/
标签:opt,ETCD,04,--,KUIN00601,LAB,master,etcd,k8s 来源: https://www.cnblogs.com/quqibinggan/p/16373954.html