本页面介绍如何在特定虚拟机实例系列实例上触发主机维护事件。此功能使您可以手动启动维护事件以控制虚拟机维护时间。这对于可能受特定维护窗口影响的工作负载非常有用。
您可以手动触发维护事件,使其立即启动。无法在特定日期或时间触发事件。如果您不使用此功能,则维护事件会按计划进行。
限制
触发虚拟机主机维护事件的功能仅限于以下虚拟机机器类型:
- 所有主机 C3 标准、高内存和高 CPU 机器(具有 176 个 vCPU)
- 具有本地 SSD 的 C3 虚拟机
- 所有主机 C3D 标准、高内存和高 CPU 机器(具有 360 个 vCPU)
- 具有本地 SSD 的 C3D 虚拟机
- 具有 176 个 vCPU 的 Z3 高内存机器
- 以下 M1、M2 和 M3 内存优化虚拟机:
- m3-ultramem-128
- m3-megamem-128
- m2-ultramem-416
- m2-megamem-416
- m2-hypermem-416
- m1-ultramem-160
- m1-megamem-96
准备工作
- 手动启动虚拟机维护的功能仅适用于 C3、C3D 和 Z3 虚拟机。如果您使用的是其他机器系列的虚拟机,请查看设置主机维护政策文档。
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
选择标签页以了解您打算如何使用本页面上的示例:
gcloud
-
安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:
gcloud init
- 设置默认区域和可用区。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
-
所需的角色
如需获得创建虚拟机和管理虚拟机维护所需的权限,请让管理员向您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色包含创建虚拟机和管理虚拟机维护所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建虚拟机和管理虚拟机维护需要以下权限:
-
获取虚拟机的相关信息:
compute.instances.get
-
创建虚拟机:
compute.instances.create
触发主机维护事件
Google 会通过多种方法针对即将进行的虚拟机维护发送通知。您可以通过查询虚拟机、元数据服务器或 Cloud Logging 来查找通知。
收到有关主机维护事件的通知后,您可以选择立即触发维护,也可以等待维护事件按计划发生。
启动维护事件
您可以立即开始虚拟机维护,而不是等待计划时间。使用 Google Cloud CLI 或 REST 方法立即触发虚拟机维护。
如果没有通知,并且您尝试触发维护事件,则会显示以下消息:
There is no reschedulable upcoming maintenance.
这表示未安排维护事件,无需执行任何操作。
gcloud
如需立即开始维护,请使用 gcloud compute instances perform-maintenance
命令。您必须添加 --zone=[ZONE_NAME]
。
gcloud compute instances perform-maintenance VM_NAME \ --zone=ZONE
替换以下内容:
VM_NAME
:虚拟机的名称。ZONE
:虚拟机所在的可用区。
响应如下所示:
upcomingMaintenance:{
"canReschedule":false
"latestWindowStartTime": "2023-12-01T19:00:01Z"
"maintenanceStatus":"ONGOING"
"type":"SCHEDULED"
"windowEndTime": "2023-12-01T22:00:00Z"
"windowStartTime": "2023-12-01T19:00:00Z"
}
在响应中,maintenanceStatus
设置为 ONGOING
。维护正在进行中。
REST
如需触发虚拟机维护,请运行 instances.performMaintenance
命令:
POST: https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME/performMaintenance
替换以下内容:
PROJECT_NAME
:项目的名称。ZONE
:虚拟机所在的可用区。VM_NAME
:虚拟机的名称。
响应如下所示:
upcomingMaintenance:{
"canReschedule":false
"latestWindowStartTime": "2023-12-01T19:00:01Z"
"maintenanceStatus":"ONGOING"
"type":"SCHEDULED"
"windowEndTime": "2023-12-01T22:00:00Z"
"windowStartTime": "2023-12-01T19:00:00Z"
}
在响应中,maintenanceStatus
设置为 ONGOING
。维护正在进行中。
维护状态定义
以下状态定义说明了对虚拟机维护查询的响应。这些定义提供了与虚拟机维护相关的信息。Google Cloud CLI、REST 和元数据服务器使用以下相同的响应:
- windowStartTime:发生维护的时段的开始时间
- windowEndTime:发生维护的时段的结束时间
- latestWindowStartTime:该时段可移至的最早时间
- maintenanceType:要执行的维护类型
- NONE:此虚拟机未安排维护
- SCHEDULED:提前 7 天发出维护通知
- UNSCHEDULED:维护包含重要更新,仅在短时间内通知。
- canReschedule:是否可以在通知期内对此虚拟机触发维护
- TRUE:可以在通知期内执行客户触发的维护
- FALSE:无法对此虚拟机执行客户触发的维护。这通常在虚拟机进行维护期间发生
- maintenanceStatus:当前维护操作的状态
- ONGOING:维护操作正在进行中
- PENDING:维护操作已安排,但尚未开始
维护状态行为
在管理维护时间表时,请检查 canReschedule=
和 maintenanceStatus=
的状态,这些响应组合描述了功能预期行为,并显示以下状态组合之一:
- 如果
canReschedule=Yes
且maintenanceStatus=Pending
,则表示您可以对虚拟机触发维护。 - 如果
canReschedule=No
且maintenanceStatus=Ongoing
,则表示维护已在进行中。 - 如果
canReschedule=No
且maintenanceStatus=Pending
,则表示虚拟机不支持手动触发的维护。