K8s原生对象说明

Service label

表 1 集群调度对Service的使用说明

名称 作用 取值 使用组件
group-name 标记Pod对应的acjob的group名称 mindxdl.gitee.com Volcano、Ascend Operator
job-name 标记Pod对应的acjob名称 字符串 Ascend Operator
replica-index 标记Pod序号(后续将删除) [0-{Pod数量-1}] Ascend Operator
replica-type 标记Pod类型(后续将删除)
  • master
  • chief
  • scheduler
  • worker
Ascend Operator
training.kubeflow.org/job-name 标记Pod对应的acjob名称 字符串 Ascend Operator
training.kubeflow.org/operator-name 标记创建Pod的operator名称 ascendjob-controller Ascend Operator
training.kubeflow.org/replica-index 标记Pod序号 [0-{Pod数量-1}] Ascend Operator
training.kubeflow.org/replica-type 标记Pod类型
  • master
  • chief
  • scheduler
  • worker
Ascend Operator

Job label

表 2 集群调度对Job label使用说明

Job label名称 作用 取值 使用组件
mind-cluster/scaling-rule: scaling-rule 标记扩缩容规则对应的ConfigMap名称。 字符串 Ascend Operator
mind-cluster/group-name: group0 标记扩缩容规则中对应的group名称。 字符串 Ascend Operator

Job annotation

表 3 集群调度对Job annotation使用说明

Job annotation名称 作用 取值 使用组件
huawei.com/schedule.filter.faultCode

配置任务需要静默的故障码和时间窗。

  • 故障码仅支持配置芯片故障和灵衢总线设备故障的故障码。支持的故障码详细请参见faultCode.json和SwitchFaultCode.json文件。
  • 支持配置多个故障码和时间窗,多个配置使用英文逗号分隔。

取值示例:"8C1F8608:30, 80E01801",表示在30秒时间窗内,静默8C1F8608故障;在60秒时间窗内,静默80E01801故障。

若未配置时间窗,则默认为60,取值范围为0~86400,单位为秒。

ClusterD
huawei.com/schedule.filter.faultLevel

配置任务需要静默的故障级别和时间窗。

  • 故障级别仅支持配置芯片故障和灵衢总线设备故障的级别。支持的故障级别详细请参见配置说明
  • 支持配置多个故障级别和时间窗,多个配置使用英文逗号分隔。
  • 对于MindIE Service,若YAML文件中无此配置项,则默认所有RestartRequest级别的故障静默60秒。
  • huawei.com/schedule.filter.faultCode的优先级高于huawei.com/schedule.filter.faultLevel。
  • 对于通知类故障,ClusterD静默此类故障后,可能导致Volcano不主动重调度故障Pod。任务可以通过订阅ClusterD的故障订阅接口,对接收到的故障进行相应处理,若处理失败需主动Error退出Pod。

取值示例:"RestartRequest:30, RestartBusiness",表示在30秒时间窗内,静默所有RestartRequest级别的故障;在60秒时间窗内,静默所有RestartBusiness级别的故障。

若未配置时间窗,则默认为60,取值范围为0~86400,单位为秒。

ClusterD

Node label

表 4 集群调度对Node label使用说明

node label名称 作用 取值 使用组件
accelerator 标识节点的处理芯片
  • huawei-npu
  • huawei-Ascend910
  • huawei-Ascend310
  • huawei-Ascend310P
Ascend Device Plugin
host-arch 标识节点的CPU架构
  • huawei-x86
  • huawei-arm
Volcano
masterselector 标识MindCluster的管理节点 dls-master-node Volcano、Ascend Operator、Resilience Controller、ClusterD
node.kubernetes.io/npu.chip.name 上报当前芯片的具体类型
  • 310
  • 310P1
  • 310P2
  • 310P3
  • 310P4
  • {xxx}A
  • 910PremiumA
  • 910ProA
  • 910ProB
  • {xxx}Bx(x可取值为1、2、3、4)
  • Ascend950PR
  • Ascend950DT

Ascend Device Plugin

