虚拟机弹性

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

本文档面向应用运维人员组中运维虚拟机的开发者。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众。

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

虚拟机可用性检查

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

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

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

请求权限和访问权限

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

启用客机内检查

默认情况下,如果不存在 guestHealthCheck,则客机内检查处于停用状态。

如需为虚拟机启用或停用客机内检查,您必须更新虚拟机规范中的 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 信号。

停用虚拟机高可用性

默认情况下,如果不存在注解,则虚拟机高可用性处于启用状态。 您可以通过添加注解来为特定虚拟机显式停用高可用性。添加注解以停用虚拟机高可用性:

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

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

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

节点故障缓解

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

  • 与 Management API 服务器的节点分区:由于以下情况,托管虚拟机的裸金属节点与 Management API 服务器分区:

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