7.3. 防止在 EUS 到 EUS 更新过程中进行工作负载更新
当您从一个延长更新支持(EUS)版本升级到下一个版本时,您必须手动禁用自动工作负载更新,以防止 OpenShift Virtualization 在更新过程中迁移或驱除工作负载。
先决条件
- 您正在运行 EUS 版本 OpenShift Container Platform,并希望升级到下一个 EUS 版本。还没有同时更新至奇数版本。
- 您可以阅读"准备执行 EUS 到 EUS 更新",并了解到与 OpenShift Container Platform 集群相关的注意事项和要求。
- 按照 OpenShift Container Platform 文档的指示暂停 worker 节点的机器配置池。
- 建议您使用默认的 Automatic 批准策略。如果使用 Manual 批准策略,您必须批准 web 控制台中的所有待处理的更新。如需了解更多详细信息,请参阅"需要批准待处理的 Operator 更新"部分。
流程
运行以下命令备份当前的
workloadUpdateMethods
配置:$ WORKLOAD_UPDATE_METHODS=$(oc get kv kubevirt-kubevirt-hyperconverged -n openshift-cnv -o jsonpath='{.spec.workloadUpdateStrategy.workloadUpdateMethods}')
运行以下命令关闭所有工作负载更新方法:
$ 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
在继续操作前,请确保
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
状态。
手动将集群从源 EUS 版本升级到下一个 OpenShift Container Platform 次要版本:
$ oc adm upgrade
验证
运行以下命令检查当前版本:
$ oc get clusterversion
注意将 OpenShift Container Platform 更新至下一版本是更新 OpenShift Virtualization 的先决条件。如需了解更多详细信息,请参阅 OpenShift Container Platform 文档中的"更新集群"部分。
更新 OpenShift Virtualization。
- 使用默认的 Automatic 批准策略,OpenShift Virtualization 会在更新 OpenShift Container Platform 后自动更新到对应的版本。
- 如果使用 Manual 批准策略,请使用 Web 控制台批准待处理的更新。
运行以下命令监控 OpenShift Virtualization 更新:
$ oc get csv -n openshift-cnv
- 将 OpenShift Virtualization 更新至可用于非 EUS 次版本的每个 z-stream 版本,通过运行上一步中显示的命令来监控每个更新。
运行以下命令,确认 OpenShift Virtualization 已成功更新至非 EUS 版本的最新 z-stream 版本:
$ oc get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.versions"
输出示例
[ { "name": "operator", "version": "4.13.11" } ]
等待
HyperConverged
Operator 在执行下一次更新前具有Upgradeable
状态。输入以下命令并监控输出:$ oc get hco kubevirt-hyperconverged -n openshift-cnv -o json | jq ".status.conditions"
- 将 OpenShift Container Platform 更新至目标 EUS 版本。
通过检查集群版本确认更新是否成功:
$ oc get clusterversion
将 OpenShift Virtualization 更新至目标 EUS 版本。
- 使用默认的 Automatic 批准策略,OpenShift Virtualization 会在更新 OpenShift Container Platform 后自动更新到对应的版本。
- 如果使用 Manual 批准策略,请使用 Web 控制台批准待处理的更新。
运行以下命令监控 OpenShift Virtualization 更新:
$ oc get csv -n openshift-cnv
当
VERSION
字段与目标 EUS 版本匹配并且PHASE
字段显示为Succeeded
时,更新已完成。恢复您备份的工作负载更新方法配置:
$ 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 节点的机器配置池。