5.2. 配置自动工作负载更新


5.2.1. 关于工作负载更新

更新 OpenShift Virtualization 时,虚拟机工作负载(包括 libvirtvirt-launcher )和 qemu (如果支持实时迁移)会自动更新。

注意

每个虚拟机均有一个 virt-launcher pod,用于运行虚拟机实例(VMI)。virt-launcher pod 运行一个 libvirt 实例,用于管理虚拟机(VM)进程。

您可以通过编辑 HyperConverged 自定义资源 (CR) 的 spec.workloadUpdateStrategy 小节来配置工作负载的更新方式。可用的工作负载更新方法有两种: LiveMigrateEvict

因为 Evict 方法关闭 VMI pod,所以只启用 LiveMigrate 更新策略。

LiveMigrate 是唯一启用的更新策略时:

  • 支持实时迁移的 VMI 会在更新过程中进行迁移。VM 客户机会进入启用了更新组件的新 pod。
  • 不支持实时迁移的 VMI 不会中断或更新。

    • 如果 VMI 有 LiveMigrate 驱除策略,但没有支持实时迁移。

如果您同时启用 LiveMigrateEvict

  • 支持实时迁移的 VMI 使用 LiveMigrate 更新策略。
  • 不支持实时迁移的 VMI 使用 Evict 更新策略。如果 VMI 由具有 alwaysrunStrategy 值的 VirtualMachine 对象控制,则会在带有更新组件的新 pod 中创建一个新的 VMI。
迁移尝试和超时

更新工作负载时,如果 pod 在以下时间段内处于 Pending 状态,实时迁移会失败:

5 分钟
如果 pod 因为是 Unschedulable 而处于 pending 状态。
15 分钟
如果 pod 因任何原因处于 pending 状态。

当 VMI 无法迁移时,virt-controller 会尝试再次迁移它。它会重复这个过程,直到所有可可迁移的 VMI 在新的 virt-launcher Pod 上运行。如果 VMI 没有被正确配置,这些尝试可能会无限期重复。

注意

每次尝试都会对应于一个迁移对象。只有最近五个尝试才在缓冲区中。这可防止迁移对象在系统上进行积累,同时保留用于调试的信息。

5.2.2. 配置工作负载更新方法

您可以通过编辑 HyperConverged 自定义资源(CR)来配置工作负载更新方法。

先决条件

  • 要使用实时迁移作为更新方法,您必须首先在集群中启用实时迁移。

    注意

    如果 VirtualMachineInstance CR 包含 evictionStrategy: LiveMigrate,且虚拟机实例(VMI)不支持实时迁移,则 VMI 将不会更新。

流程

  1. 要在默认编辑器中打开 HyperConverged CR,请运行以下命令:

    $ oc edit hco -n openshift-cnv kubevirt-hyperconverged
  2. 编辑 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
    可用于执行自动化工作负载更新的方法。可用值为 LiveMigrateEvict。如果您如本例所示启用这两个选项,则更新会为不支持实时迁移的 VMI 使用 LiveMigrate,对于不支持实时迁移的 VMI 使用 Evict。要禁用自动工作负载更新,您可以删除 workloadUpdateStrategy 小节,或设置 workloadUpdateMethods: [] 将数组留空。
    2
    具有最低破坏性的更新方法。支持实时迁移的 VMI 通过将虚拟机 (VM) 客户机迁移到启用了更新组件的新 pod 中来更新。如果 LiveMigrate 是唯一列出的工作负载更新方法,不支持实时迁移的 VMI 不会中断或更新。
    3
    在升级过程中关闭 VMI pod 是一个有破坏性的方法。如果在集群中没有启用实时迁移,Evict 是唯一可用的更新方法。如果 VMI 由已配置了 runStrategy: alwaysVirtualMachine 对象控制,新的 VMI 会在带有更新组件的新 pod 中创建。
    4
    使用 Evict 方法每次可以强制更新的 VMI 数量。这不适用于 LiveMigrate 方法。
    5
    驱除下一批工作负载前等待的时间间隔。这不适用于 LiveMigrate 方法。
    注意

    您可以通过编辑 HyperConverged CR 的 spec.liveMigrationConfig 小节来配置实时迁移限制和超时。

  3. 若要应用您的更改,请保存并退出编辑器。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.