11.7. 在升级前创建集群资源备份
对于单节点 OpenShift,Topology Aware Lifecycle Manager (TALM) 可以在升级前创建部署备份。如果升级失败,您可以恢复之前的版本并将集群恢复到工作状态,而无需重新置备应用程序。
要使用备份功能,您首先创建一个 ClusterGroupUpgrade
CR,并将 backup
字段设置为 true
。为确保备份内容为最新版本,在 ClusterGroupUpgrade
CR 中的 enable
字段设置为 true
之前,不会进行备份。
TALM 使用 BackupSucceeded
条件来报告状态,如下所示:
true
备份对于所有集群都完成,或备份运行已完成但对一个或多个集群失败。如果任何集群的备份失败,则不会为该集群进行更新。
false
备份仍在为一个或多个集群处理,或者所有集群都失败。在 spoke 集群中运行的备份过程可以具有以下状态:
PreparingToStart
第一个协调通过正在进行。TALM 删除所有 spoke 备份命名空间和 hub 查看在升级尝试中创建的资源。
Starting
正在创建备份先决条件和备份作业。
Active
备份正在进行。
Succeeded
备份成功。
BackupTimeout
工件备份部分完成。
UnrecoverableError
备份以非零退出代码结尾。
如果集群备份失败,且进入 BackupTimeout
或 UnrecoverableError
状态,集群更新不会对集群进行。对其他集群的更新不会受到影响,并继续。
11.7.1. 使用备份创建 ClusterGroupUpgrade CR 复制链接链接已复制到粘贴板!
您可以在单节点 OpenShift 集群上升级前创建部署备份。如果升级失败,您可以使用 Topology Aware Lifecycle Manager (TALM) 生成的 upgrade-recovery.sh
脚本将系统返回到其 preupgrade 状态。备份由以下项目组成:
- 集群备份
-
etcd
和静态 pod 清单的快照。 - 内容备份
-
文件夹备份,例如
/etc
、/usr/local
、/var/lib/kubelet
。 - 已更改的文件备份
-
由
machine-config
管理的任何文件都已更改。 - Deployment
-
固定
ostree
部署。 - 镜像(可选)
- 使用的任何容器镜像。
先决条件
- 安装 Topology Aware Lifecycle Manager(TALM)。
- 置备一个或多个受管集群。
-
以具有
cluster-admin
特权的用户身份登录。 - 安装 Red Hat Advanced Cluster Management (RHACM)。
强烈建议您创建一个恢复分区。以下是一个恢复分区的 SiteConfig
自定义资源 (CR) 示例,大小为 50 GB:
流程
在
clustergroupupgrades-group-du.yaml
文件中保存ClusterGroupUpgrade
CR 的内容,并backup
和enable
字段设置为true
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要启动更新,请运行以下命令来应用
ClusterGroupUpgrade
CR:oc apply -f clustergroupupgrades-group-du.yaml
$ oc apply -f clustergroupupgrades-group-du.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,检查 hub 集群中的升级状态:
oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'
$ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.7.2. 在升级后恢复集群 复制链接链接已复制到粘贴板!
如果集群的升级失败,您可以手动登录到集群,并使用备份使集群返回到其升级前的状态。有两个阶段:
- 回滚(Rollback)
- 如果尝试升级包括对平台操作系统部署的更改,则必须在运行恢复脚本前回滚到以前的版本。
回滚仅适用于从 TALM 和单节点 OpenShift 升级。这个过程不适用于从任何其他升级类型进行回滚。
- 恢复
- 恢复会关闭容器,并使用备份分区中的文件来重新启动容器并恢复集群。
先决条件
- 安装 Topology Aware Lifecycle Manager(TALM)。
- 置备一个或多个受管集群。
- 安装 Red Hat Advanced Cluster Management (RHACM)。
-
以具有
cluster-admin
特权的用户身份登录。 - 运行为备份而配置的升级。
流程
运行以下命令来删除之前创建的
ClusterGroupUpgrade
自定义资源 (CR):oc delete cgu/du-upgrade-4918 -n ztp-group-du-sno
$ oc delete cgu/du-upgrade-4918 -n ztp-group-du-sno
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录到要恢复的集群。
运行以下命令,检查平台操作系统部署的状态:
ostree admin status
$ ostree admin status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ostree admin status
[root@lab-test-spoke2-node-0 core]# ostree admin status * rhcos c038a8f08458bbed83a77ece033ad3c55597e3f64edad66ea12fda18cbdceaf9.0 Version: 49.84.202202230006-0 Pinned: yes
1 origin refspec: c038a8f08458bbed83a77ece033ad3c55597e3f64edad66ea12fda18cbdceaf9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 当前部署已被固定。不需要平台操作系统部署回滚。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要触发平台操作系统部署的回滚,请运行以下命令:
rpm-ostree rollback -r
$ rpm-ostree rollback -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复的第一阶段会关闭容器,并将文件从备份分区恢复到目标目录。要开始恢复,请运行以下命令:
/var/recovery/upgrade-recovery.sh
$ /var/recovery/upgrade-recovery.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示时,运行以下命令重启集群:
systemctl reboot
$ systemctl reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新引导后,运行以下命令重启恢复:
/var/recovery/upgrade-recovery.sh --resume
$ /var/recovery/upgrade-recovery.sh --resume
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果恢复工具失败,您可以使用 --restart
选项重试:
/var/recovery/upgrade-recovery.sh --restart
$ /var/recovery/upgrade-recovery.sh --restart