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

      备份以非零退出代码结尾。

注意

如果集群备份失败,且进入 BackupTimeoutUnrecoverableError 状态,集群更新不会对集群进行。对其他集群的更新不会受到影响,并继续。

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:

nodes:
    - hostName: "node-1.example.com"
    role: "master"
    rootDeviceHints:
        hctl: "0:2:0:0"
        deviceName: /dev/disk/by-id/scsi-3600508b400105e210000900000490000
...
    #Disk /dev/disk/by-id/scsi-3600508b400105e210000900000490000:
    #893.3 GiB, 959119884288 bytes, 1873281024 sectors
    diskPartition:
        - device: /dev/disk/by-id/scsi-3600508b400105e210000900000490000
        partitions:
        - mount_point: /var/recovery
            size: 51200
            start: 800000

流程

  1. clustergroupupgrades-group-du.yaml 文件中保存 ClusterGroupUpgrade CR 的内容,并 backupenable 字段设置为 true

    apiVersion: ran.openshift.io/v1alpha1
    kind: ClusterGroupUpgrade
    metadata:
      name: du-upgrade-4918
      namespace: ztp-group-du-sno
    spec:
      preCaching: true
      backup: true
      clusters:
      - cnfdb1
      - cnfdb2
      enable: true
      managedPolicies:
      - du-upgrade-platform-upgrade
      remediationStrategy:
        maxConcurrency: 2
        timeout: 240
  2. 要启动更新,请运行以下命令来应用 ClusterGroupUpgrade CR:

    $ oc apply -f clustergroupupgrades-group-du.yaml

验证

  • 运行以下命令,检查 hub 集群中的升级状态:

    $ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'

    输出示例

    {
        "backup": {
            "clusters": [
                "cnfdb2",
                "cnfdb1"
        ],
        "status": {
            "cnfdb1": "Succeeded",
            "cnfdb2": "Failed" 1
        }
    },
    "computedMaxConcurrency": 1,
    "conditions": [
        {
            "lastTransitionTime": "2022-04-05T10:37:19Z",
            "message": "Backup failed for 1 cluster", 2
            "reason": "PartiallyDone", 3
            "status": "True", 4
            "type": "Succeeded"
        }
    ],
    "precaching": {
        "spec": {}
    },
    "status": {}

    1
    对一个集群进行备份失败。
    2
    消息确认一个集群的备份失败。
    3
    备份部分成功。
    4
    备份过程已完成。

11.7.2. 在升级后恢复集群

如果集群的升级失败,您可以手动登录到集群,并使用备份使集群返回到其升级前的状态。有两个阶段:

回滚(Rollback)
如果尝试升级包括对平台操作系统部署的更改,则必须在运行恢复脚本前回滚到以前的版本。
重要

回滚仅适用于从 TALM 和单节点 OpenShift 升级。这个过程不适用于从任何其他升级类型进行回滚。

恢复
恢复会关闭容器,并使用备份分区中的文件来重新启动容器并恢复集群。

先决条件

  • 安装 Topology Aware Lifecycle Manager(TALM)。
  • 置备一个或多个受管集群。
  • 安装 Red Hat Advanced Cluster Management (RHACM)。
  • 以具有 cluster-admin 特权的用户身份登录。
  • 运行为备份而配置的升级。

流程

  1. 运行以下命令来删除之前创建的 ClusterGroupUpgrade 自定义资源 (CR):

    $ oc delete cgu/du-upgrade-4918 -n ztp-group-du-sno
  2. 登录到要恢复的集群。
  3. 运行以下命令,检查平台操作系统部署的状态:

    $ 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

    1
    当前部署已被固定。不需要平台操作系统部署回滚。
    [root@lab-test-spoke2-node-0 core]# ostree admin status
    * rhcos f750ff26f2d5550930ccbe17af61af47daafc8018cd9944f2a3a6269af26b0fa.0
        Version: 410.84.202204050541-0
        origin refspec: f750ff26f2d5550930ccbe17af61af47daafc8018cd9944f2a3a6269af26b0fa
    rhcos ad8f159f9dc4ea7e773fd9604c9a16be0fe9b266ae800ac8470f63abc39b52ca.0 (rollback) 1
        Version: 410.84.202203290245-0
        Pinned: yes 2
        origin refspec: ad8f159f9dc4ea7e773fd9604c9a16be0fe9b266ae800ac8470f63abc39b52ca
    1
    此平台操作系统部署标记为回滚。
    2
    以前的部署已被固定,可以回滚。
  4. 要触发平台操作系统部署的回滚,请运行以下命令:

    $ rpm-ostree rollback -r
  5. 恢复的第一阶段会关闭容器,并将文件从备份分区恢复到目标目录。要开始恢复,请运行以下命令:

    $ /var/recovery/upgrade-recovery.sh
  6. 提示时,运行以下命令重启集群:

    $ systemctl reboot
  7. 重新引导后,运行以下命令重启恢复:

    $ /var/recovery/upgrade-recovery.sh  --resume
注意

如果恢复工具失败,您可以使用 --restart 选项重试:

$ /var/recovery/upgrade-recovery.sh --restart

验证

  • 运行以下命令检查恢复的状态:

    $ oc get clusterversion,nodes,clusteroperator

    输出示例

    NAME                                         VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
    clusterversion.config.openshift.io/version   4.4.15.23    True        False         86d     Cluster version is 4.4.15.23 1
    
    
    NAME                          STATUS   ROLES           AGE   VERSION
    node/lab-test-spoke1-node-0   Ready    master,worker   86d   v1.22.3+b93fd35 2
    
    NAME                                                                           VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    clusteroperator.config.openshift.io/authentication                             4.4.15.23    True        False         False      2d7h    3
    clusteroperator.config.openshift.io/baremetal                                  4.4.15.23    True        False         False      86d
    
    
    ..............

    1
    集群版本可用,并具有正确的版本。
    2
    节点状态为 Ready
    3
    ClusterOperator 对象的可用性为 True
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.