昇腾社区首页
中文
注册
开发者
下载

MindCluster适配

  1. 拉取MindCluster代码。
    mkdir -p /data/atlas_dls/public/code
    cd /data/atlas_dls/public/code
    git clone https://gitcode.com/Ascend/mind-cluster.git
    cd ./mind-cluster/component/clusterd
    git checkout v7.2.RC1   # v7.2.RC1是代码仓版本tag,请自行切换到目标版本
  2. 修改ClusterD代码。
    1. 打开“pkg/application/faultmanager/jobprocess/faultrank/job_fault_rank_processor.go”文件。
      vi pkg/application/faultmanager/jobprocess/faultrank/job_fault_rank_processor.go
    2. 按“i”进入编辑模式,添加如下加粗代码。
      package faultrank
      
      import (
      …
          "clusterd/pkg/domain/faultdomain/collector"
      …
      )
      …
      func (processor *jobRankFaultInfoProcessor) findFaultRankForJob(
      …
              if deviceDetail, ok := processor.retryInBusinessPlane(podInfo.jobId, nodeName, deviceName); ok {
      			faultRankList = append(faultRankList, constant.FaultRank{RankId: deviceInfo.RankID, PodUid: podUid,
      				PodRank: podRankStr, FaultCode: faultdomain.GetRetryCodeByFaultType(deviceDetail.FaultType),
      				FaultLevel:  constant.RestartBusiness,
      				DoStepRetry: processor.canDoStepRetry(podInfo.jobId, nodeName, deviceName),
      				DeviceId:    deviceInfo.DeviceID,
      			})
      			collector.ReportInfoCollector.ReportRetryInfo(podInfo.jobId, deviceInfo.RankID, constant.JobNotRecover, constant.UceFaultType)   // 业务面故障时间设置为无效时间,避免单次故障重复触发进程级在线恢复
      		}
      …
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  3. 编译ClusterD
    cd ./build/
    chmod +x build.sh && dos2unix build.sh
    sed -i 's|build_version="v[^"]\+"|build_version="xxx"|g' build.sh  # xxx替换为版本号,如v7.2.RC1
    sed -i 's|export CGO_ENABLED=0|export CGO_ENABLED=1|g' build.sh  # 开启CGO功能
    ./build.sh # 编译ClusterD,需要go 1.21及以上版本
    编译成功后,会在“../output/”目录下生成相关文件,可执行如下命令进行查看:
    ll ../output/
    回显示例如下:
    -r-x------. 1 root root 45891128 Aug 13 10:52 clusterd
    -r--------. 1 root root     4021 Aug 13 10:52 clusterd-v7.2.RC1.yaml
    -r--------. 1 root root      946 Aug 13 10:52 Dockerfile
    -r--------. 1 root root      209 Aug 13 10:52 faultDuration.json
    -r--------. 1 root root      207 Aug 13 10:52 fdConfig.yaml
    -r--------. 1 root root      467 Aug 13 10:52 publicFaultConfiguration.json
    -r--------. 1 root root      756 Aug 13 10:52 relationFaultCustomization.json
  4. 进入output目录,制作ClusterD镜像。
    cd ../output/
    docker build --no-cache -t clusterd:{tag} ./  # {tag}与3中build_version="xxx"的取值保持一致
  5. (可选)保存镜像,并将保存后的镜像文件和clusterd-{tag}.yaml文件上传到主节点。若14在主节点执行,可跳过该步骤。
    docker save -o clusterd.tar clusterd:{tag}  #保存镜像
    docker load -i clusterd.tar  #在主节点导入镜像
  6. 在主节点重新拉起ClusterD
    kubectl delete -f  clusterd-{tag}.yaml  # 删除旧ClusterD容器
    kubectl apply -f  clusterd-{tag}.yaml  # 拉起新容器