已开启
hardware.go/checkH02 模糊匹配节点名称可能导致 Device Plugin 状态误判 #168
lijie09创建于  9月4日
lijie09
lijie09
9月4日 创建

问题描述

checkH02 通过解析 kubectl get pods -A -o wide 的文本输出,并使用 strings.Contains(line, nodeName) 判断 Pod 是否属于目标节点。

当节点名称存在包含关系时,例如 node1 和 node10,检查 node1 会同时匹配 node10,导致检查结果受到其他节点状态影响。

场景复现

集群中存在以下两个 Device Plugin Pod:

NAMESPACE     NAME                            READY   STATUS    NODE
kube-system   ascend-device-plugin-node1      1/1     Running   node1
kube-system   ascend-device-plugin-node10     0/1     Pending   node10

对 node1 执行 H-02 检查时:

strings.Contains("... node10", "node1") // true

虽然 node1 上的插件正常运行,但代码还会匹配到 node10 的 Pending Pod,并返回:

Ascend Device Plugin Pod is not in Running state

最终导致健康的 node1 被错误判定为检查失败。

另一个可能场景是:node1 没有 Device Plugin Pod,而 node10 的插件处于 Running 状态。此时 pluginRunning 会被错误设置为 true,跳过插件未运行检查。

预期行为

检查 node1 时,只判断实际运行在 node1 上的 Device Plugin Pod,不受 node10 等名称相似节点的影响。

建议修改

使用 JSON 格式获取 Pod 信息,并通过 spec.nodeName 精确比较节点名称:

pod.Spec.NodeName == nodeName

同时保持现有的全集群 Pod 查询、插件名称筛选、Running 状态检查和 NPU resource 检查逻辑不变。

likedislike
openFuyao-botopenFuyao-bot成员
9月4日 添加了label:sig/sig-ai-inference
openFuyao-bot
openFuyao-bot成员
9月4日 评论:

欢迎来到 openFuyao 社区

Hey @lijie_repo , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅此处。

联系指引

有疑问可以联系 SIG: sig-ai-inference ,
维护者是: @foxbit, @regandy ,
审核者是: @ShiroChen, @piamposer-li, @qinwenzh .

likedislike
lijie09lijie09
9月4日 关联了pull request:fix/check-h02-exact-node-match
pengkaijie
pengkaijie
9月10日 评论:

感谢老师贡献!原来的checkH02通过字符串模糊匹配节点名,确实可能出现node1误匹配node10的情况,从而导致Device Plugin状态误判。通过Pod JSON中的spec.nodeName做精确匹配,可以避免这种场景下的状态误报。

likedislike
lijie09
lijie09
29 天前 评论:

/close

likedislike
lijie09
lijie09
19 天前 评论:

/close

likedislike