查看维护通知

主机维护事件是指 Google Cloud 必须对您的 TPU 执行维护或维修活动的情况。Google 会在执行主机维护之前发送即将进行的维护通知。当维护窗口打开时, Google Cloud会自动对您的实例执行维护。通过监控实例的即将到来的维护窗口,您可以主动准备工作负载以处理即将进行的维护,同时将中断降至最低。

借助 Cloud TPU,您可以使用 Google Cloud CLI 和通过查询元数据服务器查看维护通知。您还可以在 Cloud Logging 中查看即将进行的维护活动。如需了解如何查看 GKE 中 TPU 的维护通知,请参阅管理 GPU 和 TPU 的 GKE 节点中断

维护通知字段

维护通知包含以下字段:

  • windowStartTime:发生维护的时段的开始时间
  • windowEndTime:发生维护的时段的结束时间
  • latestWindowStartTime:维护窗口可移至的最晚时间
  • maintenanceType:要执行的维护类型
    • SCHEDULED:提前 7 天发出维护通知
    • UNSCHEDULED:维护包含重要更新,仅在短时间内通知,通知时间比安排的维护事件短
  • canReschedule:您是否可以在此虚拟机的通知期内手动启动维护。
    • TRUE:您可以在通知期内手动启动维护。
    • FALSE:您无法手动为此虚拟机启动维护。这通常在虚拟机正在积极进行维护期间发生。
  • maintenanceStatus:当前维护操作的状态
    • ONGOING:维护操作正在进行中
    • PENDING:维护操作尚未开始,但已安排

如果没有维护通知,则响应类似于以下内容:

{ "error": "no notifications have been received yet, try again later" }

维护状态行为

管理维护事件时,请检查 canReschedulemaintenanceStatus 的值。这些字段组合起来,表示您可以或不可以执行哪些操作来手动启动维护事件:

  • canReschedule=TruemaintenanceStatus=Pending:您可以在预定的开始时间之前手动为实例启动维护事件。
  • canReschedule=FalsemaintenanceStatus=Ongoing:维护正在进行,无法重新安排。
  • canReschedule=FalsemaintenanceStatus=Pending:您的实例不支持手动触发的维护事件。

查看维护通知

您可以通过以下方式查看维护通知:

  • 使用 Google Cloud CLI 调用 Cloud TPU API
  • 在虚拟机上查询元数据服务器
  • 检查 Cloud Logging

检查 TPU 是否有维护通知

gcloud

使用 gcloud alpha compute tpus tpu-vm describe 命令查看维护通知:

gcloud alpha compute tpus tpu-vm describe TPU_NAME \
    --zone=ZONE

如果有即将发生的维护事件,响应中将包含如下部分:

upcomingMaintenance:
    canReschedule: true
    latestWindowStartTime: "2025-12-01T19:00:00Z"
    maintenanceStatus: PENDING
    type: SCHEDULED
    windowEndTime: "2025-12-01T22:00:00Z"
    windowStartTime: "2025-12-01T19:00:00Z"

在此回复中:

  • 系统会按 windowStartTime 中显示的日期和时间安排维护。
  • canReschedule 设置为 truemaintenanceStatus 设置为 PENDING。这些设置表明,您可以在 latestWindowStartTime 中显示的日期之前手动启动预定的维护活动。

元数据服务器

在 TPU 虚拟机中,查询元数据服务器以查看下一个维护事件:

curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"

如果有即将发生的维护活动,响应将包含类似以下内容的部分:

Upcoming maintenance: {
    "can_reschedule" : "true",
    "latest_window_start_time" : "2024-06-12T16:00:01+00:00",
    "maintenance_status" : "PENDING",
    "type" : "SCHEDULED",
    "window_end_time" : "2024-06-12T20:00:00+00:00",
    "window_start_time" : "2024-06-12T16:00:00+00:00"
}

您可以从分片中的任何 TPU 虚拟机查询元数据服务器,因为分片中的所有虚拟机都会收到相同的即将发生的维护事件通知。

如需详细了解虚拟机元数据,请参阅 Compute Engine 文档中的虚拟机元数据简介

检查 Cloud Logging 是否存在维护通知

在 Cloud TPU 上安排通知后,Cloud Logging 中将包含相应事件的系统事件日志,其中包含 methodName:compute.instance.upcomingMaintenance。如需查看即将进行的维护事件的日志,请执行以下操作:

  1. 在 Google Cloud 控制台导航菜单中,前往“日志浏览器”页面:

    转到日志浏览器

  2. 使用以下搜索查询可查看安排了即将进行的维护事件的所有 TPU:

    "compute.instances.upcomingMaintenance"

    Cloud TPU 会按各个虚拟机实例(例如 t1v-n-5bdca789-w-0)在 Cloud Logging 中记录即将发生的维护事件。

维护通知日志示例

日志浏览器中会显示一条维护事件通知,其中的值类似于以下内容:

  • methodName"compute.instances.upcomingMaintenance"
  • metadata
    • maintenanceStatus"PENDING"
    • windowStartTime"2024-07-23T20:00:00Z"

以下是即将发生的维护活动的完整日志条目的示例:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "message": "Maintenance is scheduled for this instance. Review the maintenance schedule by describing the VM with gcloud CLI or querying the http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance metadata key."
    },
    "serviceName": "compute.googleapis.com",
    "methodName": "compute.instances.upcomingMaintenance",
    "resourceName": "projects/cloud-tpu-multipod-dev/zones/europe-west4-b/instances/t1v-n-9472280f-w-0",
    "request": {
      "@type": "type.googleapis.com/compute.instances.upcomingMaintenance"
    },
    "metadata": {
      "type": "SCHEDULED",
      "windowStartTime": "2024-11-15T04:00:00Z",
      "canReschedule": true,
      "latestWindowStartTime": "2024-11-15T04:00:01Z",
      "windowEndTime": "2024-11-15T08:00:00Z",
      "maintenanceStatus": "PENDING"
  },
  "logName": "projects/cloud-tpu-multipod-dev/logs/cloudaudit.googleapis.com%2Fsystem_event",
  "operation": {
    "id": "systemevent-1731038451389-6265ecbfcd453-5127b81e-f40b8149",
    "producer": "compute.instances.upcomingMaintenance",
    "first": true,
    "last": true
  },
  "receiveTimestamp": "2024-11-08T04:00:54.457835088Z"
}

维护事件开始后,日志中会显示一条新的信息型事件,其值与以下内容类似:

  • methodName"compute.instances.upcomingMaintenance"
  • metadata
    • maintenanceStatus"ONGOING"
    • windowStartTime"2024-07-23T20:00:00Z"

维护事件结束后,审核日志中会显示一条新的信息事件,其值与以下内容类似:

  • methodName"compute.instances.upcomingMaintenance"
  • status: { message: "Maintenance window has completed for this instance. All maintenance notifications on the instance have been removed." }

后续步骤