昇腾社区首页
中文
注册

公共故障的恢复消息丢失,导致故障芯片一直处于隔离状态

问题现象描述

在检测公共故障时,故障发送方已发送故障恢复消息,但是故障芯片一直处于隔离状态,导致任务无法调度到该芯片。

原因分析

  • 原因一:故障发送方没有成功发送恢复消息给ClusterD
  • 原因二:故障恢复消息发送成功,但是K8s informer的消息队列出现消息遗漏;
  • 原因三:收到故障恢复消息后,ClusterD发生重启,导致内存中的故障缓存还未刷新至statistic-fault-info CM就被清理掉了。

解决措施

针对原因一:查看ClusterD日志文件中的报错信息,默认位置为/var/log/mindx-dl/clusterd/clusterd.log。

针对原因二:informer依赖K8s API Server的Watch机制,若网络不稳定或API Server压力过大,可能导致事件丢失。可以通过优化API Server性能减小消息遗漏的发生概率。

针对原因三:查询statistic-fault-info CM,根据要恢复的故障的faultId,获取故障的详细信息。手动调用公共故障接口,构造故障恢复消息。

以恢复故障faultId:14715779为例,下面将详细介绍针对原因三的解决办法。

  1. 执行以下命令查询statistic-fault-info CM。
    kubectl describe cm -n cluster-system statistic-fault-info

    PublicFaults对应的内容为:

    {"node173":[{"resource":"CCAE","devIds":[0,1,2],"faultId":"14715582","type":"Storage","faultCode":"010001002","level":"SubHealthFault","faultTime":1736928806},{"resource":"CCAE","devIds":[2,3,4],"faultId":"14715779","type":"Network","faultCode":"010001001","level":"SubHealthFault","faultTime":1736926605}]}
  2. 将步骤1PublicFaults中faultId 14715779相关的故障信息记录如下。
    {
      "nodeName": "node173",
      "resource": "CCAE",
      "devIds": [2,3,4],
      "faultId": "14715779",
      "type": "Network",
      "faultCode": "010001001",
      "level": "SubHealthFault",
      "faultTime": 1736926605
    }
  3. 调用公共故障接口,构造故障恢复消息。以ConfigMap接口为例。
    1. 执行以下命令创建名为recover的yaml。
      vi recover.yaml
    2. 编辑该yaml,将以下内容写入该yaml中。
      apiVersion: v1
      kind: ConfigMap
      metadata:
        namespace: mindx-dl
        name: mindx-dl-publicinfo
        labels:
          mc-consumer-publicfault: "true"
      data:
        PublicFault: |
          {
              "id":"11937763019444715778",
              "timestamp": 1741159983000,
              "version": "1.0",
              "resource": "CCAE",
              "faults": [
              {
                "faultId": "14715779",
                "faultType": "Network",
                "faultCode": "010001001",
                "faultTime": 1736926605000,
                "assertion": "recover",
                "influence": [
                  {
                    "nodeName": "node173",
                    "deviceIds": [2,3,4]
                  }
                ]
              }
              ]
          }
    3. 执行以下命令创建ConfigMap。
      kubectl apply -f recover.yaml
  4. 再次查询statistic-fault-info CM,PublicFaults对应的内容如下。faultId为14715779的故障已恢复。同时,cluster-info-cm中不再出现该故障。
    {"node173":[{"resource":"CCAE","devIds":[0,1,2],"faultId":"14715582","type":"Storage","faultCode":"010001002"
    ,"level":"SeparateNPU","faultTime":1736928806}]}