[!NOTE] 说明
下文的{xxx}即取“910”字符作为芯片型号数值。
nodeDEnable NodeD节点启动的开关 on Volcano、Resilience Controller
[!NOTE] 说明
  • nodeDEnable=on标签表示启用NodeD的节点状态监测功能,用于获取节点的状态信息并用于判断节点是否故障。
  • 取值为off或无该参数表示仅上报节点信息,不判断节点是否故障。
  • 使用容器化支持或者资源监测时,可以不配置该标签;其他特性必须配置该标签。
workerselector 标识MindCluster的计算节点 dls-worker-node Ascend Device Plugin、NodeD、NPU Exporter
accelerator-type 标识Atlas服务器类型
  • card
  • module
  • half
  • module-{xxx}b-8
  • module-{xxx}b-16
  • card-{xxx}b-2
  • card-{xxx}b-infer
  • module-a3-16
  • module-a3-16-super-pod
  • module-a3-8-super-pod
  • 350-Atlas-8
  • 350-Atlas-16
  • 350-Atlas-4p-8
  • 350-Atlas-4p-16
  • 850-Atlas-8p-8
  • 850-SuperPod-Atlas-8
  • 950-SuperPod-Atlas-8
Ascend Device Plugin、Volcano
servertype 设备类型
  • npu-{aicore核数}
  • soc
  • Ascend910-{aicore核数}
  • Ascend310P-{aicore核数}
Volcano、Ascend Device Plugin

huawei.com/Ascend910-Recover

huawei.com/npu-Recover

Atlas 训练系列产品故障恢复标识 故障芯片ID Ascend Device Plugin

huawei.com/Ascend910-NetworkRecover

huawei.com/npu-NetworkRecover

Atlas 训练系列产品网络故障恢复标识 故障芯片ID Ascend Device Plugin
infer-card-type 由Ascend Device Plugin写入,表明节点推理卡类型。 card-300i-duo Volcano
mind-cluster/npu-chip-memory 芯片片上内存 mind-cluster/npu-chip-memory=64G Volcano、Ascend Device Plugin
huawei.com/scheduler.chip1softsharedev.enable 表示节点是否支持软切分虚拟化功能
  • true
  • false
Volcano、Ascend Device Plugin
[!NOTE] 说明
  • huawei.com/scheduler.chip1softsharedev.enable=true标签表示节点支持软切分虚拟化功能。
  • huawei.com/scheduler.chip1softsharedev.enable=false标签表示节点不支持软切分虚拟化功能。
huawei.com/topotree.rackid 标识节点的机框ID 节点所属机框ID Volcano
huawei.com/topotree.superpodid 标识节点的超节点ID 节点所属超节点ID Volcano
huawei.com/topotree.groupid 标识节点的Pod组ID 节点所属Pod组ID Volcano
huawei.com/topotree 标识节点的网络拓扑树ID 节点所属网络拓扑树ID Volcano

Pod label

表 5 集群调度组件对Pod label使用说明

