7.2. 防止在 EUS 到 EUS 更新过程中进行工作负载更新

当您从一个延长更新支持(EUS)版本升级到下一个版本时,您必须手动禁用自动工作负载更新,以防止 OpenShift Virtualization 在更新过程中迁移或驱除工作负载。

先决条件

  • 您正在运行 EUS 版本 OpenShift Container Platform,并希望升级到下一个 EUS 版本。还没有同时更新至奇数版本。
  • 您可以阅读"准备执行 EUS 到 EUS 更新",并了解到与 OpenShift Container Platform 集群相关的注意事项和要求。
  • 按照 OpenShift Container Platform 文档的指示暂停 worker 节点的机器配置池。
  • 建议您使用默认的 Automatic 批准策略。如果使用 Manual 批准策略,您必须批准 web 控制台中的所有待处理的更新。如需了解更多详细信息,请参阅"需要批准待处理的 Operator 更新"部分。

流程

  1. 运行以下命令备份当前的 workloadUpdateMethods 配置:

    $ WORKLOAD_UPDATE_METHODS=$(oc get kv kubevirt-kubevirt-hyperconverged -n openshift-cnv -o jsonpath='{.spec.workloadUpdateStrategy.workloadUpdateMethods}')
  2. 运行以下命令关闭所有工作负载更新方法:

    $ oc patch hco kubevirt-hyperconverged -n openshift-cnv --type json -p '[{"op":"replace","path":"/spec/workloadUpdateStrategy/workloadUpdateMethods", "value":[]}]'

    输出示例

    hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched

  3. 在继续操作前,请确保 HyperConverged Operator 为 Upgradeable。输入以下命令并监控输出:

    $ oc get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.conditions"

    例 7.1. 输出示例

    [
      {
        "lastTransitionTime": "2022-12-09T16:29:11Z",
        "message": "Reconcile completed successfully",
        "observedGeneration": 3,
        "reason": "ReconcileCompleted",
        "status": "True",
        "type": "ReconcileComplete"
      },
      {
        "lastTransitionTime": "2022-12-09T20:30:10Z",
        "message": "Reconcile completed successfully",
        "observedGeneration": 3,
        "reason": "ReconcileCompleted",
        "status": "True",
        "type": "Available"
      },
      {
        "lastTransitionTime": "2022-12-09T20:30:10Z",
        "message": "Reconcile completed successfully",
        "observedGeneration": 3,
        "reason": "ReconcileCompleted",
        "status": "False",
        "type": "Progressing"
      },
      {
        "lastTransitionTime": "2022-12-09T16:39:11Z",
        "message": "Reconcile completed successfully",
        "observedGeneration": 3,
        "reason": "ReconcileCompleted",
        "status": "False",
        "type": "Degraded"
      },
      {
        "lastTransitionTime": "2022-12-09T20:30:10Z",
        "message": "Reconcile completed successfully",
        "observedGeneration": 3,
        "reason": "ReconcileCompleted",
        "status": "True",
        "type": "Upgradeable" 1
      }
    ]
    1
    OpenShift Virtualization Operator 具有 Upgradeable 状态。
  4. 手动将集群从源 EUS 版本升级到下一个 OpenShift Container Platform 次要版本:

    $ oc adm upgrade

    验证

    • 运行以下命令检查当前版本:

      $ oc get clusterversion
      注意

      将 OpenShift Container Platform 更新至下一版本是更新 OpenShift Virtualization 的先决条件。如需了解更多详细信息,请参阅 OpenShift Container Platform 文档中的"更新集群"部分。

  5. 更新 OpenShift Virtualization。

    • 使用默认的 Automatic 批准策略,OpenShift Virtualization 会在更新 OpenShift Container Platform 后自动更新到对应的版本。
    • 如果使用 Manual 批准策略,请使用 Web 控制台批准待处理的更新。
  6. 运行以下命令监控 OpenShift Virtualization 更新:

    $ oc get csv -n openshift-cnv
  7. 将 OpenShift Virtualization 更新至可用于非 EUS 次版本的每个 z-stream 版本,通过运行上一步中显示的命令来监控每个更新。
  8. 运行以下命令,确认 OpenShift Virtualization 已成功更新至非 EUS 版本的最新 z-stream 版本:

    $ oc get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.versions"

    输出示例

    [
      {
        "name": "operator",
        "version": "4.12.10"
      }
    ]

  9. 等待 HyperConverged Operator 在执行下一次更新前具有 Upgradeable 状态。输入以下命令并监控输出:

    $ oc get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.conditions"
  10. 将 OpenShift Container Platform 更新至目标 EUS 版本。
  11. 通过检查集群版本确认更新是否成功:

    $ oc get clusterversion
  12. 将 OpenShift Virtualization 更新至目标 EUS 版本。

    • 使用默认的 Automatic 批准策略,OpenShift Virtualization 会在更新 OpenShift Container Platform 后自动更新到对应的版本。
    • 如果使用 Manual 批准策略,请使用 Web 控制台批准待处理的更新。
  13. 运行以下命令监控 OpenShift Virtualization 更新:

    $ oc get csv -n openshift-cnv

    VERSION 字段与目标 EUS 版本匹配并且 PHASE 字段显示为 Succeeded 时,更新已完成。

  14. 恢复您备份的工作负载更新方法配置:

    $ oc patch hco kubevirt-hyperconverged -n openshift-cnv --type json -p "[{\"op\":\"add\",\"path\":\"/spec/workloadUpdateStrategy/workloadUpdateMethods\", \"value\":$WORKLOAD_UPDATE_METHODS}]"

    输出示例

    hyperconverged.hco.kubevirt.io/kubevirt-hyperconverged patched

    验证

    • 运行以下命令检查虚拟机迁移的状态:

      $ oc get vmim -A

后续步骤

  • 现在,您可以取消暂停 worker 节点的机器配置池。