已开启
hardware.go/checkH02 模糊匹配节点名称可能导致 Device Plugin 状态误判 #168
lijie09创建于 9月4日
9月4日 添加了label:sig/sig-ai-inference
openFuyao-bot
9月4日 评论:
9月4日 评论:
欢迎来到 openFuyao 社区
Hey @lijie_repo , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅此处。
联系指引
有疑问可以联系 SIG: sig-ai-inference ,
维护者是: @foxbit, @regandy ,
审核者是: @ShiroChen, @piamposer-li, @qinwenzh .


9月4日 关联了pull request:fix/check-h02-exact-node-match
pengkaijie
9月10日 评论:
9月10日 评论:
感谢老师贡献!原来的checkH02通过字符串模糊匹配节点名,确实可能出现node1误匹配node10的情况,从而导致Device Plugin状态误判。通过Pod JSON中的spec.nodeName做精确匹配,可以避免这种场景下的状态误报。


lijie09
29 天前 评论:
29 天前 评论:
/close


lijie09
19 天前 评论:
19 天前 评论:
/close


问题描述
checkH02通过解析kubectl get pods -A -o wide的文本输出,并使用strings.Contains(line, nodeName)判断 Pod 是否属于目标节点。当节点名称存在包含关系时,例如
node1和node10,检查node1会同时匹配node10,导致检查结果受到其他节点状态影响。场景复现
集群中存在以下两个 Device Plugin Pod:
对
node1执行 H-02 检查时:strings.Contains("... node10", "node1") // true虽然
node1上的插件正常运行,但代码还会匹配到node10的 Pending Pod,并返回:最终导致健康的
node1被错误判定为检查失败。另一个可能场景是:
node1没有 Device Plugin Pod,而node10的插件处于 Running 状态。此时pluginRunning会被错误设置为true,跳过插件未运行检查。预期行为
检查
node1时,只判断实际运行在node1上的 Device Plugin Pod,不受node10等名称相似节点的影响。建议修改
使用 JSON 格式获取 Pod 信息,并通过
spec.nodeName精确比较节点名称:同时保持现有的全集群 Pod 查询、插件名称筛选、Running 状态检查和 NPU resource 检查逻辑不变。