虚拟机弹性

本文档概述了虚拟机 (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 服务器分区。