触发主机维护事件


本页面介绍如何在特定虚拟机实例系列实例上触发主机维护事件。此功能使您可以手动启动维护事件以控制虚拟机维护时间。这对于可能受特定维护窗口影响的工作负载非常有用。

您可以手动触发维护事件,使其立即启动。无法在特定日期或时间触发事件。如果您不使用此功能,则维护事件会按计划进行。

限制

触发虚拟机主机维护事件的功能仅限于以下虚拟机机器类型:

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建虚拟机和管理虚拟机维护所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建虚拟机和管理虚拟机维护需要以下权限:

  • 获取虚拟机的相关信息: 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=YesmaintenanceStatus=Pending,则表示您可以对虚拟机触发维护。
  • 如果 canReschedule=NomaintenanceStatus=Ongoing,则表示维护已在进行中。
  • 如果 canReschedule=NomaintenanceStatus=Pending,则表示虚拟机不支持手动触发的维护。

后续步骤