帮你快速理解、总结文档立即下载

XPU 组件说明

最近更新时间:2026-09-16 16:38:31
我的收藏

简介

组件介绍

昆仑芯 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-pluginxpu-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/v1
kind: ClusterRole
metadata:
name: xpu-device-plugin
rules:
- 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/v1
kind: ClusterRole
metadata:
name: xpu-exporter
rules:
- 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/v1
kind: ClusterRole
metadata:
name: klx-xpu-clusterrole
rules:
- 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.com

config:
exporterPort: 9507
logVerbose: 5
memoryUnit: MiB

exporter:
goMemLimit: 800MiB
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 1000m
memory: 1Gi

nodeSelector:
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: v1
kind: Pod
metadata:
name: xpu-demo
spec:
nodeSelector:
kunlun-device-enable: enable
containers:
- name: demo
image: <您的业务镜像>
resources:
limits:
kunlunxin.com/xpu: 1
查看节点可分配的 XPU 资源:
kubectl describe node <节点名> | grep kunlunxin.com/xpu