mcpField
G
gke-tpu-dynamic-slices-monitoring

gke-tpu-dynamic-slices-monitoring

github.com/google云与 DevOps21.6k527 次安装今天更新
代码仓库

关于 gke-tpu-dynamic-slices-monitoring

用于排查和管理 GKE TPU 动态切片的技能,可检查切片状态、定位配置问题并指导清理。对移除 finalizer 等高风险操作要求先取得用户确认。

主要功能

  1. 01检查 TPU Slice 状态与条件
  2. 02排查切片创建和预配失败
  3. 03验证动态切片工作负载配置
  4. 04指导卡住切片的清理
  5. 05高风险变更前要求确认

适用场景

  1. 01诊断切片未创建或状态异常
  2. 02核对 Pod 与 JobSet 配置
  3. 03处理停滞的切片删除
  4. 04评估禁用切片控制器的清理步骤

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/google/skills --skill gke-tpu-dynamic-slices-monitoring

安装后在 Claude Code 中输入/gke-tpu-dynamic-slices-monitoring确认已加载。

附带文件references/failure_signatures.mdscripts/validate_queries.sh

详细介绍

GKE TPU 动态切片监控与管理

监控 TPU Slice 自定义资源的状态,排查预配失败问题,验证动态切片上的工作负载清单,并执行清理。

前提条件

  • 项目已启用 Cloud Logging。
  • 已配置 kubectl 和 gcloud CLI,以访问 GKE 集群。

诊断工作流

步骤 0:获取上下文并定义时间范围

使用集群工具或以下参数收集项目、集群和切片的上下文信息:

  • 项目 ID:{project_id}(例如:my-gcp-project)
  • 集群名称:{cluster_name}(例如:tpu-cluster)
  • 区域/可用区:{location}(例如:us-central1-a)
  • 切片名称:{slice_name}(例如:test-slice)
  • 问题发生时间:{timestamp}(可选;默认采用最近 30 分钟的时间范围 [T - 30m] 至 [T + 30m])

步骤 1:描述切片自定义资源[低风险]

当用户要求检查、排查或查看切片状态时,立即使用可用的集群工具执行 kubectl describe slice {slice_name} 进行检查。根据下方条件表解析输出中的 Status.Conditions,以诊断具体状态并提供明确的建议。

  • 命令:

    kubectl describe slice {slice_name}
    
状态与原因分析

分析 Status.Conditions(尤其是 Type: Ready 及其 Reason 和 Status):

生命周期状态 / 原因含义建议操作
SliceNotCreatedGKE 切片控制器等待几分钟,然后重新
: : 正在初始化切片并执行 : 检查切片状态。 :
: : 资源检查。 : :
SliceCreationFailed前置条件验证失败验证所选节点是否存在、
: : (例如,所选节点不存在、: 未分配,且拓扑与分区数 :
: : 节点已被其他切片使用, : 匹配。 :
: : 或拓扑与分区数量不匹配)。: :
ACTIVATINGGKE 正在积极组建并监控节点预配情况。
: : 预配 TPU 切片。 : :
ACTIVETPU 切片已成功组建,开始部署或检查工作负载。
: : 已准备好托管工作负载。 : :
ACTIVE_DEGRADED切片可用,但一个或多个监控工作负载日志,查看
: : 子块处于降级状态。 : 是否存在互连或设备错误。 :
: : : 检查故障节点 VM。 :
FAILEDGKE 未能组建 TPU 切片确保所有所选节点都属于
: : (例如,所选节点不属于 : 同一预留块。 :
: : 同一预留块)。 : :
DEACTIVATING切片正在拆除(由用户等待拆除完成,或在卡住时
: : 删除或严重系统性故障 : 修补终结器。 :
: : 触发)。 : :
INCOMPLETESlice CR 从集群中删除无需操作;资源很快就会
: : 前的终止阶段。 : 被移除。 :
资源调配失败故障排查清单

调查切片创建或资源调配失败(SliceCreationFailed 或 FAILED)时,请执行以下验证步骤:

  1. 节点存在性与分配检查:确认所选 TPU 节点存在于集群中,且尚未分配给其他切片(kubectl get nodes -l cloud.google.com/gke-tpu-slice、kubectl get slice -A)。
  2. 拓扑匹配:确认分区数量与请求的拓扑维度匹配(例如,拓扑 2x2 需要 4 个节点)。
  3. 预留区块匹配检查:确认所有选定的 TPU 节点属于同一预留和预留区块。

步骤 2:验证工作负载规范 [低风险]

确保工作负载清单已正确配置为使用动态切片。

1. 单切片工作负载要求

检查 Pod 模板是否包含以下注解和选择器:

  • 注解:
    • cloud.google.com/gke-tpu-slice-topology: "{topology}"(例如, "4x4x4")
  • NodeSelector:
    • cloud.google.com/gke-tpu-topology: "{topology}"(例如,"4x4x4")
    • cloud.google.com/gke-tpu-accelerator: "{accelerator_type}"(例如, "tpu7x")
    • cloud.google.com/gke-tpu-slice: "{slice_name}"(例如,"test-slice")
2. 多切片(JobSet)工作负载要求

如果要部署多切片 JobSet,请确认:

  • JobSet 注解:
    • alpha.jobset.sigs.k8s.io/exclusive-topology: cloud.google.com/gke-tpu-slice
  • Pod 模板注解:
    • cloud.google.com/gke-tpu-slice-topology: "{topology}"
  • Pod 模板 NodeSelector:
    • cloud.google.com/gke-tpu-topology: "{topology}"
    • cloud.google.com/gke-tpu-accelerator: "{accelerator_type}"
    • 注意:请勿在 nodeSelector 中手动指定 cloud.google.com/gke-tpu-slice;JobSet 会自动处理切片分配。

解决与管理工作流

解决方案 1:强制删除卡住的切片 [高风险]

如果切片卡在 DEACTIVATING 状态,或因 finalizer 卡住而导致删除无限期挂起:

  1. 确定原因:说明切片资源上的 finalizer(metadata.finalizers)阻止 Kubernetes 完成资源删除。

  2. 提出解决方案:建议使用 JSON patch 操作从元数据路径(/metadata/finalizers)移除 finalizer:

    kubectl patch slice {slice_name} --type json -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
    
  3. 提供警告:明确提醒用户,移除 finalizer 会绕过标准控制器拆除流程,可能导致底层 VM、网络或加速器资源未被清理,或成为孤儿资源。

  4. 关键安全要求:回复必须明确询问用户是否确认(例如,“通过 JSON patch 移除 /metadata/finalizers 上的 finalizer 属于高风险操作,可能导致资源成为孤儿。确认要对切片 {slice_name} 应用此补丁吗?”),并在应用或执行补丁前暂停,等待用户确认。


解决方案 2:禁用并清理 Slice 控制器【高风险】

如果需要禁用动态切片:

  1. 检查现有的 Slice:

    kubectl get slice -A
    

    禁用控制器前,确保已删除所有 Slice。

  2. 通过 gcloud 禁用 Slice 控制器:

    gcloud container clusters update {cluster_name} \
        --location={location} \
        --no-enable-slice-controller
    
  3. 删除 Slice CRD:

    kubectl delete crd slices.accelerator.gke.io
    
  4. 清理节点标签:从集群中的所有节点移除 GKE TPU Slice 标签:

    kubectl label nodes --all cloud.google.com/gke-tpu-slice- cloud.google.com/gke-tpu-slice-topology-
    
  • 安全规则:提出准确的命令,并在执行禁用或破坏性清理步骤前确认。

评论

支持 Markdown