本文档概述了虚拟机 (VM) 的弹性,以及应用运维人员可以启用哪些可选检查,以便从 Google Distributed Cloud (GDC) 气隙环境中的虚拟机内部获取更深入的洞见。
本文档面向应用运维人员组中运维虚拟机的开发者。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众。
GDC 中的虚拟机提供高可用性,以便在底层基础架构或客机发生故障时提高服务连续性。您还可以将系统配置为发出可选的健康状况信号,以便更深入地了解虚拟机状态。
虚拟机可用性检查
系统提供以下虚拟机可用性检查:
| 检查名称 | 说明 | 缓解措施支持 | 信号可用性 |
|---|---|---|---|
| 客机健康状况检查 | 验证客机操作系统的健康状况。其他客机内检查的前提条件。 | 是 | 客机内检查 |
| 存储空间检查 | 验证虚拟机底层存储空间的健康状况。 | 是 | 客机内检查 |
| 出站流量检查 | 验证与已知内部端点的连接。 | 否 | 客机内检查和外部检查 |
| 入站流量检查 | 使用虚拟机配置的入站流量 (VirtualMachineExternalAccess) 验证虚拟机可访问性。 | 否 | 客机内检查 |
缓解措施可以重启虚拟机,并在频繁发生故障时重新安排到其他节点。
请求权限和访问权限
如需执行此页面中列出的任务,您必须具有 Project VirtualMachine Admin 角色。请按照以下步骤
验证
您在虚拟机所在项目的命名空间
中是否具有 Project VirtualMachine Admin (project-vm-admin) 角色。
启用客机内检查
默认情况下,如果不存在 guestHealthCheck,则客机内检查处于停用状态。
如需为虚拟机启用或停用客机内检查,您必须更新虚拟机规范中的 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 信号。
停用虚拟机高可用性
默认情况下,如果不存在注解,则虚拟机高可用性处于启用状态。 您可以通过添加注解来为特定虚拟机显式停用高可用性。添加注解以停用虚拟机高可用性:
- 打开虚拟机的配置文件。
- 将
highavailability.virtualmachine.gdc.goog/enable: false注解添加到虚拟机的元数据,以停用高可用性。
以下是 YAML 文件中的注解示例:
metadata:
annotations:
highavailability.virtualmachine.gdc.goog/enable: false
节点故障缓解
自动缓解措施可解决虚拟机故障并保持高可用性。当底层基础架构无法再支持正在运行的虚拟机时,系统会尝试隔离运行不正常的节点,并将虚拟机重新安排到运行正常的节点。 以下场景可能会触发此节点级缓解:
与 Management API 服务器的节点分区:由于以下情况,托管虚拟机的裸金属节点与 Management API 服务器分区:
- API 服务器与节点之间的网络连接丢失。
- 节点上的
kubelet代理已关闭。 - 节点观察到电源故障。
用户集群虚拟机分区:用户集群工作器虚拟机与其集群的管理 API 服务器分区。