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

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

准备工作

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

逐出政策设置

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

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

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

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

evictionStrategy

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

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

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

maxMigrationAttemptsPerVM

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

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

migrationTargetInitializationTimeout

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

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

启用并配置逐出政策

如需在 GDC 上的虚拟机运行时中使用逐出政策,必须在集群的 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 自定义资源。

    GDC 上的虚拟机运行时现在会将逐出政策应用于集群中的虚拟机。

后续步骤