容器服务 DCU 组件说明

海光 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.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"

赞 (0)
上一篇 4天前
下一篇 4天前