ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LAB-04:备份还原ETCD

2022-06-14 11:37:02  阅读:182  来源: 互联网

标签:opt ETCD 04 -- KUIN00601 LAB master etcd k8s


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有