虚拟机弹性

本文档概述了虚拟机 (VM) 的弹性,以及应用运维人员可以在 Google Distributed Cloud (GDC) 气隙环境中启用的一些可选检查,以便从 VM 内部获得更深入的洞见。

本文档面向应用运营商群组中负责运营虚拟机的开发者。如需了解详情,请参阅 GDC 气隙环境受众群体文档

GDC 中的虚拟机提供高可用性,以便在发生底层基础设施或 guest 故障时提高服务连续性。您还可以配置系统以发出可选的健康信号,从而更深入地了解虚拟机状态。

虚拟机可用性检查

系统提供以下虚拟机可用性检查:

检查名称 说明 缓解措施支持 信号可用性
访客健康检查 验证客户机操作系统健康状况。其他 guest 内检查的前提条件。 In-Guest Check
存储空间检查 验证虚拟机的底层存储健康状况。 In-Guest Check
出站检查 验证与已知内部端点的连接。 在 Guest 中检查和在外部检查
入站检查 使用配置的入站流量 (VirtualMachineExternalAccess) 验证虚拟机的可访问性。 In-Guest Check

缓解措施可以重启虚拟机,并在频繁发生故障时重新安排到另一个节点。

请求权限和访问权限

如需执行本页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。按照相关步骤验证您是否在虚拟机所在项目的命名空间中拥有 Project VirtualMachine Admin (project-vm-admin) 角色。

启用客户机内检查

默认情况下,如果不存在 guestHealthCheck,则停用 guest 内检查。

如需为虚拟机启用或停用客机内检查,您必须更新虚拟机规范中的 GuestEnvironment。如果安装了客机代理,此设置会从虚拟机内部收集指标。如果不存在 guestHealthCheck,则默认停用客户机内检查。

  1. 打开虚拟机的配置文件。
  2. 前往 spec: 部分。
  3. 添加或修改 guestEnvironment:guestHealthCheck: 字段以启用检查。
  4. enable 字段设置为 true。

以下是 YAML 文件中的配置示例:

spec:
  compute:
    virtualMachineType: n2-standard-2-gdc
  guestEnvironment:
    guestHealthCheck:
      enable: true

验证检查

配置虚拟机后,您可以检查虚拟机的 Status 中的 Condition 来验证可用性检查的状态。

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n NAMESPACE_NAME \
  get gvm -o yaml

输出会显示各种检查的状态。例如,如果启用了 guestHealthCheck,则 gvm 状态条件会填充 VMGuestHealth 信号。

停用虚拟机高可用性

默认情况下,如果不存在注解,则启用虚拟机高可用性。 您可以通过添加注解来明确停用特定虚拟机的 HA。添加注解以停用虚拟机 HA:

  1. 打开虚拟机的配置文件。
  2. 向虚拟机的元数据添加 highavailability.virtualmachine.gdc.goog/enable: false 注解,以停用高可用性。

以下是 YAML 文件中的注解示例:

metadata:
  annotations:
    highavailability.virtualmachine.gdc.goog/enable: false

节点故障缓解措施

自动缓解措施可解决虚拟机故障并维持高可用性。当底层基础架构无法再支持正在运行的虚拟机时,系统会尝试隔离运行不正常的节点,并将虚拟机重新安排到运行正常的节点上。以下情况会触发此节点级缓解措施:

  • 节点与 API 服务器分离:托管虚拟机的裸金属节点因以下情况而与管理 API 服务器分离:

    • API 服务器与节点之间的网络连接中断。
    • 节点上的 kubelet 代理已关闭。
    • 节点检测到电源故障。
  • 用户集群虚拟机分区:用户集群工作器虚拟机与其集群的管理 API 服务器分区。