跳到主要内容

Dynamia ppu-vgpu-device-plugin Chart 0.0.1

发布时间:2026-07-14

版本上一版本版
Chart—(首次 Chart 发布)0.0.1
appVersion—1.0.2

这是 PPU 设备插件的首次 Chart 发布,将插件、监控、设备配置和访问权限统一纳入 Helm 部署。插件与监控默认使用 ghcr.io/dynamia-ai/ppu-device-plugin:v1.0.2。下文中的应用能力为首版 Chart 随附能力,不表示这些能力均在应用 1.0.2 中首次实现。

HAMi Enterprise 兼容性​

功能或使用场景最低可用 HAMi Enterprise 版本本版配套要求与部署结论
PPU 基础调度、显存与算力切分v2.9.0-rc2首个支持本版 PPU 插件的 HAMi Enterprise 版本。已有配套正常工作的部署,改用本 Chart 无需升级 Enterprise。

本版尚不包含按容器授权下发、监控续期及运行库授权校验。升级到 Chart 0.0.2 时,须执行该版的授权迁移要求。

版本变化​

Chart 变化​

首次以 Helm Chart 交付以下组件:

  • 设备插件 DaemonSet,用于向 kubelet 注册 PPU 资源、读取调度分配结果并准备容器设备与运行库挂载。
  • 监控 DaemonSet 和指标 Service,默认启用;插件与监控使用同一个镜像配置。
  • 设备 ConfigMap、两组 ServiceAccount、ClusterRole 和 ClusterRoleBinding。可由 Chart 创建设备配置,也可引用已有 ConfigMap。

主要默认值如下,安装前应按现场部署约定核对:

配置或对象首版默认值及含义
Kubernetes 版本声明>=1.20.0-0;为 Chart 声明的安装约束
命名空间namespaceOverride: hami-system;资源命名空间默认由该值决定
部署节点nodeSelector.alibabappu: "on"
插件和监控plugin.enabled: true、monitor.enabled: true
设备配置config.create: true;默认创建 ppu-vgpu-device-plugin-config
资源数量、显存、算力名称alibaba.com/ppu、alibaba.com/ppu-memory、alibaba.com/gpu-core
每卡虚拟设备数config.data.alibaba.deviceSplitCount: 2
显存、算力缩放系数deviceMemoryScaling: 1.0、deviceCoreScaling: 1.0,位于 config.data.alibaba 下
监控 ServiceNodePort;Service 端口和 NodePort 均为 31992,目标容器端口为 9394
默认资源名称插件为 ppu-vgpu-device-plugin;监控和 Service 为 ppu-vgpu-device-plugin-monitor

image.tag 为空时,模板根据 appVersion 选择 v1.0.2;显式指定 image.repository、image.tag 时采用覆盖后的镜像。监控 Service 提供指标访问入口,Chart 不创建 Prometheus ServiceMonitor,采集端需另行配置。

应用随附能力​

  • 发现节点 PPU 并上报设备数量、显存、算力和设备标识;按配置为物理卡注册虚拟设备,供多个工作负载申请共享资源。
  • 配合 HAMi Enterprise 的分配结果,为业务容器准备 PPU 设备文件、PPU-HAMi-core 和资源限制环境变量,按申请值执行显存及算力控制。资源名使用上表中的实际字段,其中算力资源名为 alibaba.com/gpu-core。
  • 监控组件读取设备及容器共享状态,提供指标。首版监控不负责后续版本新增的容器授权文件续期。

这些能力依赖节点已有可用 PPU 驱动、对应设备文件及配套调度器。每卡虚拟设备数控制共享份数,不代表新增物理容量。

升级说明​

首次安装前处理数值参数​

本版原始 Chart 会将插件数值参数渲染为以下内容,其中双引号属于传给进程的参数字符:

--device-split-count="2"
--device-memory-scaling="1"

这会导致对应数值参数解析失败。必须保留本版部署时,应在受控 Chart 副本或 Helm 后处理清单中移除这两个数值外的引号,使参数分别为 --device-split-count=2、--device-memory-scaling=1;自定义数值同样处理。仅改变 values 中数值的类型不能消除模板添加的引号。该问题已在 Chart 0.0.2 修复,选择升级时须同时遵循该版的授权迁移说明。

