简介
组件介绍
海光 DCU 组件(组件标识:
dcu-gpu)用于在腾讯云容器服务 TKE 集群中管理和调度海光 DCU(Deep Computing Unit)加速卡资源。组件支持整卡分配和虚拟化分配,帮助您更高效地利用底层国产算力资源,并提供标准的 Prometheus 设备监控指标。部署在集群内的 Kubernetes 对象
对象名称 | 类型 | 功能说明 | 所属 Namespaces |
dcu-label-node | DaemonSet | 自动检测并标记集群中包含海光 DCU 设备的节点。 | kube-system |
dcu-device-plugin | DaemonSet | 基础的 Device Plugin,负责将 DCU 整卡资源注册上报至 kubelet(仅在整卡模式下生效)。 | kube-system |
dcu-device-plugin-hami | DaemonSet | 基于 HAMi 的 Device Plugin,负责 vDCU 虚拟算力的资源切分与注册(仅在 vDCU 模式下生效)。 | kube-system |
vdcu-admission-webhook | Deployment | 拦截器,自动向业务 Pod 注入 vDCU 相关的环境变量与资源配置。 | kube-system |
vdcu-scheduler-plugin | Deployment | 自定义调度器,支持通过 binpack 或 spread 策略进行 vDCU 节点和卡级别的资源调度。 | kube-system |
dcu-exporter | DaemonSet | DCU 设备指标采集器,暴露标准的 Prometheus 格式监控指标。 | kube-system |
使用场景
根据集群内不同业务需求,DCU 组件支持以下运行模式及相应的使用场景:
整卡模式(full):将整张 DCU 卡作为独占资源分配给业务容器使用,默认调度到集群内所有 DCU 节点。适用于对算力要求极高、不需要资源共享的单一应用场景。
虚拟化模式(vdcu):基于 HAMi 实现,将单张 DCU 卡虚拟化为多个 vDCU,支持多个容器共享同一张 DCU 卡的算力与显存。适用于推理服务、轻量级训练等需要细粒度分配 GPU 资源的场景,以提高资源利用率。
限制条件
集群版本:仅支持 Kubernetes 1.16 及以上版本的集群。
底层环境依赖:组件以 DaemonSet 方式部署在具有 DCU 设备的节点上,需确保相关节点已提前安装海光 DCU 驱动及 HyHAL 运行时环境。
虚拟化模式节点标签限制:当使用虚拟化模式(vdcu)时,请务必为节点打上正确的标签以区分模式。若节点被打上
dcu=on,该节点将使用 vDCU 模式。未打标签的节点可能无法被正确调度。组件权限说明
权限说明
海光 DCU 组件在集群内运行需要特定的 Kubernetes RBAC 权限,以实现节点 DCU 设备的自动打标、vDCU 资源的准入注入、调度控制以及设备监控指标采集。组件通过自动创建对应的
ClusterRole 与 ClusterRoleBinding 来赋予各子模块相应权限。权限场景
功能模块 | 涉及对象 | 涉及操作权限 |
节点自动打标(dcu-label-node) | nodes | get、list、watch、update |
指标采集(dcu-exporter) | pods | * (全量权限) |
准入控制(vdcu-admission-webhook) | pods、deployments、daemonsets、nodes 等负载资源;mutatingwebhookconfigurations 等 | * (全量负载权限);get、list、create、update、delete、patch、watch 等 |
资源调度(vdcu-scheduler-plugin) | pods、nodes、endpoints、bindings、events、namespaces 等 | get、list、watch、update、patch、create、delete 等 |
权限定义
海光 DCU 组件各核心模块完整的
ClusterRole 权限声明整理如下:# 1. dcu-label-node 权限apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: cr-node-labellerrules:- apiGroups: [""]resources: ["nodes"]verbs: ["watch", "get", "list", "update"]---# 2. dcu-exporter 权限apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: dcu-exporterrules:- apiGroups: ["", "storage.k8s.io"]resources: ["pods"]verbs: ["*"]---# 3. vdcu-admission-webhook 权限(仅 vdcu 模式)apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: admission-webhook-dcu-crrules:- apiGroups: ["sugon.com"]resources: ["*"]verbs: ["*"]- apiGroups: ["", "apps", "autoscaling", "storage.k8s.io"]resources: ["pods", "events", "deployments", "daemonsets", "replicasets", "statefulsets", "pvc", "persistentvolumes", "persistentvolumeclaims", "storageclasses", "nodes", "secrets"]verbs: ["*"]- apiGroups: ["admissionregistration.k8s.io"]resources: ["mutatingwebhookconfigurations"]verbs: ["get", "list", "create", "delete", "update", "patch", "watch"]---# 4. vdcu-scheduler-plugin 权限(仅 vdcu 模式)apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: vdcu-scheduler-pluginrules:- apiGroups: [""]resources: ["endpoints", "events", "nodes", "pods", "bindings", "pods/binding", "pods/status", "replicationcontrollers", "services", "persistentvolumeclaims", "persistentvolumes", "configmaps", "namespaces"]verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]- apiGroups: ["apps", "extensions", "policy"]resources: ["replicasets", "statefulsets", "poddisruptionbudgets"]verbs: ["get", "list", "watch"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses", "csinodes", "csistoragecapacities", "csidrivers"]verbs: ["get", "list", "watch"]- apiGroups: ["coordination.k8s.io"]resources: ["leases"]verbs: ["create", "get", "list", "update"]- apiGroups: ["events.k8s.io"]resources: ["events"]verbs: ["create", "patch", "update"]- apiGroups: ["admissionregistration.k8s.io"]resources: ["mutatingwebhookconfigurations"]verbs: ["delete", "get"]
组件参数说明
您可以在安装或更新该组件时,通过配置组件参数或修改 YAML 进行自定义。
组件参数选项
参数名 | 默认值 | 说明 |
mode | full | 部署模式。可选值为 full(整卡模式)、vdcu(虚拟 DCU 模式)。 |
config.exporterPort | 16080 | dcu-exporter 暴露的 Prometheus metrics 采集端口。 |
config.logThreshold | INFO | 组件输出日志的默认级别。 |
vdcuScheduler.nodeSchedulerPolicy | binpack | 仅在 vdcu 模式下生效。vDCU 在节点维度的调度策略( binpack 集中式 / spread 打散式)。 |
vdcuScheduler.gpuSchedulerPolicy | spread | 仅在 vdcu 模式下生效。同一节点上多卡间的 vDCU 调度策略。 |
配置示例
global:image:host: shadcccr.ccs.tencentyun.comrepo: tkeimages# 指定组件运行模式,例如 vdcu(虚拟 DCU 模式)mode: "vdcu"config:exporterPort: "16080"pulse: "30"logThreshold: "INFO"logVerbose: "2"logOutput: "true"vdcuScheduler:nodeSchedulerPolicy: binpackgpuSchedulerPolicy: spreadsleepTime: "0"