SuperAPI AI 工具集

gke-ai-troubleshooting-tpu-reservation-stockout

部署与运维

查看项目

更新于 10-17 14:34

技能介绍

用途

本技能针对 GKE Standard 集群中 TPU 节点池创建或扩容失败的问题提供诊断流程。典型场景是:节点池已经指定了 Compute Engine TPU 预留,但创建时仍返回 GCE_STOCKOUT、ZONE_RESOURCE_POOL_EXHAUSTED、ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS,或因容量不足而进入排队(提示 cannot be created ... due to lack of capacity)。核心判断依据是预留的可用槽位(specificReservation.count - specificReservation.inUseCount)是否小于新节点池所需的节点数;在多主机 TPU 切片节点池中,只要一个节点无法部署,整个切片节点池都不会部署。

主要能力

  • 通过 Cloud Audit Logs 与 GKE 操作列表确认 stockout 或容量错误。
  • 查询 Compute Engine 预留利用率,比较 inUseCount 与 count 判断可用槽位是否充足。
  • 列出占用预留的虚拟机,并结合 GKE 自动标签(goog-k8s-cluster-name、goog-k8s-cluster-location、goog-k8s-node-pool-name)定位其所属集群与节点池。
  • 使用 Cloud Monitoring 指标 kubernetes_io:node_status_condition 查找 Ready 状态为 False 或 Unknown 的节点。
  • 检查泄漏节点池的 management.autoRepair 配置,判断 NotReady 节点是否因未启用自动修复而持续占用预留容量。
  • 根据情况给出修复建议,例如为现有节点池启用自动修复,或通过 GKE 删除陈旧节点池以释放槽位,并在删除后复核预留可用槽位。

使用方式

先收集环境参数:{project_id}、{cluster_name}、{location}、{failing_nodepool_name}、{reservation_name}、{reservation_project_id}、{zone} 与 {issue_time},默认查询问题时间前后各 30 分钟的 60 分钟窗口。随后按诊断流程执行:确认错误与预留利用率、定位占用预留的虚拟机与节点池、验证泄漏节点池的自动修复状态、给出恢复或释放容量的处置建议。所需 IAM 角色包括 Logs Viewer、Monitoring Viewer、Kubernetes Engine Viewer、Compute Viewer;修复步骤需要 Kubernetes Engine Cluster Admin。需要安装 gcloud 与 kubectl,项目需绑定有效结算账号并启用 container、compute、logging、monitoring 相关 API。

适用场景与限制

仅适用于 Standard 集群;Autopilot 集群始终自动修复节点且无法关闭。技能遵循只读规则:只运行只读诊断命令,不直接排空、删除或重建节点,也不修改 GKE 托管的实例组或虚拟机,修复操作交由用户自行执行。共享预留需在拥有该预留的项目中查询。单个项目列出的占用虚拟机数量可能少于 inUseCount,差额可能由共享该预留的其他项目占用。如果预留槽位由健康且正在使用的节点池持有,则不存在泄漏,不应删除或重启这些健康节点池。技能本身不提供具体费用或价格信息。