查看维护通知

主机维护事件是指 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 将包含该事件的系统事件日志,其中包含 methodNamecompute.instance.upcomingMaintenance。如需查看即将进行的维护事件的日志,请执行以下操作:

  1. 在 Google Cloud 控制台导航菜单中,前往 Logs Explorer 页面:

    转到日志浏览器

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

    "compute.instances.upcomingMaintenance"

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

维护通知日志示例

Logs Explorer 中会显示维护事件通知,其中的值类似于以下内容:

  • 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." }

后续步骤