核对部署配置​

  • 安装前确认目标命名空间与 namespaceOverride 一致,目标节点具有 alibabappu=on 标签,且 PPU 驱动和设备文件已经就绪。插件使用特权容器、宿主机网络及相关 hostPath 挂载,节点部署策略须允许这些权限。
  • 使用外部设备配置时设置 config.create: false 和 config.existingConfigMapName,并在同一命名空间准备包含 device-config.yaml 数据键的 ConfigMap。插件读取其中的 alibaba 配置;config.data 不会更新外部对象。资源名须与调度器一致。
  • 本版模板同时从 config.data.alibaba 生成部分启动参数。即使引用外部 ConfigMap,也应保持这些值与外部配置一致,并处理上述参数引号问题。设备切分和缩放由插件负责上报,调度器的默认申请值与调度策略仍由 Enterprise 配置控制。
  • 按采集方式设置监控 Service,并确认 NodePort 31992 未被其他 Service 占用。检查实际采集目标,不能仅以监控 Pod 就绪判断指标已接入。

从手工清单迁移​

本版没有上一版 Chart,可直接用于首次 Helm 管理部署。若现场已用手工 YAML 运行插件或监控,先核对资源名称、命名空间、RBAC、设备配置和宿主机目录,再安排原部署退出及 Helm 接管,避免两个插件同时向同一节点注册相同资源。不要直接覆盖或删除仍被业务使用的宿主机运行库和共享状态。

迁移后检查插件、监控的实际镜像和日志,节点资源上报,以及新建工作负载的分配、可见设备、显存与算力限制。若同时改变镜像、挂载路径或运行库,应另外安排业务重建及验证,不能将其视为单纯的 Helm 管理方式切换。

查看Chart 与 appVersion 对应关系或软件中心。

Values 说明​

以下参数说明取自 Chart 0.0.1 发布包随附的 README,保留原文。默认配置以该版本的 values.yaml 为准。

展开参数表
KeyTypeDefaultDescription
commonAnnotationsobject{}
commonLabelsobject{}
config.createbooltrue
config.data.alibaba.defaultCoresint0
config.data.alibaba.defaultGPUNumint1
config.data.alibaba.defaultMemoryint0
config.data.alibaba.deviceCoreScalingfloat1
config.data.alibaba.deviceMemoryScalingfloat1
config.data.alibaba.deviceSplitCountint2
config.data.alibaba.gpuCorePolicystring"default"
config.data.alibaba.memoryFactorint1
config.data.alibaba.overwriteEnvboolfalse
config.data.alibaba.resourceCoreNamestring"alibaba.com/gpu-core"
config.data.alibaba.resourceCountNamestring"alibaba.com/ppu"
config.data.alibaba.resourceMemoryNamestring"alibaba.com/ppu-memory"
config.data.alibaba.resourceMemoryPercentageNamestring"alibaba.com/ppu-memory-percentage"
config.data.alibaba.runtimeClassNamestring""
config.existingConfigMapNamestring""
fullnameOverridestring""
image.pullPolicystring"IfNotPresent"
image.pullSecretslist[]
image.repositorystring"ghcr.io/dynamia-ai/ppu-device-plugin"
image.tagstring""
monitor.enabledbooltrue
monitor.resourcesobject{}
monitor.service.enabledbooltrue
monitor.service.nodePortint31992
monitor.service.portint31992
monitor.service.typestring"NodePort"
nameOverridestring""
namespaceOverridestring"hami-system"
nodeSelector.alibabappustring"on"
plugin.enabledbooltrue
plugin.resources.limits.cpustring"500m"
plugin.resources.limits.memorystring"512Mi"
plugin.resources.requests.cpustring"100m"
plugin.resources.requests.memorystring"128Mi"
priorityClassNamestring"system-node-critical"
tolerations[0].keystring"CriticalAddonsOnly"
tolerations[0].operatorstring"Exists"
tolerations[1].effectstring"NoSchedule"
tolerations[1].operatorstring"Exists"