MindCluster适配
- 拉取MindCluster代码。
- 修改ClusterD代码。
- 打开“pkg/application/faultmanager/jobprocess/faultrank/job_fault_rank_processor.go”文件。
vi pkg/application/faultmanager/jobprocess/faultrank/job_fault_rank_processor.go
- 按“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) // 业务面故障时间设置为无效时间,避免单次故障重复触发进程级在线恢复 } … - 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“pkg/application/faultmanager/jobprocess/faultrank/job_fault_rank_processor.go”文件。
- 编译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
- 进入output目录,制作ClusterD镜像。
cd ../output/ docker build --no-cache -t clusterd:{tag} ./ # {tag}与3中build_version="xxx"的取值保持一致 - (可选)保存镜像,并将保存后的镜像文件和clusterd-{tag}.yaml文件上传到主节点。若1到4在主节点执行,可跳过该步骤。
docker save -o clusterd.tar clusterd:{tag} #保存镜像 docker load -i clusterd.tar #在主节点导入镜像 - 在主节点重新拉起ClusterD。
kubectl delete -f clusterd-{tag}.yaml # 删除旧ClusterD容器 kubectl apply -f clusterd-{tag}.yaml # 拉起新容器
父主题: 进程级在线恢复验证