研发协作
GKE TPU v6e 节点上…
当 GKE 上 TPU v6e 节点出现 vbar_control_agent 崩溃、内存 cgroup OOM、tpu-device-plugin 指标校验失败或自定义 TPU 指标采集冲突时,用于定位并缓解问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
GKE TPU v6e 节点上 vbar特定
解决思路
- 收集上下文并定义时间窗口:获取 {project_id}、{cluster_name}、{node_name}、{workload_name}、{namespace}、{issue_time};若提供了 {issue_time},计算查询窗口为 [{issue_time} - 30m] 到 [{issue_time} + 30m],即 {start_time} = {issue_time} - 30m,{end_time} = {issue_time} + 30m。
- 若用户请求是信息性或查询构造类(如“如何检查……”),或无法实际访问 GCP 项目资源,则直接输出计算出的时间窗口、日志名称和 Cloud Logging 过滤模板,不执行实时日志查询命令。
- 在串口控制台日志(serialconsole.googleapis.com%2fserial_port_1_output)中检查 vbar_control_agent 的 OOM:使用 query_logs,过滤条件为 logName="projects/{project_id}/logs/serialconsole.googleapis.com%2fserial_port_1_output" AND labels."compute.googleapis.com/resource_name"="{node_name}" AND SEARCH(text_payload, "Memory cgroup out of memory: Killed process .* (vbar_control_ag)") AND timestamp >= "{start_time}" AND timestamp <= "{end_time}";若出现 Memory cgroup out of memory 且堆栈指向 libtpu::tpunetd::VBARControlHelper::MetricsReadFromVBAR,则为强指示。
- 报告发现后自动进入下一步。
- 检查 tpu-device-plugin 指标获取失败:使用 query_logs,过滤条件为 resource.type="k8s_container" AND resource.labels.project_id="{project_id}" AND resource.labels.cluster_name="{cluster_name}" AND resource.labels.container_name="tpu-device-plugin" AND severity=ERROR AND textPayload:"metrics fetch failed for .* deviceID and .* device path with error: checksum didn't match with the metrics data. Corrupt data found" AND timestamp >= "{start_time}" AND timestamp <= "{end_time}";出现 checksum didn't match 表明 vBAR 内存损坏。
- 报告发现后自动进入下一步。
- 检查是否使用自定义指标采集:检查集群配置、工作负载或容器规格,确认是否部署了频繁从 vBAR Control Agent 查询 GetHostMetrics 的自定义脚本或代理(如使用 libtpu.sdk.tpumonitoring)。
- 使用 kubectl 搜索工作负载环境/规格:kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"/"}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'。
- 使用 query_logs 搜索日志:resource.type="k8s_container" AND resource.labels.project_id="{project_id}" AND resource.labels.cluster_name="{cluster_name}" AND textPayload:"libtpu.sdk.tpumonitoring" AND timestamp >= "{start_time}" AND timestamp <= "{end_time}"。
- 若确认存在自定义指标采集代理,建议临时禁用它(高风险操作),以防止在设备重置期间读取 vBAR,从而停止崩溃和 OOM。
- 建议等待 vbar_control_agent 韧性更新(低风险):在修复可用时升级 GKE,更新后的代理将能抵抗内存损坏并优雅处理未绑定 vBAR 的读取。
- 按检查清单执行:获取上下文并计算时间窗口;用 query_logs 检查 vbar_control_agent 段错误和 OOM;用 query_logs 调查 tpu-device-plugin 失败;检查自定义指标采集使用情况;如适用建议禁用自定义指标采集;建议等待韧性更新。
适用边界 · 注意事项
- 不要用于非 TPU 的通用容器 OOM 排查。
- 不要用于标准 GKE 节点生命周期操作。