使用此示例过程备份 etcd 数据库。
我们提供此示例过程纯出于信息目的。有关官方程序,请参阅 Red Hat OpenShift 文档 (https://docs.openshift.com/)。
Contrail 默认使用 etcd 数据库。Contrail 用作 CNI 插件不会影响备份和还原等数据库的方式。使用您最熟悉的工具管理数据库,如 etcdctl。
- 获取正在运行的节点列表。
user@ai-client:~# oc get nodes
NAME STATUS ROLES AGE VERSION
ocp1 Ready master 18d v1.21.6+bb8d50a
ocp2 Ready master 18d v1.21.6+bb8d50a
ocp3 Ready master 18d v1.21.6+bb8d50a
ocp4 Ready worker 18d v1.21.6+bb8d50a
ocp5 Ready worker 18d v1.21.6+bb8d50a
- 以 root 身份登录到其中一个控制平面节点。
您不能简单地通过 SSH 完成这一操作,因为默认情况下 root 登录是禁用的。您必须启动调试 Pod 并 chroot 到主机文件系统中。
- 在一个控制平面节点上启动调试 Pod。当您这样做时,系统会自动放入调试 Pod 的根 shell 中。此示例在 ocp1 上启动调试 Pod。
user@ai-client:~# oc debug node/ocp1
Starting pod/ocp1-debug ...
To use host binaries, run `chroot /host`
Pod IP: 172.16.0.11
If you don't see a command prompt, try pressing enter.
sh-4.4#
sh-4.4# whoami
root
调试 Pod 在
/host 安装主机(节点)文件系统,您可以在这里看到:
sh-4.4# df | grep "/host$"
/dev/vda4 167236588 17160016 150076572 11% /host
- 要以 root 身份更改为主机文件系统,请使用 chroot 命令。
这样,您就会有效地以 root 身份登录到主机节点。
sh-4.4# chroot /host
您可以通过搜索之前作为
/host 安装的设备名称来验证自己在主机文件系统中。
sh-4.4# df | grep /dev/vda4
/dev/vda4 167236588 17250336 149986252 11% /
- 备份 etcd 数据库。
下面将数据库备份到
/home/core/assets/backup 目录。此目录是作为 cluster-backup.sh 脚本的一部分创建的。此脚本是作为 etcd 群集运算符的一部分提供的,是围绕
etcdctl 快照保存 命令的包装程序。您不必安装 etcdctl。脚本会自动安装 etcdctl。
sh-4.4# /usr/local/bin/cluster-backup.sh /home/core/assets/backup
found latest kube-apiserver: /etc/kubernetes/static-pod-resources/kube-apiserver-pod-14
found latest kube-controller-manager: /etc/kubernetes/static-pod-resources/kube-controller-manager-pod-6
found latest kube-scheduler: /etc/kubernetes/static-pod-resources/kube-scheduler-pod-6
found latest etcd: /etc/kubernetes/static-pod-resources/etcd-pod-4
<trimmed>
snapshot db and kube resources are successfully saved to /home/core/assets/backup
注意:
正常情况下,在上述输出中看到 CNI 错误。
脚本会创建两个文件:
- snapshot_<timestamp>.db - 这是 etcd 快照
- static_kuberesources_<timestamp>.tar.gz - 这包含静态 Pod 的资源
- 键入exit以退出 shell 并终止调试 Pod。