本文档介绍了如何使用 AI Hypercomputer 中提供的宿主机维护功能。它介绍了如何监控、规划和执行预留容量块的定期维护。如需管理 Compute Engine 实例的维护,请改为参阅跨计算实例管理宿主机事件。
您可以主动管理预留容量块上即将发生的维护宿主事件,无论实例是否在这些容量块上运行。这种方法有助于最大限度减少中断并保持最佳性能。
准备工作
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud initREST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得管理整个预留过程中的宿主机维护事件所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 针对项目的 Compute Admin (
roles/compute.admin) -
如需对系统事件审核日志拥有只读权限,请使用以下角色:针对项目的 Logs Viewer (
roles/logging.viewer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含管理预留中的主机维护事件所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需跨预留管理主机维护事件,您需要具备以下权限:
-
启动预留的主机维护:项目的
compute.reservations.performMaintenance权限 -
启动预留块的主机维护:针对项目的
compute.reservationBlocks.performMaintenance权限 -
启动预留子块的主机维护:针对项目的
compute.reservationSubBlocks.performMaintenance权限 -
项目的
compute.reservations.list权限(查看预留列表) -
项目的
compute.reservations.get权限(查看预留的详细信息) -
项目的
compute.reservationBlocks.list权限(查看预留中的块列表) -
项目的
compute.reservationSubBlocks.list权限(查看预留块中的子块列表)
概览
如果您尚未查看,请先查看了解并处理主机维护。
如需优化预留容量块的维护,请完成以下步骤:
设置通知提醒。创建基于日志的提醒,以便在预留、预留块或预留子块的维护事件已安排、已开始或已完成时收到通知。此方法有助于您主动规划活动,避免意外停机。
管理各个容量块的维护。查看并根据需要手动启动预留、预留块或预留子块的维护。此流程有助于您提高工作负载对宿主机错误的弹性,防止停机,并确保应用保持可用状态。
为预留设置通知提醒
您可以创建基于日志的提醒政策,以便在预留、预留块或预留子块的维护事件安排、开始或完成时收到通知。对于共享预留,所有者项目和共享预留的任何项目都会收到通知。
如需为预留、预留块或预留子块的维护事件创建提醒,请完成以下步骤。针对要创建的每项提醒重复此过程。
-
在 Google Cloud 控制台中,前往 Logs Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
点击显示查询切换开关以切换到开启位置。
在查询窗格中,构建以下查询之一。这些查询会过滤日志条目,以识别特定的维护事件。针对要创建的每个查询重复此过程。
接收预订的维护提醒:
如需在安排维护时收到提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.upcomingGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "scheduled"如需在维护完成后接收提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.completedGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "completed"
接收预留块的维护提醒:
如需在安排维护时收到提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.block.upcomingGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "scheduled"如需在维护开始时接收提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.block.startGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "started"如需在维护完成后接收提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.block.completedGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "completed"
接收 A4X Max 或 A4X 实例的预留子块的维护提醒:
如需在安排维护时收到提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.subBlock.upcomingGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "scheduled"如需在维护开始时接收提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.subBlock.startGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "started"如需在维护完成后接收提醒,请执行以下操作:
protoPayload.methodName="compute.reservations.subBlock.completedGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "completed"如需在 A4X Max 或 A4X 机器遇到错误且 Compute Engine 开始维护时收到提醒,请构建以下查询:
protoPayload.methodName="compute.reservations.subblock.unusedmachinerepair" severity>=DEFAULT protoPayload.status.message =~ "maintenance"如需在 A4X Max 或遇到错误的 A4X 机器的维护完成后收到提醒,请构建以下查询:
protoPayload.methodName="compute.reservations.subblock.unusedmachinerepaircomplete" severity>=DEFAULT protoPayload.status.message =~ "repaired"
如需验证查询,请点击运行查询。如果查询有效,则查询结果窗格会显示与查询匹配的日志条目。
在查询结果工具栏中,点击操作列表,然后选择 创建日志提醒。系统会显示创建基于日志的提醒政策窗格。
在提醒详情部分中,执行以下操作:
在提醒政策名称字段中,输入政策的名称。
在政策严重级别列表中,选择警告(或更高的严重级别)。
点击下一步。
在选择要包含在提醒中的日志部分中,点击下一步。
在设置通知频率和自动关闭时长部分中,指定以下内容:
在通知间隔时间列表中,选择您希望接收通知的频率。
在突发事件自动关闭时长列表中,选择 Cloud Logging 在多久后停止发送通知并自动关闭突发事件。
点击下一步。
在应通知的人员部分中,为 Logging 指定通知渠道,以便向其发送通知。
点击保存。
跨预留管理维护
您可以按如下方式查看和控制预留、预留块和预留子块的维护:
如需查看预留、预留块或预留子块即将进行的维护的状态和安排时间,请查看维护状态。
如需在预留、预留块或预留子块上手动启动维护,而不是等待预定的维护日期和时间,请参阅手动启动维护。
如需管理在计算实例的主机因主机错误或主机故障报告而需要紧急、计划外维护时,您希望提前多久收到通知,请管理硬件紧急维护通知。
查看维护状态
您可以通过检查预留、预留块或预留子块的元数据中 upcomingGroupMaintenance 字段的值,查看即将进行的维护的状态。如果预留缺少 upcomingGroupMaintenance 字段,则表示未为相应预留、预留块或预留子块安排维护。如需详细了解 upcomingGroupMaintenance 中的字段,请参阅 Compute Engine 文档中的维护状态定义。
此外,如果预订块或子块已安排维护,则 upcomingGroupMaintenance 字段会包含 maintenanceReasons 字段。此字段用于说明为何为预留块或子块安排了维护,如下表所示:
| 维护类型 | 维护原因 | 计算实例状态 |
|---|---|---|
| 报告有故障的主机后的计划内维护 | FAILURE_GPU_CUSTOMER_REPORTED |
仅适用于在您报告为有故障的主机上运行的实例。 |
| 计划内维护(常规维护) |
|
适用于正在运行、已停止或已暂停的实例。 |
| 计划外紧急维护 |
|
仅适用于正在运行的实例。 |
如需查看预留块或子块中的 maintenanceReasons 字段,或查看子块的维护状态,您必须使用 gcloud CLI 或 REST API。否则,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往预留页面。
在维护状态列中,Compute Engine 会显示预留的维护状态。如果您在按需预留表格中没有看到此列,请点击 列显示选项,选中维护状态复选框,然后点击确定。
如需查看预留块的维护状态,请完成以下步骤:
在名称列中,点击预留的名称。系统会显示一个提供相应预留详细信息的页面。
在块表格的维护列中,Compute Engine 会显示预留中块的维护状态。
gcloud
如需查看预留的维护状态,请使用
gcloud compute reservations describe命令,并将--flatten标志设置为resourceStatus.reservationMaintenance:gcloud compute reservations describe RESERVATION_NAME \ --flatten=resourceStatus.reservationMaintenance \ --zone=ZONE替换以下内容:
RESERVATION_NAME:预留的名称。ZONE:预留所在的可用区。
输出类似于以下内容之一:
如果预留已安排维护,则输出类似于以下内容:
--- maintenanceOngoingCount: 0 maintenancePendingCount: 6 schedulingType: GROUPED upcomingGroupMaintenance: canReschedule: true maintenanceStatus: PENDING type: SCHEDULED windowEndTime: '2025-11-13T14:00:00.000-08:00' windowStartTime: '2025-11-13T12:00:00.000-08:00'如果
schedulingType字段设置为INDEPENDENT,则upcomingGroupMaintenance字段不会包含windowStartTime和windowEndTime字段。如需查看在预留主机上运行的实例何时安排了维护,请查看该实例的维护状态。如果您的预订未安排维护,则输出类似于以下内容:
--- schedulingType: GROUPED
如果您的预留已安排维护,如需查看预留中块的维护状态,请使用
gcloud compute reservations blocks list命令:gcloud compute reservations blocks list RESERVATION_NAME \ --zone=ZONE如果预留块已安排维护或正在进行维护,则输出类似于以下内容:
--- ... name: example-fr-a3u-dense-1-block-0001 ... reservationBlockMaintenance: maintenanceOngoingCount: 0 maintenancePendingCount: 6 schedulingType: GROUPED upcomingGroupMaintenance: canReschedule: true maintenanceReasons: - PLANNED_UPDATE - PLANNED_NETWORK_UPDATE maintenanceStatus: PENDING type: UNSCHEDULED windowEndTime: '2025-11-13T14:00:00.000-08:00' windowStartTime: '2025-11-13T12:00:00.000-08:00' ... --- ... name: example-fr-a3u-dense-1-block-0002 ... schedulingType: GROUPED ...如果预留块已安排维护,如需查看预留块中子块的维护状态,请使用
gcloud compute reservations sub-blocks list命令:gcloud compute reservations sub-blocks list RESERVATION_NAME \ --block-name=BLOCK_NAME \ --zone=ZONE将
BLOCK_NAME替换为预留中存在的块的名称。如果预留子块已安排维护或正在进行维护,则输出类似于以下内容:
... reservationSubBlockMaintenance: instanceMaintenanceOngoingCount: 0 instanceMaintenancePendingCount: 3 maintenanceOngoingCount: 0 maintenancePendingCount: 32 schedulingType: GROUPED subblockInfraMaintenanceOngoingCount: 0 subblockInfraMaintenancePendingCount: 0 upcomingGroupMaintenance: canReschedule: true maintenanceReasons: - PLANNED_UPDATE - PLANNED_NETWORK_UPDATE maintenanceStatus: PENDING type: SCHEDULED windowEndTime: '2025-11-13T14:00:00.000-08:00' windowStartTime: '2025-11-13T12:00:00.000-08:00' ...
REST
如需查看预留的维护状态,请向以下方法之一发出
GET请求:如需查看所有可用区中的预留,请使用
reservations.aggregatedList方法。如需查看特定可用区中的预留,请使用
reservations.list方法。
在请求网址中,添加以下查询参数:
如需仅显示预留的名称、预留的机器类型和维护状态,请添加设置为
items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance的fields查询参数。如需仅按指定特定机器类型的预留进行过滤,请使用网址编码的值添加设置为
specificReservation.instanceProperties.machineType:MACHINE_TYPE的filter查询参数。
例如,如需查看所有可用区中的预留,请发出
GET请求,如下所示:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/reservations?fields=items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance&filter=specificReservation.instanceProperties.machineType%3AMACHINE_TYPE替换以下内容:
PROJECT_ID:预留所在项目的 ID。MACHINE_TYPE:您要用于过滤预留的预留机器类型。
如果预留已安排维护或正在进行维护,则输出内容类似于以下内容:
{ "items": [ { "specificReservation": { "instanceProperties": { "machineType": "MACHINE_TYPE" } }, "name": "example-reservation", "resourceStatus": { "reservationMaintenance": { maintenanceOngoingCount: 0, maintenancePendingCount: 6, "schedulingType": "GROUPED", "upcomingGroupMaintenance": { "type": "SCHEDULED", "canReschedule": true, "windowStartTime": "2025-11-13T12:00:00.000-08:00", "windowEndTime": "2025-11-13T14:00:00.000-08:00", "maintenanceStatus": "PENDING" } } } }, ... ] }(可选)如需进一步缩小计算实例列表的范围,请将
filter查询参数设置为其他过滤表达式。如果预留已安排维护,那么如需查看预留中块的维护状态,请向
reservationBlocks.list方法发出GET请求。在请求网址中添加fields查询参数并设置为items.name,items.reservationMaintenance:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks?fields=items.name,items.reservationMaintenance将
RESERVATION_NAME替换为预留的名称。如果预留块已安排维护或正在进行维护,则输出类似于以下内容:
{ "items": [ { "name": "example-fr-a3u-dense-1-block-0001", "reservationBlockMaintenance": { "maintenanceOngoingCount": 0, "maintenancePendingCount": 6, "schedulingType": "GROUPED", "upcomingGroupMaintenance": { "type": "SCHEDULED", "canReschedule": true, "windowStartTime": "2025-11-13T12:00:00.000-08:00", "windowEndTime": "2025-11-13T14:00:00.000-08:00", "maintenanceStatus": "PENDING", "maintenanceReasons": [ "PLANNED_UPDATE", "PLANNED_NETWORK_UPDATE" ] } } }, ... ] }如果某个块的
schedulingType字段设置为INDEPENDENT,则upcomingGroupMaintenance字段不会包含windowStartTime和windowEndTime字段。如需查看在预留块上运行的实例何时安排了维护,请查看该实例的维护状态。如果预留块已安排维护,那么如需查看预留块中子块的维护状态,请向
reservationSubBlocks.list方法发出GET请求:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks将
BLOCK_NAME替换为预留中存在的块的名称。如果预留子块已安排维护或正在进行维护,则输出类似于以下内容:
{ "items": [ { "name": "example-fr-a3u-dense-1-block-0001", "reservationSubBlockMaintenance": { "instanceMaintenanceOngoingCount": 0, "instanceMaintenancePendingCount": 3, "maintenanceOngoingCount": 0, "maintenancePendingCount": 6, "schedulingType": "GROUPED", "subblockInfraMaintenanceOngoingCount": 0, "subblockInfraMaintenancePendingCount": 0, "upcomingGroupMaintenance": { "type": "SCHEDULED", "canReschedule": true, "windowStartTime": "2025-11-13T12:00:00.000-08:00", "windowEndTime": "2025-11-13T14:00:00.000-08:00", "maintenanceStatus": "PENDING", "maintenanceReasons": [ "PLANNED_UPDATE", "PLANNED_NETWORK_UPDATE" ] } } }, ... ] }
手动启动维护
您可以手动开始预留、预留块或预留子块的维护,而无需等待预定时间。此操作有助于您更主动地控制工作负载的中断。
根据预留、预留块或预留子块的维护状态,会发生以下情况:
| 维护状态 | 说明 | 看到的内容 |
|---|---|---|
| 已安排 | Compute Engine 已为预留安排了维护。您可以在预定时间之前手动开始维护。 |
|
| 进行中 | 维护正在进行中。您无法重新安排。 |
|
| 已完成 | 维护已完成。Compute Engine 已从实例中移除所有维护通知。 |
|
如需手动启动预留块内特定宿主的维护,或手动启动预留子块的维护,请使用 gcloud CLI 或 REST API。否则,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往预留页面。
在名称列中,点击预留的名称。系统会显示一个提供相应预留详细信息的页面。
点击运行维护,然后选择以下选项之一:
如需对所有块开始维护,请选择所有容量。
如需仅对包含正在运行的实例的块启动维护,请选择使用中的容量。
如需仅对未使用的块以及包含已停止或已暂停实例的块启动维护,请选择未使用的容量。
点击确定进行确认。
gcloud
如需开始维护预留,请使用
gcloud compute reservations perform-maintenance命令:gcloud compute reservations perform-maintenance RESERVATION_NAME \ --scope=RESERVATION_MAINTENANCE_SCOPE \ --zone=ZONE如需在预留块上开始维护,请使用
gcloud compute reservations blocks perform-maintenance命令:gcloud compute reservations blocks perform-maintenance RESERVATION_NAME \ --block-name=BLOCK_NAME \ --scope=BLOCK_MAINTENANCE_SCOPE \ --zone=ZONE如需在预留子块上开始维护,请使用
gcloud compute reservations sub-blocks perform-maintenance命令:gcloud compute reservations sub-blocks perform-maintenance RESERVATION_NAME \ --block-name=BLOCK_NAME \ --subblock-name=SUB_BLOCK_NAME \ --zone=ZONE
替换以下内容:
RESERVATION_NAME:预留的名称。RESERVATION_MAINTENANCE_SCOPE:预留的维护范围。请指定以下某个值:如需为所有区块启动维护,请执行以下操作:
all如需仅对运行实例的区块启动维护,请执行以下操作:
running如需仅对未使用的块以及包含已停止或已暂停实例的块启动维护,请运行以下命令:
unused
BLOCK_NAME:预留中存在的块的名称。SUB_BLOCK_NAME:预留块中存在的子块的名称。BLOCK_MAINTENANCE_SCOPE:预留块的维护范围。请指定以下某个值:如需在所有主机上启动维护,请执行以下操作:
all仅对运行实例的宿主机启动维护:
running如需仅在未使用的主机以及已停止或已暂停实例的主机上开始维护,请运行以下命令:
unused
ZONE:预留所在的可用区。
REST
如需开始对预留进行维护,请向
reservations.performMaintenance方法发出POST请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/performMaintenance { "maintenanceScope": "RESERVATION_MAINTENANCE_SCOPE" }如需开始对预留块进行维护,请向
reservationBlocks.performMaintenance方法发出POST请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/performMaintenance { "maintenanceScope": "BLOCK_MAINTENANCE_SCOPE" }如需开始对预留子块进行维护,请向
reservationSubBlocks.performMaintenance方法发出POST请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAME/performMaintenance { "maintenanceScope": "BLOCK_MAINTENANCE_SCOPE" }
替换以下内容:
PROJECT_ID:Compute Engine 自动创建预留的项目 ID。ZONE:预留所在的可用区。RESERVATION_NAME:预留的名称。RESERVATION_MAINTENANCE_SCOPE:预留的维护范围。请指定以下某个值:如需为所有区块启动维护,请执行以下操作:
ALL如需仅对运行实例的区块启动维护,请执行以下操作:
RUNNING如需仅对未使用的块以及包含已停止或已暂停实例的块启动维护,请运行以下命令:
UNUSED
BLOCK_NAME:预留中存在的块的名称。SUB_BLOCK_NAME:预留块中存在的子块的名称。BLOCK_MAINTENANCE_SCOPE:预留块的维护范围。请指定以下某个值:如需在所有主机上启动维护,请执行以下操作:
ALL仅对运行实例的宿主机启动维护:
RUNNING如需仅在未使用的主机以及已停止或已暂停实例的主机上开始维护,请运行以下命令:
UNUSED
管理硬件紧急维护通知
当实例遇到主机错误或您报告其主机出现故障后,该实例的主机需要进行紧急的临时维护。默认情况下,Compute Engine 在安排此类维护时会提前数小时发出通知。对于预留主机,您可以启用紧急维护通知,将此通知期延长至至少七天。此方法有助于您更主动地控制工作负载中断。
如需为预留启用或停用硬件紧急维护通知,请选择以下选项之一:
gcloud
如需为预留启用硬件紧急维护通知,请使用
gcloud compute reservations update命令,并添加--enable-emergent-maintenance标志:gcloud compute reservations update RESERVATION_NAME \ --enable-emergent-maintenance \ --zone=ZONE如需针对预留停用硬件紧急维护通知,请使用
gcloud compute reservations update命令并带上--no-enable-emergent-maintenance标志:gcloud compute reservations update RESERVATION_NAME \ --no-enable-emergent-maintenance \ --zone=ZONE
替换以下内容:
RESERVATION_NAME:预留的名称。ZONE:预留所在的可用区。
REST
如需为预留启用或停用硬件紧急维护通知,请向 reservations.update 方法发出 PATCH 请求。在请求网址中添加 paths 查询参数并设置为 enableEmergentMaintenance。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=enableEmergentMaintenance
{
"name": "RESERVATION_NAME",
"enableEmergentMaintenance": EMERGENCY_MAINTENANCE_NOTIFICATIONS
}
替换以下内容:
PROJECT_ID:预留所在项目的 ID。ZONE:预留所在的可用区。RESERVATION_NAME:预留的名称。EMERGENCY_MAINTENANCE_NOTIFICATIONS:请指定以下某个值:如需启用通知,请执行以下操作:
true如需停用通知,请执行以下操作:
false