本文档适用于在 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 |
LiveMigrate ,Restart |
maxMigrationAttemptsPerVM |
3 |
[1 ,5 ] 范围内的整数 |
migrationTargetInitializationTimeout |
30s |
任何有效的时长字符串,例如 1m 、2h 或 1h30m |
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
对象中添加其他配置选项。
要启用和配置逐出政策,请完成以下步骤:
修改
VMRuntime
自定义资源:kubectl edit vmruntime vmruntime
添加或更新包含空对象的
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
在编辑器中保存并关闭
VMRuntime
自定义资源。VM Runtime on GDC 现在会将逐出政策应用于集群中的虚拟机。