在 Google Distributed Cloud 中为虚拟机配置逐出政策

本文档适用于在 Google Distributed Cloud 中运行虚拟机 (VM) 的平台管理员。本文档介绍了如何配置逐出政策,以控制使用 VM Runtime on GDC 的虚拟机如何在维护事件期间自动迁移到其他主机。这些配置设置允许您在升级集群或对主机执行维护时,继续在其他主机上运行虚拟机。

准备工作

如需完成本文档中的任务,您需要能够使用 Google Distributed Cloud 1.12.0 版 (anthosBareMetalVersion: 1.12.0) 或更高版本集群。您可以使用任何能够运行工作负载的集群类型。如果需要,请在 Compute Engine 上试用 Google Distributed Cloud,或查看集群创建概览

逐出政策设置

借助 Google Distributed Cloud,您可以在执行集群升级或将节点置于维护模式时配置节点行为。VM Runtime on GDC 使用逐出政策来控制集群处理在这些事件期间运行的虚拟机的方式。

启用后,GDC 上的 VM Runtime 默认使用实时迁移将虚拟机工作负载移至其他主机。此行为可最大限度地减少虚拟机工作负载的潜在中断。通过实时迁移,可迁移的虚拟机可从一个主机移动到另一个主机,而不会中断客机操作系统。

您可以配置以下逐出政策设置:

属性 默认 有效值
evictionStrategy LiveMigrate LiveMigrateRestart
maxMigrationAttemptsPerVM 3 [1,5] 范围内的整数
migrationTargetInitializationTimeout 30s 任何有效的时长字符串,例如 1m2h1h30m

evictionStrategy

如果此值设置为 LiveMigrate,GDC 上的 VM Runtime 会尝试将任何可迁移的虚拟机从节点迁移出去以逐出它。虚拟机会被放置在集群中的另一个节点上并继续运行。

如果此值设置为 Restart,则 VM Runtime on GDC 不会尝试迁移虚拟机。相反,当节点进入维护模式时,虚拟机会停止;当节点退出维护模式时,虚拟机会重新启动。在主机维护事件期间,虚拟机不可用。

当您选择 LiveMigrate 策略时,对于不可迁移的虚拟机,VM Runtime on GDC 会回退到 Restart 策略。

maxMigrationAttemptsPerVM

此设置控制在应用 Restart 策略之前特定虚拟机可以发生的迁移尝试次数上限。

如果 evictionStrategy 设置为 Restart,则此设置将被忽略。

migrationTargetInitializationTimeout

此设置控制迁移被视为失败之前的最大启动时长。启动时间过长的迁移会计入虚拟机工作负载的失败迁移预算。

如果 evictionStrategy 设置为 Restart,则此设置将被忽略。

启用并配置逐出政策

如需在 GDC 的 VM Runtime 中使用逐出政策,您必须在集群的 VMRuntime 对象中定义 evictionPolicy 设置。此设置默认为启用状态。如果您要从以前的版本升级,则必须手动启用此设置。

空对象(如 evictionPolicy: {})使用默认设置启用逐出政策。要更改默认行为,请在 evictionPolicy 对象中添加其他配置选项。

要启用和配置逐出政策,请完成以下步骤:

  1. 修改 VMRuntime 自定义资源:

    kubectl edit vmruntime vmruntime
    
  2. 添加或更新包含空对象的 evictionPolicy 部分以使用默认逐出政策设置,或添加您需要的设置:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      disableCDIUploadProxyVIP: false
      enabled: true
      evictionPolicy: {}
      useEmulation: false
    

    如果 evictionPolicy 未填充(例如 evictionPolicy: null)或未包含在清单中),则不会执行任何特殊操作。虚拟机会被强制逐出。

    以下示例清单显示了如何启用虚拟机实时迁移,或在维护完成后在同一主机上重启虚拟机:

    实时迁移

    以下示例逐出政策支持虚拟机实时迁移。集群最多可以重试 3 次实时迁移,每次启动时该过程的超时时间为 30 秒:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      disableCDIUploadProxyVIP: false
      enabled: true
      evictionPolicy:
        evictionStrategy: LiveMigrate
        maxMigrationAttemptsPerVM: 3
        migrationTargetInitializationTimeout: 30s
      useEmulation: false
    

    重启

    以下示例逐出政策不会在逐出期间尝试迁移任何虚拟机。虚拟机在其当前主机上停止,并在主机完成其维护事件后重新启动:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      disableCDIUploadProxyVIP: false
      enabled: true
      evictionPolicy:
        evictionStrategy: Restart
      useEmulation: false
    
  3. 在编辑器中保存并关闭 VMRuntime 自定义资源。

    VM Runtime on GDC 现在会将逐出政策应用于集群中的虚拟机。

后续步骤