$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
了解 Operator Lifecycle Manager (OLM) 如何为 OpenShift 虚拟化提供 z 流和次要版本更新。
OpenShift 虚拟化 4.17 基于 Red Hat Enterprise Linux (RHEL) 9。您可以按照标准的 OpenShift 虚拟化更新过程,从基于 RHEL 8 的版本更新到 OpenShift 虚拟化 4.17。无需其他步骤。
与以前的版本一样,您可以执行更新而不会中断正在运行的工作负载。OpenShift 虚拟化 4.17 支持从 RHEL 8 节点到 RHEL 9 节点的实时迁移。
所有包含在 OpenShift Virtualization 中的虚拟机模板现在默认使用 RHEL 9 虚拟机类型:machineType: pc-q35-rhel9.<y>.0
,其中<y>
是对应于 RHEL 9 最新次要版本的单个数字。例如,pc-q35-rhel9.2.0
用于 RHEL 9.2。
更新 OpenShift Virtualization 不会更改任何现有虚拟机的machineType
值。这些虚拟机将继续像更新前一样工作。您可以选择更改虚拟机的机器类型,以便它可以从 RHEL 9 的改进中受益。
在更改虚拟机的 |
Operator Lifecycle Manager (OLM) 管理 OpenShift Virtualization Operator 的生命周期。在安装 Red Hat OpenShift Service on AWS 期间部署的 Marketplace Operator 使外部 Operator 可用于您的集群。
OLM 为 OpenShift Virtualization 提供 z 流和次要版本更新。当您将 Red Hat OpenShift Service on AWS 更新到下一个次要版本时,次要版本更新就会可用。在先更新 Red Hat OpenShift Service on AWS 之前,您无法将 OpenShift Virtualization 更新到下一个次要版本。
OpenShift Virtualization 订阅使用名为 **stable** 的单个更新通道。**stable** 通道确保您的 OpenShift Virtualization 和 Red Hat OpenShift Service on AWS 版本兼容。
如果您的订阅审批策略设置为 **自动**,则一旦 **stable** 通道中出现新版本的 Operator,更新过程就会开始。强烈建议使用 **自动** 批准策略来维护可支持的环境。只有在运行相应的 Red Hat OpenShift Service on AWS 版本时,才支持 OpenShift Virtualization 的每个次要版本。例如,您必须在 Red Hat OpenShift Service on AWS 4.17 上运行 OpenShift Virtualization 4.17。
虽然可以选择 **手动** 批准策略,但不建议这样做,因为它会危及集群的可支持性和功能。使用 **手动** 批准策略,您必须手动批准每个待处理的更新。如果 Red Hat OpenShift Service on AWS 和 OpenShift Virtualization 更新不同步,您的集群将不受支持。
更新完成所需的时间取决于您的网络连接。大多数自动更新在十五分钟内完成。
更新 OpenShift Virtualization 不会中断网络连接。
数据卷及其关联的持久卷声明在更新期间会保留。
如果您正在运行使用 AWS Elastic Block Store (EBS) 存储的虚拟机,则无法对其进行实时迁移,并且可能会阻止 Red Hat OpenShift Service on AWS 集群更新。 作为解决方法,您可以重新配置虚拟机,以便它们可以在集群更新期间自动关闭。将 |
更新 OpenShift Virtualization 时,如果虚拟机工作负载(包括libvirt
、virt-launcher
和qemu
)支持实时迁移,则会自动更新。
每个虚拟机都有一个运行虚拟机实例 (VMI) 的 |
您可以通过编辑HyperConverged
自定义资源 (CR) 的spec.workloadUpdateStrategy
节来配置工作负载的更新方式。有两种可用的工作负载更新方法:LiveMigrate
和Evict
。
由于Evict
方法会关闭 VMI pod,因此默认情况下仅启用LiveMigrate
更新策略。
当LiveMigrate
是唯一启用的更新策略时
支持实时迁移的 VMI 在更新过程中会被迁移。虚拟机客户机将移动到启用更新组件的新 pod 中。
不支持实时迁移的 VMI 不会中断或更新。
如果 VMI 具有LiveMigrate
逐出策略但不支持实时迁移,则不会更新。
如果同时启用LiveMigrate
和Evict
支持实时迁移的 VMI 使用LiveMigrate
更新策略。
不支持实时迁移的 VMI 使用Evict
更新策略。如果 VMI 受具有runStrategy: Always
设置的VirtualMachine
对象的控制,则会在具有更新组件的新 pod 中创建新的 VMI。
更新工作负载时,如果 pod 在以下时间段内处于Pending
状态,则实时迁移将失败
如果 pod 处于Unschedulable
状态。
如果 pod 因任何原因而卡在挂起状态。
当 VMI 迁移失败时,virt-controller
会尝试再次迁移它。它会重复此过程,直到所有可迁移 VMI 都在新的virt-launcher
pod 上运行。但是,如果 VMI 配置不正确,这些尝试可能会无限期地重复。
每次尝试都对应一个迁移对象。缓冲区中仅保存最近五次尝试。这可以防止迁移对象在系统上累积,同时保留用于调试的信息。 |
您可以通过编辑HyperConverged
自定义资源 (CR) 来配置工作负载更新方法。
要将实时迁移用作更新方法,必须首先在集群中启用实时迁移。
如果 |
要在默认编辑器中打开HyperConverged
CR,请运行以下命令:
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
编辑HyperConverged
CR 的workloadUpdateStrategy
节。例如:
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
spec:
workloadUpdateStrategy:
workloadUpdateMethods: (1)
- LiveMigrate (2)
- Evict (3)
batchEvictionSize: 10 (4)
batchEvictionInterval: "1m0s" (5)
# ...
1 | 可用于执行自动工作负载更新的方法。可用值为LiveMigrate 和Evict 。如果按此示例启用这两个选项,则更新将对支持实时迁移的 VMI 使用LiveMigrate ,对任何不支持实时迁移的 VMI 使用Evict 。要禁用自动工作负载更新,您可以删除workloadUpdateStrategy 节,或将workloadUpdateMethods: [] 设置为使数组为空。 |
2 | 破坏性最小的更新方法。支持实时迁移的 VMI 通过将虚拟机 (VM) 客户机迁移到启用更新组件的新 pod 来更新。如果LiveMigrate 是唯一列出的工作负载更新方法,则不支持实时迁移的 VMI 不会中断或更新。 |
3 | 一种在升级期间关闭 VMI pod 的破坏性方法。如果在集群中未启用实时迁移,则Evict 是唯一可用的更新方法。如果 VMI 受具有runStrategy: Always 配置的VirtualMachine 对象的控制,则会在具有更新组件的新 pod 中创建新的 VMI。 |
4 | 可以使用Evict 方法一次强制更新的 VMI 数量。这不适用于LiveMigrate 方法。 |
5 | 驱逐下一批工作负载之前的等待间隔。这并不适用于LiveMigrate 方法。 |
您可以通过编辑 |
要应用更改,请保存并退出编辑器。
如果已安装的 Operator 的订阅中将批准策略设置为**手动**,则在其当前更新通道中发布新的更新时,必须先手动批准更新才能开始安装。
以前使用 Operator Lifecycle Manager (OLM) 安装的 Operator。
在 AWS Web 控制台的 Red Hat OpenShift Service 的**管理员**视角中,导航到**Operators → 已安装的 Operators**。
具有待处理更新的 Operator 会显示状态为**可升级**。单击要更新的 Operator 的名称。
单击**订阅**选项卡。任何需要批准的更新都显示在**升级状态**旁边。例如,它可能显示**1 个需要批准**。
单击**1 个需要批准**,然后单击**预览安装计划**。
查看列为可更新的资源。满意后,单击**批准**。
返回到**Operators → 已安装的 Operators**页面以监控更新进度。完成后,状态将更改为**成功**和**最新**。
要监控 OpenShift Virtualization Operator 升级的状态,请观察集群服务版本 (CSV) 的PHASE
。您也可以在 Web 控制台中或通过运行此处提供的命令来监控 CSV 条件。
|
以具有cluster-admin
角色的用户身份登录集群。
安装 OpenShift CLI (oc
)。
运行以下命令
$ oc get csv -n openshift-cnv
查看输出,检查PHASE
字段。例如
VERSION REPLACES PHASE
4.9.0 kubevirt-hyperconverged-operator.v4.8.2 Installing
4.9.0 kubevirt-hyperconverged-operator.v4.9.0 Replacing
可选:通过运行以下命令监控所有 OpenShift Virtualization 组件条件的聚合状态
$ oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv \
-o=jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}'
成功升级将产生以下输出
ReconcileComplete True Reconcile completed successfully
Available True Reconcile completed successfully
Progressing False Reconcile completed successfully
Degraded False Reconcile completed successfully
Upgradeable True Reconcile completed successfully