关于 gke-tpu-metrics-monitoring
面向 GKE TPU 工作负载运维的监控指南,帮助 Agent 通过 GKE 系统指标检查加速器、节点和节点池状态,以分析中断或性能问题。
主要功能
- 01检查 TPU 运行时指标配置
- 02监控加速器利用率与内存
- 03查询节点和节点池状态
- 04分析节点中断及原因
- 05计算恢复与中断间隔指标
适用场景
- 01排查 TPU 工作负载中断
- 02检查节点是否就绪
- 03监控多主机 TPU 节点池可用性
- 04评估加速器恢复和中断情况
MCP 相关
输入未说明与 MCP 的关系。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ google/ skills --skill gke-tpu-metrics-monitoring安装后在 Claude Code 中输入/gke-tpu-metrics-monitoring确认已加载。
附带文件references/failure_signatures.mdscripts/validate_queries.sh
详细介绍
GKE TPU 指标监控指南
此技能可让 Agent 使用 GKE 系统指标监控 GKE TPU 工作负载、节点和节点池,帮助诊断工作负载中断或性能问题是否由底层基础设施导致。
步骤 0:必需的上下文
使用可用的 GKE 和 Cloud 工具独立收集所需上下文(例如集群详情或节点池名称),或使用提供的 {variable} 占位符:
{project_id}:GCP 项目 ID。{cluster_name}:GKE 集群名称。{location}:GKE 集群位置(区域或可用区)。{node_name}:(可选)特定 GKE 节点的名称。{node_pool_name}:(可选)GKE 节点池的名称。
诊断步骤
步骤 1:验证 TPU 运行时指标配置 [Low Risk] [Auto]
在分析运行时指标之前,请验证工作负载是否已配置为导出这些指标。
- 操作:验证 TPU 工作负载的 Pod 规范是否包含:
containerPort: 8431- JAX 版本为
0.4.14或更高版本(如果使用 JAX)。 - GKE 版本为
1.27.4-gke.900或更高版本。 - 集群已启用 GKE 系统指标。
步骤 2:监控 TPU 运行时指标 [Low Risk] [Auto]
如果配置正确,Cloud Monitoring 中将提供以下指标(受监控资源为 k8s_node 和 k8s_container):
- 容器指标:
kubernetes.io/container/accelerator/duty_cycle:过去采样周期(60 秒)内,TPU 芯片上的 TensorCore 处于活动处理状态的时间百分比。kubernetes.io/container/accelerator/memory_used:已分配的加速器内存量(字节)。kubernetes.io/container/accelerator/memory_total:加速器内存总量(字节)。
- 节点指标:
kubernetes.io/node/accelerator/duty_cyclekubernetes.io/node/accelerator/memory_usedkubernetes.io/node/accelerator/memory_total
步骤 3:检查节点状态条件 [Low Risk] [Auto]
查询 GKE 节点的状态条件(GKE 版本为 1.32.1-gke.1357001 或更高版本)。
- PromQL 查询(检查特定节点是否为 Ready):
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", node_name="{node_name}", condition="Ready", status="True"} - PromQL 查询(列出条件为 True 且状态非 Ready 的节点):
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition!="Ready", status="True"} - PromQL 查询(列出状态非 Ready 的节点):
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition="Ready", status="False"} - PromQL 查询(整个 Fleet 的节点状态):
avg by (condition,status)(avg_over_time(kubernetes_io:node_status_condition{monitored_resource="k8s_node"}[5m]))
步骤 4:检查节点池状态 [Low Risk] [Auto]
查询多主机 TPU 节点池的状态。
- PromQL 查询(验证特定节点池是否正在运行):
kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}", node_pool_name="{node_pool_name}", status="Running"} - PromQL 查询(按状态分组监控节点池):
可能的状态:count by (status)(count_over_time(kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool"}[5m]))Provisioning、Running、Error、Reconciling、Stopping。
步骤 5:检查节点池可用性 [Low Risk] [Auto]
查询多主机 TPU 节点池中的所有节点是否都可用。
- PromQL 查询(检查一段时间内的可用性):
值:avg by (node_pool_name)(avg_over_time(kubernetes_io:node_pool_multi_host_available{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}"}[5m]))1(True,所有节点均可用)或0(False,部分节点不可用)。
步骤 6:分析节点中断 [Low Risk] [Auto]
查询 GKE 节点的中断次数。
- PromQL 查询(按类型和原因细分中断):
中断类型:sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node"}[5m]))TerminationEvent、MaintenanceEvent、PreemptionEvent。 中断原因:HostError、Eviction、AutoRepair。 - PromQL 查询(筛选主机维护事件):
sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node", interruption_reason="HW/SW Maintenance"}[5m])) - PromQL 查询(按节点池汇总中断次数):
sum by (node_pool_name,interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_pool_interruption_count{monitored_resource="k8s_node_pool", interruption_reason="HW/SW Maintenance", node_pool_name="{node_pool_name}"}[5m]))
步骤 7:计算恢复和中断指标 [Low Risk] [Auto]
计算过去 7 天的平均恢复时间(MTTR)和平均中断间隔(MTBI)。
- PromQL 查询(MTTR - 平均恢复时间):
sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_sum{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}"}[7d])) / sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_count{monitored_resource="k8s_node_pool",cluster_name="{cluster_name}"}[7d])) - PromQL 查询(MTBI - 平均中断间隔):
sum(count_over_time(kubernetes_io:node_memory_total_bytes{monitored_resource="k8s_node", node_name=~"gke-tpu.*|gk3-tpu.*", cluster_name="{cluster_name}"}[7d])) / sum(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node", node_name=~"gke-tpu.*|gk3-tpu.*", cluster_name="{cluster_name}"}[7d]))
步骤 8:监控 TPU 主机指标 [低风险] [自动]
对于 1.28.1-gke.1066000 或更高版本的 GKE,请监控 TPU 主机性能。
- 容器指标:
kubernetes.io/container/accelerator/tensorcore_utilization:TensorCore 当前的利用率百分比。kubernetes.io/container/accelerator/memory_bandwidth_utilization:加速器内存带宽当前的使用率百分比。
- 节点指标:
kubernetes.io/node/accelerator/tensorcore_utilizationkubernetes.io/node/accelerator/memory_bandwidth_utilization
评论
支持 Markdown