本文档概述了虚拟机 (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,则默认停用客户机内检查。
- 打开虚拟机的配置文件。
- 前往
spec:部分。 - 添加或修改
guestEnvironment:和guestHealthCheck:字段以启用检查。 - 将
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:
- 打开虚拟机的配置文件。
- 向虚拟机的元数据添加
highavailability.virtualmachine.gdc.goog/enable: false注解,以停用高可用性。
以下是 YAML 文件中的注解示例:
metadata:
annotations:
highavailability.virtualmachine.gdc.goog/enable: false
节点故障缓解措施
自动缓解措施可解决虚拟机故障并维持高可用性。当底层基础架构无法再支持正在运行的虚拟机时,系统会尝试隔离运行不正常的节点,并将虚拟机重新安排到运行正常的节点上。以下情况会触发此节点级缓解措施:
节点与 API 服务器分离:托管虚拟机的裸金属节点因以下情况而与管理 API 服务器分离:
- API 服务器与节点之间的网络连接中断。
- 节点上的
kubelet代理已关闭。 - 节点检测到电源故障。
用户集群虚拟机分区:用户集群工作器虚拟机与其集群的管理 API 服务器分区。