DCU 组件说明

最近更新时间:2026-04-14 14:28:49

我的收藏

简介

组件介绍

海光 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 资源的准入注入、调度控制以及设备监控指标采集。组件通过自动创建对应的 ClusterRoleClusterRoleBinding 来赋予各子模块相应权限。

权限场景

功能模块
涉及对象
涉及操作权限
节点自动打标(dcu-label-node)
nodes
get、list、watch、update
指标采集(dcu-exporter)
pods
* (全量权限)
准入控制(vdcu-admission-webhook)
podsdeploymentsdaemonsetsnodes 等负载资源;mutatingwebhookconfigurations
* (全量负载权限);get、list、create、update、delete、patch、watch 等
资源调度(vdcu-scheduler-plugin)
podsnodesendpointsbindingseventsnamespaces
get、list、watch、update、patch、create、delete 等

权限定义

海光 DCU 组件各核心模块完整的 ClusterRole 权限声明整理如下:
# 1. dcu-label-node 权限
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cr-node-labeller
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["watch", "get", "list", "update"]
---
# 2. dcu-exporter 权限
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dcu-exporter
rules:
- apiGroups: ["", "storage.k8s.io"]
resources: ["pods"]
verbs: ["*"]
---
# 3. vdcu-admission-webhook 权限(仅 vdcu 模式)
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: admission-webhook-dcu-cr
rules:
- 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/v1
kind: ClusterRole
metadata:
name: vdcu-scheduler-plugin
rules:
- 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.com
repo: tkeimages
# 指定组件运行模式,例如 vdcu(虚拟 DCU 模式)
mode: "vdcu"

config:
exporterPort: "16080"
pulse: "30"
logThreshold: "INFO"
logVerbose: "2"
logOutput: "true"

vdcuScheduler:
nodeSchedulerPolicy: binpack
gpuSchedulerPolicy: spread
sleepTime: "0"