本页面介绍如何在特定虚拟机实例系列实例上触发主机维护事件。此功能使您可以手动启动维护事件以控制虚拟机维护时间。这对于可能受特定维护窗口影响的工作负载非常有用。
您可以手动触发维护事件,使其立即启动。无法在特定日期或时间触发事件。如果您不使用此功能,则维护事件会按计划进行。
限制
触发虚拟机主机维护事件的功能仅限于以下虚拟机机器类型:
- 所有主机 C4 标准、高内存和高 CPU 机器(具有 192 个 vCPU)
- 所有主机 C3 标准、高内存和高 CPU 机器(具有 176 个 vCPU)
- 具有本地 SSD 的 C3 虚拟机
- 所有主机 C3D 标准、高内存和高 CPU 机器(具有 360 个 vCPU)
- 具有本地 SSD 的 C3D 虚拟机
- 具有 176 个 vCPU 的 Z3 高内存机器
如果您使用的是其他机器系列的虚拟机,请查看设置主机维护政策文档。
准备工作
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
获取虚拟机的相关信息:
compute.instances.get
-
创建虚拟机:
compute.instances.create
VM_NAME
:虚拟机的名称。ZONE
:虚拟机所在的可用区。PROJECT_NAME
:项目的名称。ZONE
:虚拟机所在的可用区。VM_NAME
:虚拟机的名称。- windowStartTime:发生维护的时段的开始时间
- windowEndTime:发生维护的时段的结束时间
- latestWindowStartTime:该时段可移至的最早时间
- maintenanceType:要执行的维护类型
- NONE:此虚拟机未安排维护
- SCHEDULED:提前 7 天发出维护通知
- UNSCHEDULED:维护包含重要更新,仅在短时间内通知。
- canReschedule:是否可以在通知期内对此虚拟机触发维护
- TRUE:可以在通知期内执行客户触发的维护
- FALSE:无法对此虚拟机执行客户触发的维护。这通常在虚拟机进行维护期间发生
- maintenanceStatus:当前维护操作的状态
- ONGOING:维护操作正在进行中
- PENDING:维护操作已安排,但尚未开始
- 如果
canReschedule=Yes
且maintenanceStatus=Pending
,则表示您可以对虚拟机触发维护。 - 如果
canReschedule=No
且maintenanceStatus=Ongoing
,则表示维护已在进行中。 - 如果
canReschedule=No
且maintenanceStatus=Pending
,则表示虚拟机不支持手动触发的维护。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得创建虚拟机和管理虚拟机维护所需的权限,请让管理员向您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。此预定义角色包含创建虚拟机和管理虚拟机维护所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建虚拟机和管理虚拟机维护需要以下权限:
触发主机维护事件
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
替换以下内容:
响应如下所示:
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
替换以下内容:
响应如下所示:
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 和元数据服务器使用以下相同的响应:
维护状态行为
在管理维护时间表时,请检查
canReschedule=
和maintenanceStatus=
的状态,这些响应组合描述了功能预期行为,并显示以下状态组合之一:后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-18。
-