题目内容
设置配置环境:
[candidate@node-1] $ kubectl config use-context xk8s
Task
您必须从 master01 主机执行所需的 etcdctl 命令。
首先,为运行在 https://127.0.0.1:2379 上的现有 etcd 实例创建快照并将快照保存到 /var/lib/backup/etcd-snapshot.db
提供了以下 TLS 证书和密钥,以通过 etcdctl 连接到服务器。
CA 证书: /opt/KUIN00601/ca.crt
客户端证书: /opt/KUIN00601/etcd-client.crt
客户端密钥: /opt/KUIN00601/etcd-client.key
为给定实例创建快照预计能在几秒钟内完成。 如果该操作似乎挂起,则命令可能有问题。用 CTRL + C 来取消操作,然后重试。
然后通过位于/data/backup/etcd-snapshot-previous.db 的先前备份的快照进行还原。
考点相关内容分析
etcdctl
etcd 是 一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。
# 单节点 etcd 集群
$ etcd --listen-client-urls=http://$PRIVATE_IP:2379 --advertise-client-urls=http://$PRIVATE_IP:2379
# 多节点启动 Kubernetes API 服务器
$ etcd --listen-client-urls=http://$IP1:2379,http://$IP2:2379,http://$IP3:2379,http://$IP4:2379,http://$IP5:2379 --advertise-client-urls=http://$IP1:2379,http://$IP2:2379,http://$IP3:2379,http://$IP4:2379,http://$IP5:2379
# 制作快照
$ ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \
snapshot save <backup-file-location>
# 恢复 etcd 集群
$ ETCDCTL_API=3 etcdctl --data-dir <data-dir-location> snapshot restore snapshot.db
题目操作步骤
- (标准步骤) 进入题目指定集群
$ kubectl config use-context xk8s
- 切换到 master01 节点下
$ ssh master01
$ sudo -i
- 制作快照
# 先查看一下当前的 node 节点信息,用于跟回滚后结果进行对比
$ kubectl get pod -A
# 根据题目要求创建快照
$ 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 /var/lib/backup/etcd-snapshot.db
检查命令
$ ETCDCTL_API=3 etcdctl snapshot status /var/lib/backup/etcd-snapshot.db -wtable
- 执行还原操作
# 新建临时文件夹
$ mkdir -p /opt/linshi
# 备份原 k8s 文件
$ mv /etc/kubernetes/manifests/kube-* /opt/linshi
# 执行还原操作
$ ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --data-dir=/var/lib/etcd-restore snapshot restore /data/backup/etcd-snapshot-previous.db
# 检查新目录
$ ls /var/lib/etcd-restore
5. 修改 etcd 配置文件
$ vim /etc/kubernetes/manifests/etcd.yaml
priorityClassName: system-node-critical
securityContext:
seccompProfile:
type: RuntimeDefault
volumes:
- hostPath:
path: /etc/kubernetes/pki/etcd
type: DirectoryOrCreate
name: etcd-certs
- hostPath:
path: /var/lib/etcd-restore # 修改位置
type: DirectoryOrCreate
name: etcd-data
status: {}
- 将备份位置复原
# 备份还原
$ mv /opt/linshi/kube-* /etc/kubernetes/manifests/
# 重启 kubelet
$ systemctl daemon-reload
$ systemctl restart kubelet
答完题要退回 node01 使用
exit
或者是Ctrl + D
检查命令
# 通过复原后的node 信息与 复原前进行比较,不同即为成功
$ kubectl get pod -A
参考资料: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd/