容器服务 XPU 组件说明

昆仑芯 XPU 组件(组件标识:xpu-gpu)用于在腾讯云容器服务 TKE 集群中管理和调度昆仑芯 XPU 加速卡资源。组件通过自动发现节点上的昆仑芯 XPU(kunlunxin.com/xpu)作为可调度资源来帮助运行需要 XPU 资源的容器;同时自动部署监控 exporter,提供标准 Prometheus 格式的 XPU 设备监控指标。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、部署在集群内的 Kubernetes 对象

全部部署在 kube-system 命名空间。

对象名称 类型 功能说明
xpu-device-plugin-daemonset DaemonSet Device Plugin,发现节点 XPU 设备并将其注册上报至 kubelet,供业务 Pod 申请调度。
xpu-exporter DaemonSet XPU 设备指标采集器,暴露标准 Prometheus 格式监控指标。
xpu-rbac-token-gen DaemonSet 将 ServiceAccount 的 token 与 ca.crt 同步到节点 XPU 运行时目录,供 XPU 运行时访问集群 API。
xpu-device-plugin ServiceAccount / ClusterRole / ClusterRoleBinding Device Plugin 运行所需权限。
xpu-exporter ServiceAccount / ClusterRole / ClusterRoleBinding Exporter 运行所需权限。
klx-xpu-serviceaccount / klx-xpu-clusterrole / klx-xpu-binding ServiceAccount / ClusterRole / ClusterRoleBinding token 同步组件运行所需权限。

二、使用场景

·整卡模式:将整张 XPU 卡作为独占资源分配给业务容器,容器通过申请 kunlunxin.com/xpu 资源使用。适用于训练等算力要求高、无需资源共享的场景。

·设备监控:xpu-exporter 以 DaemonSet 形式运行在每个 XPU 节点上,通过 /var/lib/kubelet/pod-resources/ 获取设备与 Pod 的归属关系,可提供卡、Pod 和容器级别的 XPU 监控指标,供 Prometheus 采集。

三、限制条件

·集群版本:仅支持 Kubernetes 1.16 及以上版本的集群。

·节点架构:仅支持 amd64 架构节点。

·底层环境依赖:组件以 DaemonSet 部署在具有 XPU 设备的节点上,需确保节点已提前安装昆仑芯 XPU 驱动及 XRE 运行时环境。

·节点标签限制:组件仅调度到带有 kunlun-device-enable=enable 标签的节点,未打标签的节点不会部署组件,也不会上报 XPU 资源。

·容器权限:xpu-device-plugin 与 xpu-exporter 容器均以 privileged: true 特权模式运行,用于访问节点 /dev 设备节点与设备管理接口。

·Token 落盘:xpu-rbac-token-gen 会将 ServiceAccount 的 token 与 ca.crt 周期性写入节点宿主机目录 /xpu-runtime/auth,请确保 XPU 节点的宿主机访问受控。

四、权限说明

组件运行需要特定的 Kubernetes RBAC 权限,用于节点 XPU 设备发现与上报、节点状态更新、设备监控指标采集,以及 XPU 运行时的集群访问凭据分发。组件通过自动创建对应的 ServiceAccount、ClusterRole 与 ClusterRoleBinding 赋予各子模块权限。

五、权限场景

功能模块 涉及对象 涉及操作权限
设备发现与上报(xpu-device-plugin) nodes、nodes/proxy get、list、watch、patch
设备发现与上报(xpu-device-plugin) nodes/status patch、update
设备发现与上报(xpu-device-plugin) pods get、list、watch、update、patch
设备发现与上报(xpu-device-plugin) events create、patch
指标采集(xpu-exporter) nodes、nodes/proxy get、list、watch
指标采集(xpu-exporter) nodes/status patch、update
指标采集(xpu-exporter) pods get、list、watch、update、patch
指标采集(xpu-exporter) events create、patch
凭据分发(xpu-rbac-token-gen) nodes、nodes/status、nodes/proxy、pods、events get、list

六、权限定义(ClusterRole 完整声明)

# 1. xpu-device-plugin 权限apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: xpu-device-pluginrules: – apiGroups: [""] resources: ["nodes", "nodes/proxy"] verbs: ["get", "list", "watch", "patch"] – apiGroups: [""] resources: ["events"] verbs: ["create", "patch"] – apiGroups: [""] resources: ["pods"] verbs: ["update", "patch", "get", "list", "watch"] – apiGroups: [""] resources: ["nodes/status"] verbs: ["patch", "update"]—# 2. xpu-exporter 权限apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: xpu-exporterrules: – apiGroups: [""] resources: ["nodes", "nodes/proxy"] verbs: ["get", "list", "watch"] – apiGroups: [""] resources: ["events"] verbs: ["create", "patch"] – apiGroups: [""] resources: ["pods"] verbs: ["update", "patch", "get", "list", "watch"] – apiGroups: [""] resources: ["nodes/status"] verbs: ["patch", "update"]—# 3. xpu-rbac-token-gen 权限apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: klx-xpu-clusterrolerules: – apiGroups: [""] resources: ["nodes", "pods", "nodes/status", "events", "nodes/proxy"] verbs: ["get", "list"]

七、组件参数说明

注意:说明:

注意:你可以在安装或更新该组件时,通过配置组件参数或修改 YAML 进行自定义。

八、组件参数选项

参数名 默认值 说明
global.image.host ccr.ccs.tencentyun.com 组件镜像仓库地址
config.exporterPort 9507 xpu-exporter 暴露的 Prometheus metrics 采集端口
config.logVerbose 5 xpu-device-plugin 的日志详细级别(对应 –v)
config.memoryUnit MiB xpu-device-plugin 上报显存的计量单位
images.devicePlugin.tag v5.0.2-alpha.3 xpu-device-plugin 镜像版本
images.exporter.tag v5.0.3-alpha.6 xpu_exporter 镜像版本
images.rbacTokenGen.tag v1.0.0 xpu-rbac-token-gen 镜像版本
exporter.goMemLimit 800MiB xpu-exporter 的 Go 运行时内存上限(GOMEMLIMIT)
exporter.resources.requests.cpu 100m xpu-exporter CPU 请求量
exporter.resources.requests.memory 100Mi xpu-exporter 内存请求量
exporter.resources.limits.cpu 1000m xpu-exporter CPU 限制量
exporter.resources.limits.memory 1Gi xpu-exporter 内存限制量
nodeSelector kunlun-device-enable: enable 组件部署的目标节点选择器

九、配置示例

global: image: host: ccr.ccs.tencentyun.comconfig: exporterPort: 9507 logVerbose: 5 memoryUnit: MiBexporter: goMemLimit: 800MiB resources: requests: cpu: 100m memory: 100Mi limits: cpu: 1000m memory: 1GinodeSelector: kunlun-device-enable: enable

十、预留参数(当前版本未生效)

以下参数已在 values.yaml 中声明,但当前 chart 模板尚未引用,配置后不会产生实际效果,请勿依赖:

参数名 默认值 规划用途
config.logLevel info 日志级别
devicePlugin.enableSriov false 是否启用 vXPU(SR-IOV)虚拟化
devicePlugin.sriovNumVfs 0 vXPU 数量
devicePlugin.reconfigVxpu false 是否允许重新配置 vXPU 数量
devicePlugin.enableXpuShare false 是否启用 XPU 共享模式
devicePlugin.useDetailResName false 是否按型号上报资源名(如 kunlunxin.com/R200)
devicePlugin.customizedResourceName "" 自定义资源名(留空使用默认 kunlunxin.com/xpu)
tolerations 见 values.yaml 容忍度(当前 DaemonSet 模板中为硬编码)

十一、使用示例

为节点打上组件调度标签:

kubectl label node <节点名> kunlun-device-enable=enable

业务 Pod 申请 XPU 资源:

apiVersion: v1kind: Podmetadata: name: xpu-demospec: nodeSelector: kunlun-device-enable: enable containers: – name: demo image: <你的业务镜像> resources: limits: kunlunxin.com/xpu: 1

查看节点可分配的 XPU 资源:

kubectl describe node <节点名> | grep kunlunxin.com/xpu

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