本页面介绍了如何管理针对 AI 进行了优化的 Google Kubernetes Engine (GKE) 集群,这些集群使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)机器,包括以下与 GKE 集群和 AI 工作负载相关的常见事件:
- 宿主机维护
- 集群升级
- 故障主机报告
管理 AI 工作负载的宿主机维护
GKE 节点在 Compute Engine 实例上运行,这些实例会定期 遇到 主机事件,这些事件 可能会中断 AI 工作负载。由于主机事件发生在底层 Google Cloud 基础架构上,因此它们会绕过 GKE 维护窗口和排除项。 虽然大多数计算实例的主机维护政策都设置为 实时 迁移,这 可以最大限度地减少工作负载的中断,但 GPU 和 TPU 不支持实时迁移。 当这些主机事件影响运行 AI 工作负载的 GKE 节点时,GKE 必须终止节点以及在该节点上运行的 Pod。如果 Pod 是作为更大的工作负载(例如 作业或 部署)的一部分部署的, GKE 会尝试在受影响的节点上重启 Pod。
如需详细了解如何管理底层计算 实例的宿主机维护,请参阅 管理 GPU 和 TPU 的 GKE 节点中断。
监控主机维护事件
对于运行 GKE 1.31.1-gke.2008000 版或更高版本的集群,您可以通过以下方式查看主机维护事件的计划开始时间。对于所有 GPU 和 TPU,开始时间由相应 GKE 节点上的 Kubernetes 节点标签表示。
如需了解详情,请参阅监控维护 通知。
借助这些节点标签,您可以执行以下操作:
手动启动主机维护事件
在 Compute Engine 发出有关计划维护事件的通知后,您可以手动启动与您的计划一致的维护。例如,您可以选择在活动减少期间执行维护。
如果您不手动启动主机维护事件,Compute Engine 将自动完成定期计划的维护。
请按照说明手动启动主机维护事件。此外,请继续阅读本部分,了解以下内容:
在调度工作负载时使用主机维护信息
您可以结合使用通过 GKE 节点 标签显示维护信息以及 节点亲和性和 反亲和性 最大限度地减少对工作负载的中断。
如需查看如何使用此信息的示例,请参阅以下部分。
将 Pod 调度到没有未来计划维护事件的节点
您可以指示 GKE 仅将 Pod 调度到没有未来计划维护事件的节点,例如使用以下代码段:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/scheduled-maintenance-time
operator: DoesNotExist
将 Pod 调度到在特定日期之后安排了维护的节点
您可以提供 Unix 时间戳,指示 GKE 仅将 Pod 调度到在特定日期之后安排了维护的节点:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/scheduled-maintenance-time
operator: Gt
values:
- 1733296000
管理 AI 工作负载的 GKE 集群升级
AI 工作负载对中断很敏感。
在 GKE 集群的生命周期内,AI 工作负载必须为底层计算实例以及 GKE 集群本身的中断做好准备:
- 宿主机维护:如需管理底层计算 实例的宿主机维护,请参阅 管理 GPU 和 TPU 的 GKE 节点中断。 前面的部分也介绍了这一点。
- 集群升级:如需管理 集群升级造成的中断,您可以使用以下 工具:
我们建议您让集群在发布渠道中注册。 默认情况下,GKE 集群会在常规发布渠道中注册。如需详细了解发布渠道的优势,请参阅 已在发布渠道中注册和未在发布渠道中注册的集群之间的比较。
借助发布渠道,您可以访问更多功能,包括额外的 维护排除项 范围。 我们建议 AI 工作负载使用“无次要升级或节点升级”范围。
通过 GKE 报告故障主机
本部分介绍了如何通过 GKE 报告使用 预留绑定预配模型预配了计算实例的故障 主机。 如果您想为使用 灵活启动预配模型 (预览版) 预配的节点报告故障主机,请改为 与您的客户支持团队联系。
主机是指数据中心内运行计算实例的单个物理服务器
机器,该计算实例托管您的
GKE 节点。您可以通过将 fault-behavior 节点标签应用于受影响的 GKE 节点来报告故障主机。将节点标签应用于特定 GKE 节点后,GKE 会执行以下步骤:
- 正常逐出节点中的工作负载。
- 防止在该节点上调度新的 Pod。
- 调用计算实例上的 API,将主机标记为故障。
- 等待计算实例在健康的主机机器上恢复运行。对于使用 全容量预留运行模式的预留, Compute Engine 会在修复操作完成后在同一节点上恢复计算实例。
- 从节点中移除污点和
fault-behavior标签。
之后,该节点将再次准备好为工作负载提供服务。
要求
如需报告故障主机,您的 GKE 节点必须满足以下要求:
- 您必须运行 GKE 补丁版本 1.32.3-gke.1057001 或更高版本。
- 您必须运行以下 GPU 机器类型之一:A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)。
- 您必须在 绑定到预留的计算实例上运行 GKE 节点。
- 您的 GKE 节点必须处于
RUNNING状态。如果您尝试在删除计算实例后报告故障主机,系统会返回错误消息,并且宿主机不会被标记为故障。 - 根据对块健康状况的评估,您可能会受到每个预留每月对此 API 的调用次数的速率限制。如果您的预留使用全容量预留运行模式,则速率限制不适用。
报告故障主机
如需报告故障主机,请执行以下操作:
使用 GKE 可观测性工具、 您自己的监控工具或日志来识别 遇到性能问题的 GKE 节点。保存
NODE_NAME。使用以下命令将节点报告为故障。您可以提供原因,并且在更高版本中,还可以提供说明:
kubectl patch node NODE_NAME --type merge -p '{ "metadata": { "labels": { "cloud.google.com/fault-behavior": "FAULT_REASON" }, "annotations": { "cloud.google.com/fault-description": "FAULT_DESCRIPTION" } } }'按如下方式修改命令:
- 将
NODE_NAME替换为故障 节点的名称。 - 使用以下一个或多个值将
FAULT_REASON替换为相应的故障 原因:PERFORMANCE:如果计算实例上的 GPU 的运行速度比集群中的其他 GPU 慢,并且您在日志中没有看到任何 XID 错误,也没有检测到其他常见的故障模式(例如静默数据损坏),请使用此值。SDC:如果您看到数据 损坏但没有系统崩溃,请使用此值表示静默数据损坏。此数据损坏可能是由 CPU 缺陷、软件 bug(例如释放后使用或内存覆盖)、内核问题或其他缺陷引起的。通常,此术语 用于指硬件引起的缺陷。XID:如果您发现计算实例存在 XID 对应的不可恢复的 GPU 错误 ,请使用此值。unspecified:如果您不确定是什么行为导致计算实例出现问题,请使用此值。这是默认 值。但是,我们建议您指定其他值之一, 如果适用。
- 根据 GKE 集群的控制平面版本调整
annotations块:- 1.35.6-gke.1017000 或更高版本,或 1.36.0-gke.3251000 或更高版本:
保留注释块,并将
FAULT_DESCRIPTION替换为 观察到的故障的文本说明。这可以包括 XID 错误代码、 症状或时间戳。此说明会转发给 Compute Engine 以帮助进行修复诊断,并在操作完成后自动从节点中移除。 例如:GPU XID 48 observed on device nvidia0 at 2026-06-10T10:30:00Z。 - 早期版本:从命令中移除整个
annotations块,从 命令中。在这些版本中,fault-description字段不会转发给 Compute Engine,也不会自动 从节点中移除。请改为与您的客户支持团队或 Cloud Customer Care 联系,以提供故障详情。
- 1.35.6-gke.1017000 或更高版本,或 1.36.0-gke.3251000 或更高版本:
保留注释块,并将
- 将
reservationOperationalMode 字段。
下表总结了两种可用的预留运行
模式(全容量模式和托管模式)的故障主机流程。
全容量模式 (ALL_CAPACITY) |
托管模式 (HIGHLY_AVAILABLE_CAPACITY) |
|
|---|---|---|
| 支持的机器类型 | A4X Max 和 A4X | A4、A3 Ultra、A3 Mega 和 A3 High |
| 故障主机报告 API 速率限制 | 没有速率限制。 | 对 API 的调用可能会受到速率限制。 |
| 故障主机报告流程 |
当您为以全容量模式运行的节点报告故障主机时,会发生以下情况:
|
当您为以托管模式运行的节点报告故障主机时,会发生以下情况:
|
监控操作进度
您可以使用 GKE 节点上的 cloud.google.com/report-and-replace-status 节点标签监控 GKE 操作的进度,该标签具有以下值之一:
PodsEvicted:GKE 已完成从受影响的节点逐出 Pod。OperationRUNNING:报告故障主机的操作正在运行。OperationDONE:底层主机已报告为故障,GKE 节点已准备好移至新主机。OperationFAILED:由于配额限制或其他基础架构问题,计算实例上的 API 失败。请参阅 排查报告故障主机 API 错误。 GKE 会移除cloud.google.com/fault-behavior节点标签并清除节点污点。您可以重新应用该标签以重试操作。Error:报告故障主机的 API 调用失败,因为请求 不满足上一部分中所述的 要求之一。
您还可以查看 cloud.google.com/report-and-replace-operation 节点标签
以查看 Compute Engine 操作 ID 来监控操作的
状态。
您可以使用以下命令查看这两个节点标签:
kubectl get nodes NODE_NAME \
-L cloud.google.com/report-and-replace-status,cloud.google.com/report-and-replace-operation
如果发生 API 调用错误,GKE 会将节点标签设置为 cloud.google.com/report-and-replace-status=ERROR。如果计算实例上的 API 失败,GKE 会将节点标签设置为 cloud.google.com/report-and-replace-status=OperationFAILED。在这两种情况下,GKE 都会清除节点污点并移除 cloud.google.com/fault-behavior 节点标签。
如需了解如何跟踪报告故障主机操作的详细状态,请参阅查看报告故障主机操作。
如需针对瞬时错误(例如速率限制)重试操作,请将 cloud.google.com/fault-behavior 标签重新应用于节点。
后续步骤
了解如何 通过拓扑感知调度安排 GKE 工作负载。
了解如何 使用 NCCL/gIB 优化集群网络。
了解如何 排查报告故障主机 API 错误。