5.4.2.2. 恢复 etcd 数据
在静态 pod 中恢复 etcd 前:
etcdctl
二进制文件必须可用,或者在容器化安装中,rhel7/etcd
容器必须可用。您可以运行以下命令,使用 etcd 软件包安装
etcdctl
二进制文件:# yum install etcd
该软件包还会安装 systemd 服务。禁用并屏蔽该服务,使其在 etcd 在静态 pod 中运行时不会作为 systemd 服务运行。通过禁用并屏蔽该服务,确保您不会意外启动该服务,并防止它在重启系统时自动重启该服务。
# systemctl disable etcd.service
# systemctl mask etcd.service
在静态 pod 上恢复 etcd:
如果 pod 正在运行,通过将 pod 清单 YAML 文件移到另一个目录中来停止 etcd pod:
# mkdir -p /etc/origin/node/pods-stopped
# mv /etc/origin/node/pods/etcd.yaml /etc/origin/node/pods-stopped
移动所有旧数据:
# mv /var/lib/etcd /var/lib/etcd.old
您可以使用 etcdctl 在恢复 pod 的节点中重新创建数据。
将 etcd 快照恢复到 etcd pod 的挂载路径:
# export ETCDCTL_API=3
# etcdctl snapshot restore /etc/etcd/backup/etcd/snapshot.db \ --data-dir /var/lib/etcd/ \ --name ip-172-18-3-48.ec2.internal \ --initial-cluster "ip-172-18-3-48.ec2.internal=https://172.18.3.48:2380" \ --initial-cluster-token "etcd-cluster-1" \ --initial-advertise-peer-urls https://172.18.3.48:2380 \ --skip-hash-check=true
从 etcd.conf 文件获取集群的适当值。
在数据目录中设置所需的权限和 selinux 上下文:
# restorecon -RvF /var/lib/etcd/
通过将 pod 清单 YAML 文件移到所需目录中来重启 etcd pod:
# mv /etc/origin/node/pods-stopped/etcd.yaml /etc/origin/node/pods/