名称 作用 取值 使用组件
ring-controller.atlas 标识Atlas的Pod
  • ascend-910
  • ascend-{xxx}b
  • ascend-npu
  • Ascend Device Plugin
    vnpu-dvpp 标记Pod设置的DVPP
  • yes:该Pod使用DVPP。
  • no:该Pod不使用DVPP。
  • null:默认值。不关注是否使用DVPP。
  • Volcano
    vnpu-level 标记选择虚拟化实例模板的等级
  • low:低配,默认值。
  • high:性能优先。
  • Volcano
    version 标记Pod的版本 字符串 Ascend Operator
    volcano.sh/job-name 标记Pod对应vcjob名称 字符串 Volcano
    volcano.sh/job-namespace 标记Pod对应vcjob命名空间 字符串 Volcano
    volcano.sh/queue-name 标记Pod对应queue名称 字符串 Volcano
    volcano.sh/task-spec 标记Pod对应task名称 字符串 Volcano
    fault-type 标记Pod故障处理策略
    • SubHealth
    • Separate
    Volcano
    deploy-name 标记Pod对应的deployment名称 字符串 Ascend Operator
    group-name 标记Pod对应的acjob的group名称 mindxdl.gitee.com Volcano、Ascend Operator
    job-name 标记Pod对应的acjob名称 字符串 Ascend Operator
    replica-index 标记Pod序号(后续将删除) [0-{Pod数量-1}] Ascend Operator
    replica-type 标记Pod类型(后续将删除)
    • master
    • chief
    • scheduler
    • worker
    Ascend Operator
    training.kubeflow.org/job-name 标记Pod对应的acjob名称 字符串 Ascend Operator
    training.kubeflow.org/job-role 标记Pod类型 master Ascend Operator
    training.kubeflow.org/operator-name 标记创建Pod的operator名称 ascendjob-controller Ascend Operator
    training.kubeflow.org/replica-index 标记Pod序号 [0-{Pod数量-1}] Ascend Operator
    training.kubeflow.org/replica-type 标记Pod类型
    • master
    • chief
    • scheduler
    • worker
    Ascend Operator
    super-pod-affinity 超节点任务使用的亲和性调度策略
    • soft
    • hard
    Ascend Operator、Volcano

    Pod annotation

    表 6 集群调度组件对Pod annotation使用说明

    名称 作用 取值 使用组件

    ascend.kubectl.kubernetes.io/ascend-910-configuration

    ascend.kubectl.kubernetes.io/ascend-npu-configuration

    Ascend Operator生成hccl.json的数据来源 字符串map Ascend Device Plugin、Ascend Operator
    super_pod_id 为Ascend Operator提供超节点ID信息 数字 Ascend Operator
    hccl/rankIndex 断点续训中保持原rankId的依据 [0,1000] Volcano、Ascend Operator
    distributed-job 标记训练任务类型
    • true:当前任务为分布式任务
    • false:当前任务为单机任务
    Volcano

    huawei.com/Ascend910

    huawei.com/npu

    Ascend Device Plugin为Pod分配芯片的依据 字符串 Volcano、Ascend Device Plugin
    huawei.com/AscendReal Ascend Device Plugin为Pod实际分配芯片的记录 字符串 Volcano、Ascend Device Plugin
    huawei.com/npu-core 标记Pod使用的npu卡物理ID及切分模板 字符串 Volcano、Ascend Device Plugin
    huawei.com/kltDev kubelet为Pod分配芯片的记录 字符串 Ascend Device Plugin
    huawei.com/recover_policy_path 任务重调度策略 pod:只支持Pod级重调度,不升级为Job级别(当使用vcjob时,需要配置该策略:policies: -event:PodFailed -action:RestartTask) Volcano
    huawei.com/schedule_minAvailable 任务能够调度的最小副本数 整数 Volcano
    predicate-time Ascend Device Plugin为Pod分配芯片的顺序依据 字符串 Volcano、Ascend Device Plugin
    isSharedTor 标记Pod对应的交换机属性 整数 Volcano
    isHealthy 标记Pod对应的交换机状态 整数 Volcano
    scheduling.k8s.io/group-name 标记Pod对应podGroup名称 字符串 Volcano
    volcano.sh/job-name 标记Pod对应的vcjob名称 字符串 Volcano
    volcano.sh/job-version 标记Pod对应的vcjob版本 字符串 Volcano
    volcano.sh/queue-name 标记Pod对应的queue版本 字符串 Volcano
    volcano.sh/task-spec 标记Pod对应task名称 字符串 Volcano
    volcano.sh/template-uid 标记Pod对应pod-template名称 字符串 Volcano
    sharedTorIp 标记任务使用的共享交换机信息 字符串 Volcano、ClusterD
    fault-job-delete 标记job的rank信息 字符串 Volcano
    mind-cluster/hardware-type=800I-A2-xx xx表示当前节点的片上内存,例如mind-cluster/hardware-type=800I-A2-64G 字符串 Volcano
    super-pod-rank 任务的逻辑超节点rank 数字 Ascend Operator、Volcano
    inHotSwitchFlow 标记当前Pod(故障Pod和备份Pod)处于亚健康热切流程中 true ClusterD、Ascend Operator
    backupNewPodName 标记当前故障Pod拉起的备份Pod名称 对应的备份Pod名称 ClusterD、Ascend Operator
    backupSourcePodName 标记当前备份Pod对应的原Pod名称 对应的原Pod名称 Ascend Operator
    needOperatorOpe 标记当前Pod需要Ascend Operator进行处理
    • create:需要Ascend Operator基于当前Pod创建备份Pod
    • delete:需要Ascend Operator删除当前Pod
    ClusterD、Ascend Operator
    needVolcanoOpe 标记当前Pod需要Volcano进行处理 delete:需要Volcano删除当前Pod ClusterD、Volcano
    podType 标记当前Pod是备份Pod backup ClusterD、Ascend Operator
    huawei.com/scheduler.softShareDev.aicoreQuota 标记当前Pod需要的AICore百分比。 [1, 100] Volcano、Ascend Device Plugin
    huawei.com/scheduler.softShareDev.hbmQuota 标记当前Pod需要的高带宽内存量。

    [1, maxHBM]

    maxHBM为通过npu-smi info命令查询出的HBM-Usage(MB)中HBM的值。

    Volcano、Ascend Device Plugin
    huawei.com/scheduler.softShareDev.policy 标记当前Pod执行的软切分任务的策略。
    • fixed-share
    • elastic
    • best-effort
    Volcano、Ascend Device Plugin
    huawei.com/affinity-config 配置任务的多级调度的亲和性层级。

    level1=x,level2=y,...

    其中x,y...为对应的网络层级子任务大小。

    该字段用于配置任务的多级调度的亲和性层级。

    要求满足格式为leveli=ni样式的字符串的拼接,中间使用英文逗号分隔。其中,i为网络层级序号,ni为该网络层级子任务的副本数量。例如,对于总副本数量为8的任务“level1=2,level2=4”,表示任务Pod中每2个Pod分配到有相同level1标签的节点上,每4个Pod分配到有相同level2标签的节点上。

    网络层级配置需要满足以下要求:

    • 任务层级大于1层时,层级n的值必须是n-1的整数倍。
    • 任务总副本数量必须是所有层级的整数倍。
    • 任务层级配置必须从level1开始,从小到大连续的。

    Volcano
    huawei.com/schedule_policy 指定调度策略。 目前支持表3 huawei.com/schedule_policy配置说明中的配置。 Volcano

    Node annotation

    表 7 集群调度组件对Node annotation使用说明

    名称 作用 取值 使用组件
    baseDeviceInfos 展示芯片的基础信息,例如IP,供Volcano调度时使用 字符串 Volcano
    product-serial-number NodeD通过IPMI接口获取节点SN号并写入annotation,供ClusterD接收公共故障时使用。 字符串 ClusterD
    superPodID 表示该节点所属的超节点的ID。 字符串 ClusterD
    ResetInfo 展示Ascend Device Plugin自动复位失败的芯片信息,如芯片的物理ID、Card ID等。 字符串 Ascend Device Plugin

    ResetInfo的内容格式如下所示。

    {
        "ThirdPartyResetDevs": [
            {
                "CardId": 0,
                "DeviceId": 0,
                "AssociatedCardId": 4,
                "PhyID": 0,
                "LogicID": 0
            }
        ],
        "ManualResetDevs": [
            {
                "CardId": 1,
                "DeviceId": 0,
                "AssociatedCardId": 5,
                "PhyID": 2,
                "LogicID": 2
            }
        ]
    }
    

    K8s的ServiceAccount

    表 8 组件在K8s中创建的ServiceAccount列表

    账号名 说明
    volcano-controllers 开源Volcano的controller组件在K8s中创建的用户。
    volcano-scheduler 开源Volcano的scheduler组件在K8s中创建的用户。

    ascend-device-plugin-sa-npu

    ascend-device-plugin-sa-910

    ascend-device-plugin-sa-310p

    ascend-device-plugin-sa-310

    使用YAML启动服务,将会在K8s中创建该用户,不同型号的设备使用的账号名不同。
    ascend-operator-manager 使用YAML启动服务,将会在K8s中创建该用户,如:ascend-operator-v{version}.yaml。
    resilience-controller 建议安全加固启动,使用带without-token的YAML启动服务,在K8s中创建并使用resilience-controller账号,同时为该账号授予适当权限。
    noded 使用YAML启动服务,将会在K8s中创建该用户,如:noded-v{version}.yaml。
    clusterd 使用YAML启动服务,将会在K8s中创建该用户,如:clusterd-v{version}.yaml。
    default MindCluster组件或开源Volcano部署时会在K8s中自动创建的用户。