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 下 |
| 监控 Service | NodePort;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 为准。
展开参数表
| Key | Type | Default | Description |
|---|---|---|---|
| commonAnnotations | object | {} | |
| commonLabels | object | {} | |
| config.create | bool | true | |
| config.data.alibaba.defaultCores | int | 0 | |
| config.data.alibaba.defaultGPUNum | int | 1 | |
| config.data.alibaba.defaultMemory | int | 0 | |
| config.data.alibaba.deviceCoreScaling | float | 1 | |
| config.data.alibaba.deviceMemoryScaling | float | 1 | |
| config.data.alibaba.deviceSplitCount | int | 2 | |
| config.data.alibaba.gpuCorePolicy | string | "default" | |
| config.data.alibaba.memoryFactor | int | 1 | |
| config.data.alibaba.overwriteEnv | bool | false | |
| config.data.alibaba.resourceCoreName | string | "alibaba.com/gpu-core" | |
| config.data.alibaba.resourceCountName | string | "alibaba.com/ppu" | |
| config.data.alibaba.resourceMemoryName | string | "alibaba.com/ppu-memory" | |
| config.data.alibaba.resourceMemoryPercentageName | string | "alibaba.com/ppu-memory-percentage" | |
| config.data.alibaba.runtimeClassName | string | "" | |
| config.existingConfigMapName | string | "" | |
| fullnameOverride | string | "" | |
| image.pullPolicy | string | "IfNotPresent" | |
| image.pullSecrets | list | [] | |
| image.repository | string | "ghcr.io/dynamia-ai/ppu-device-plugin" | |
| image.tag | string | "" | |
| monitor.enabled | bool | true | |
| monitor.resources | object | {} | |
| monitor.service.enabled | bool | true | |
| monitor.service.nodePort | int | 31992 | |
| monitor.service.port | int | 31992 | |
| monitor.service.type | string | "NodePort" | |
| nameOverride | string | "" | |
| namespaceOverride | string | "hami-system" | |
| nodeSelector.alibabappu | string | "on" | |
| plugin.enabled | bool | true | |
| plugin.resources.limits.cpu | string | "500m" | |
| plugin.resources.limits.memory | string | "512Mi" | |
| plugin.resources.requests.cpu | string | "100m" | |
| plugin.resources.requests.memory | string | "128Mi" | |
| priorityClassName | string | "system-node-critical" | |
| tolerations[0].key | string | "CriticalAddonsOnly" | |
| tolerations[0].operator | string | "Exists" | |
| tolerations[1].effect | string | "NoSchedule" | |
| tolerations[1].operator | string | "Exists" |