gke-tpu-metrics-monitoring
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGKE TPU Metrics Monitoring Guide
GKE TPU指标监控指南
This skill enables the agent to monitor GKE TPU workloads, nodes, and node pools using GKE system metrics. It helps diagnose if workload interruptions or performance issues are caused by underlying infrastructure.
本技能支持Agent使用GKE系统指标监控GKE TPU工作负载、节点及节点池,帮助诊断工作负载中断或性能问题是否由底层基础设施导致。
Step 0: Mandatory Context
步骤0:必备上下文
Independently gather required context (such as cluster details or node pool names) using available GKE and Cloud tools, or use the provided placeholders:
{variable}- : The GCP Project ID.
{project_id} - : The GKE Cluster Name.
{cluster_name} - : The GKE Cluster Location (region or zone).
{location} - : (Optional) The name of the specific GKE node.
{node_name} - : (Optional) The name of the GKE node pool.
{node_pool_name}
使用可用的GKE及云工具自行收集所需上下文(如集群详情或节点池名称),或使用提供的占位符:
{variable}- :GCP项目ID。
{project_id} - :GKE集群名称。
{cluster_name} - :GKE集群位置(区域或可用区)。
{location} - :(可选)特定GKE节点的名称。
{node_name} - :(可选)GKE节点池的名称。
{node_pool_name}
Diagnostic Steps
诊断步骤
Step 1: Verify TPU Runtime Metrics Configuration [Low Risk] [Auto]
步骤1:验证TPU运行时指标配置 [低风险] [自动]
Before analyzing runtime metrics, verify that the workload is configured to export them.
- Action: Verify that the Pod specification for the TPU workload includes:
containerPort: 8431- JAX version or later (if using JAX).
0.4.14 - GKE version is or later.
1.27.4-gke.900 - GKE System Metrics are enabled on the cluster.
分析运行时指标前,需验证工作负载已配置为导出指标。
- 操作:验证TPU工作负载的Pod规范包含以下内容:
containerPort: 8431- JAX版本为或更高版本(若使用JAX)。
0.4.14 - GKE版本为或更高版本。
1.27.4-gke.900 - 集群已启用GKE系统指标。
Step 2: Monitor TPU Runtime Metrics [Low Risk] [Auto]
步骤2:监控TPU运行时指标 [低风险] [自动]
If configured correctly, the following metrics are available in Cloud Monitoring (monitored resources and ):
k8s_nodek8s_container- Container Metrics:
- : Percentage of time over the past sampling period (60 seconds) during which the TensorCores were actively processing on a TPU chip.
kubernetes.io/container/accelerator/duty_cycle - : Amount of accelerator memory allocated in bytes.
kubernetes.io/container/accelerator/memory_used - : Total accelerator memory in bytes.
kubernetes.io/container/accelerator/memory_total
- Node Metrics:
kubernetes.io/node/accelerator/duty_cyclekubernetes.io/node/accelerator/memory_usedkubernetes.io/node/accelerator/memory_total
若配置正确,以下指标可在Cloud Monitoring中查看(监控资源为和):
k8s_nodek8s_container- 容器指标:
- :过去采样周期(60秒)内,TPU芯片上TensorCore处于活跃处理状态的时间占比。
kubernetes.io/container/accelerator/duty_cycle - :已分配的加速器内存大小(字节)。
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
Step 3: Check Node Status Condition [Low Risk] [Auto]
步骤3:检查节点状态条件 [低风险] [自动]
Query the status condition of GKE nodes (GKE version or later).
1.32.1-gke.1357001- PromQL Query (Check if a specific node is Ready):
promql
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", node_name="{node_name}", condition="Ready", status="True"} - PromQL Query (List nodes with non-Ready conditions that are True):
promql
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition!="Ready", status="True"} - PromQL Query (List nodes that are NOT Ready):
promql
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition="Ready", status="False"} - PromQL Query (Fleet-wide node status):
promql
avg by (condition,status)(avg_over_time(kubernetes_io:node_status_condition{monitored_resource="k8s_node"}[5m]))
查询GKE节点的状态条件(GKE版本或更高版本)。
1.32.1-gke.1357001- PromQL查询(检查特定节点是否就绪):
promql
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", node_name="{node_name}", condition="Ready", status="True"} - PromQL查询(列出存在非就绪状态条件的节点):
promql
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition!="Ready", status="True"} - PromQL查询(列出未就绪的节点):
promql
kubernetes_io:node_status_condition{monitored_resource="k8s_node", cluster_name="{cluster_name}", condition="Ready", status="False"} - PromQL查询(集群范围内节点状态):
promql
avg by (condition,status)(avg_over_time(kubernetes_io:node_status_condition{monitored_resource="k8s_node"}[5m]))
Step 4: Check Node Pool Status [Low Risk] [Auto]
步骤4:检查节点池状态 [低风险] [自动]
Query the status of multi-host TPU node pools.
- PromQL Query (Verify if a specific node pool is Running):
promql
kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}", node_pool_name="{node_pool_name}", status="Running"} - PromQL Query (Monitor node pools grouped by status):
Possible statuses:promql
count by (status)(count_over_time(kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool"}[5m])),Provisioning,Running,Error,Reconciling.Stopping
查询多主机TPU节点池的状态。
- PromQL查询(验证特定节点池是否处于运行状态):
promql
kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool", cluster_name="{cluster_name}", node_pool_name="{node_pool_name}", status="Running"} - PromQL查询(按状态分组监控节点池):
可能的状态:promql
count by (status)(count_over_time(kubernetes_io:node_pool_status{monitored_resource="k8s_node_pool"}[5m])),Provisioning,Running,Error,Reconciling.Stopping
Step 5: Check Node Pool Availability [Low Risk] [Auto]
步骤5:检查节点池可用性 [低风险] [自动]
Query if all nodes in a multi-host TPU node pool are available.
- PromQL Query (Check availability over time):
Value: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]))(True, all nodes available) or1(False, some nodes unavailable).0
查询多主机TPU节点池中的所有节点是否可用。
- PromQL查询(检查一段时间内的可用性):
取值: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(否,部分节点不可用)。0
Step 6: Analyze Node Interruptions [Low Risk] [Auto]
步骤6:分析节点中断情况 [低风险] [自动]
Query the count of interruptions for GKE nodes.
- PromQL Query (Breakdown of interruptions and causes):
Interruption Types:promql
sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource="k8s_node"}[5m])),TerminationEvent,MaintenanceEvent. Interruption Reasons:PreemptionEvent,HostError,Eviction.AutoRepair - PromQL Query (Filter for Host Maintenance events):
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 Query (Interruption count aggregated by node pool):
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]))
查询GKE节点的中断次数。
- PromQL查询(中断类型及原因细分):
中断类型: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查询(筛选主机维护事件):
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查询(按节点池聚合中断次数):
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]))
Step 7: Calculate Recovery and Interruption Metrics [Low Risk] [Auto]
步骤7:计算恢复与中断指标 [低风险] [自动]
Calculate Mean Time to Recovery (MTTR) and Mean Time Between Interruptions (MTBI) over the last 7 days.
- PromQL Query (MTTR - Mean Time to Recovery):
promql
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 Query (MTBI - Mean Time Between Interruptions):
promql
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]))
计算过去7天的平均恢复时间(MTTR)和平均中断间隔时间(MTBI)。
- PromQL查询(MTTR - 平均恢复时间):
promql
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 - 平均中断间隔时间):
promql
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]))
Step 8: Monitor TPU Host Metrics [Low Risk] [Auto]
步骤8:监控TPU主机指标 [低风险] [自动]
For GKE version or later, monitor TPU host performance.
1.28.1-gke.1066000- Container Metrics:
- : Current percentage of the TensorCore that is utilized.
kubernetes.io/container/accelerator/tensorcore_utilization - : Current percentage of the accelerator memory bandwidth that is being used.
kubernetes.io/container/accelerator/memory_bandwidth_utilization
- Node Metrics:
kubernetes.io/node/accelerator/tensorcore_utilizationkubernetes.io/node/accelerator/memory_bandwidth_utilization
对于GKE版本或更高版本,监控TPU主机性能。
1.28.1-gke.1066000- 容器指标:
- :当前TensorCore的利用率百分比。
kubernetes.io/container/accelerator/tensorcore_utilization - :当前加速器内存带宽的使用率百分比。
kubernetes.io/container/accelerator/memory_bandwidth_utilization
- 节点指标:
kubernetes.io/node/accelerator/tensorcore_utilizationkubernetes.io/node/accelerator/memory_bandwidth_utilization