平台适配
芯片网络故障与芯片故障类似,通过Device-Info ConfigMap获取芯片网络故障信息。Device-Info ConfigMap由Ascend Device Plugin创建,每个计算节点均有一个Device-Info ConfigMap,记录该节点的芯片健康状态信息。
- 使用集群调度组件提供的Volcano或者开源Volcano(需要集成Ascend-volcano-plugin插件),可跳过该步骤。
- 不使用上述Volcano,且想要获取芯片健康状态信息做其它业务逻辑处理,可以通过K8s客户端获取Device-Info ConfigMap内容,代码示例如下。
import "k8s.io/client-go/kubernetes" // NodeDeviceInfo is device info configmap struct type NodeDeviceInfo struct { DeviceList map[string]string UpdateTime int64 } func getNodeDeviceInfoFromCM(kubeClient kubernetes.Interface, node *api.NodeInfo) (*NodeDeviceInfo, error) { cmData, getErr := util.GetConfigMapWithRetry(kubeClient, util.DevInfoNameSpace, util.DevInfoPreName+node.Name) if getErr != nil { klog.V(util.LogErrorLev).Infof("GetConfigMapWithRetry :%#v.", getErr) return nil, getErr } devInf := &NodeDeviceInfoWithDevPlugin{} data, ok := cmData.Data[util.DevInfoCMKey] if !ok { return nil, fmt.Errorf("%s device-info no %s", node.Name, util.DevInfoCMKey) } if unmarshalErr := json.Unmarshal([]byte(data), &devInf); unmarshalErr != nil { klog.V(util.LogInfoLevel).Infof("convertToReSchedulerJobsMapFromCM Unmarshal: %#v.", unmarshalErr) return nil, unmarshalErr } if checkErr := checkNodeDeviceInfo(devInf); checkErr != nil { klog.V(util.LogInfoLevel).Infof("checkNodeDeviceInfo failed :%#v.", checkErr) return nil, checkErr } return &devInf.DeviceInfo, nil }
父主题: 参数面网络故障