跳到主要内容

HAMi Enterprise 2.9.0-rc2

Chart 版本Chart 声明的 appVersion发布日期
2.9.0-rc22.9.0-rc22026 年 6 月 8 日

本次为 patch 版本,以下变化以 HAMi Enterprise v2.9.0-rc1 为比较基线。

软件变更​

  • 调整显存自动扩容的分配粒度。 对已设置 CUDA_MEMORY_AUTO_ADJUST=true 的容器,自动调整的显存目标按 1024 MiB(1 GiB)向上取整。例如,1536 MiB 调整为 2048 MiB,已为 2048 MiB 时保持不变。显存自动扩容是已有能力,本次修改其调整粒度,不会为其他容器自动启用该能力。
  • Alibaba PPU 纳入授权管理。 新工作负载分配 PPU 时检查设备授权状态;无有效授权的设备不再参与分配。已有 PPU 部署升级前应确认相应授权有效。

Chart 变更​

配置或标识2.9.0-rc12.9.0-rc2
Chart 名称hamihami-enterprise
安装包hami-2.9.0-rc1.tgzhami-enterprise-2.9.0-rc2.tgz
schedulerName 默认值hami-schedulerhami-enterprise-scheduler
企业组件默认镜像仓库ghcr.io/dynamia-ai/hamighcr.io/dynamia-ai/hami-enterprise
global.imageTag 默认值v2.9.0-rc1v2.9.0-rc2
调度器 app.kubernetes.io/componenthami-schedulerhami-enterprise-scheduler
设备插件 app.kubernetes.io/componenthami-device-pluginhami-enterprise-device-plugin
app.kubernetes.io/name 默认值hamihami-enterprise

镜像仓库调整对应 scheduler.extender.image.repository、devicePlugin.image.repository 和 devicePlugin.monitor.image.repository。使用自建镜像仓库时,需要同步目标镜像并调整这些配置,不能只更新标签。

Chart 更名还改变了默认资源名称。例如,Helm release 名为 hami 且未设置名称覆盖时,调度器 Deployment 从 hami-scheduler 变为 hami-hami-enterprise-scheduler,设备插件 DaemonSet 从 hami-device-plugin 变为 hami-hami-enterprise-device-plugin。

升级说明​

升级前保存当前 Helm values 和资源清单,用目标 Chart 及实际 release 名称渲染后对比资源名称、选择器和 Service 引用。在维护窗口内完成旧资源与新资源的切换,避免两套调度器或设备插件同时管理同一批工作负载和节点。

  • 工作负载若显式填写 spec.schedulerName: hami-scheduler,应与目标部署的 schedulerName 保持一致:修改工作负载模板使用新默认值,或在 Chart 中显式保留旧名称。Webhook 不会把显式填写的旧 HAMi 调度器名称自动改为新名称。
  • 使用 nameOverride 或 fullnameOverride 保留旧资源名,并不会同时保留旧选择器。若渲染结果中同名 Deployment 或 DaemonSet 的 .spec.selector 有变化,需要安排重建,不能原地修改该字段。
  • 按旧组件标签筛选 Pod 的监控、巡检和自动化脚本需要同步更新;自定义 Service 或 Webhook 集成也需要核对目标资源名称。
  • 已启用显存自动扩容的工作负载,应按新的 1 GiB 粒度检查可分配显存余量和容量预期。

已知限制​

本版新增的 values 校验将以下配置限定为 null,传入有效的非空配置也会导致 Helm 校验失败:

配置受影响的自定义值
devicePlugin.nvidiaDriverRoot、devicePlugin.nvidiaHookPath驱动根目录或 hook 路径字符串
devicePlugin.gdrcopyEnabled、devicePlugin.gdsEnabled、devicePlugin.mofedEnabled布尔值
scheduler.admissionWebhook.whitelistNamespaces命名空间列表
scheduler.admissionWebhook.namespaceSelector.matchLabels标签映射

依赖这些配置的部署不能直接沿用自定义 values 安装本版;该校验问题在 2.9.0-r3 中修复。不要为通过校验而删除仍有业务用途的配置。

安装包通过约定的交付渠道获取。查看Chart 与 appVersion 对应关系或软件中心。

Values 说明​

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

展开参数表
KeyTypeDefaultDescription
dcuResourceCoresstring"hygon.com/dcucores"
dcuResourceMemstring"hygon.com/dcumem"
dcuResourceNamestring"hygon.com/dcunum"
devicePlugin.createRuntimeClassboolfalse
devicePlugin.deviceCoreScalingint1
devicePlugin.deviceListStrategystring"envvar"
devicePlugin.deviceMemoryScalingint1
devicePlugin.deviceSplitCountint10
devicePlugin.disablecorelimitstring"false"
devicePlugin.enabledbooltrue
devicePlugin.extraArgs[0]string"-v=4"
devicePlugin.extraEnvsobject{}
devicePlugin.gdrcopyEnabledstringnil
devicePlugin.gdsEnabledstringnil
devicePlugin.gpuOperatorToolkitReady.enabledboolfalse
devicePlugin.gpuOperatorToolkitReady.hostPathstring"/run/nvidia/validations"
devicePlugin.image.pullPolicystring"IfNotPresent"
devicePlugin.image.pullSecretslist[]
devicePlugin.image.registrystring"ghcr.io"
devicePlugin.image.repositorystring"dynamia-ai/hami-enterprise"
devicePlugin.image.tagstring""
devicePlugin.libPathstring"/usr/local/vgpu"
devicePlugin.migStrategystring"none"
devicePlugin.mofedEnabledstringnil
devicePlugin.monitor.ctrPathstring"/usr/local/vgpu/containers"
devicePlugin.monitor.extraArgs[0]string"-v=4"
devicePlugin.monitor.extraEnvsobject{}
devicePlugin.monitor.image.pullPolicystring"IfNotPresent"
devicePlugin.monitor.image.pullSecretslist[]
devicePlugin.monitor.image.registrystring"ghcr.io"
devicePlugin.monitor.image.repositorystring"dynamia-ai/hami-enterprise"
devicePlugin.monitor.image.tagstring""
devicePlugin.monitor.resourcesobject{}
devicePlugin.monitor.resyncIntervalstring"5m"
devicePlugin.nodeConfiguration.configstring"{\n \"nodeconfig\": [\n {\n \"name\": \"your-node-name\",\n \"operatingmode\": \"hami-core\",\n \"devicememoryscaling\": 1,\n \"devicesplitcount\": 10,\n \"preconfigureddevicememory\": 0,\n \"migstrategy\": \"none\",\n \"filterdevices\": {\n \"uuid\": [],\n \"index\": []\n },\n \"enablegetpreferredallocation\": false\n }\n ]\n}\n"
devicePlugin.nodeConfiguration.externalConfigNamestring""
devicePlugin.nvidiaDriverRootstringnil
devicePlugin.nvidiaHookPathstringnil
devicePlugin.nvidiaNodeSelector.gpustring"on"
devicePlugin.passDeviceSpecsEnabledboolfalse
devicePlugin.pluginPathstring"/var/lib/kubelet/device-plugins"
devicePlugin.podAnnotationsobject{}
devicePlugin.preConfiguredDeviceMemoryint0
devicePlugin.resourcesobject{}
devicePlugin.runtimeClassNamestring""
devicePlugin.service.annotationsobject{}
devicePlugin.service.httpPortint31992
devicePlugin.service.labelsobject{}
devicePlugin.service.typestring"NodePort"
devicePlugin.tolerationslist[]
devicePlugin.updateStrategy.rollingUpdate.maxUnavailableint1
devicePlugin.updateStrategy.typestring"RollingUpdate"
devices.alibaba.customresources[0]string"alibaba.com/ppu"
devices.alibaba.customresources[1]string"alibaba.com/ppu-memory"
devices.alibaba.customresources[2]string"alibaba.com/gpu-core"
devices.alibaba.enabledbooltrue
devices.alibaba.ppuCorePolicystring"default"
devices.amd.customresources[0]string"amd.com/gpu"
devices.amd.customresources[1]string"amd.com/gpumem"
devices.ascend.customresources[0]string"huawei.com/Ascend910A"
devices.ascend.customresources[10]string"huawei.com/Ascend910B4-memory"
devices.ascend.customresources[11]string"huawei.com/Ascend910B4-core"
devices.ascend.customresources[12]string"huawei.com/Ascend910B4-1"
devices.ascend.customresources[13]string"huawei.com/Ascend910B4-1-memory"
devices.ascend.customresources[14]string"huawei.com/Ascend910B4-1-core"
devices.ascend.customresources[15]string"huawei.com/Ascend310P"
devices.ascend.customresources[16]string"huawei.com/Ascend310P-memory"
devices.ascend.customresources[17]string"huawei.com/Ascend310P-core"
devices.ascend.customresources[18]string"huawei.com/Ascend910C"
devices.ascend.customresources[19]string"huawei.com/Ascend910C-memory"
devices.ascend.customresources[1]string"huawei.com/Ascend910A-memory"
devices.ascend.customresources[20]string"huawei.com/Ascend910C-core"
devices.ascend.customresources[2]string"huawei.com/Ascend910A-core"
devices.ascend.customresources[3]string"huawei.com/Ascend910B2"
devices.ascend.customresources[4]string"huawei.com/Ascend910B2-memory"
devices.ascend.customresources[5]string"huawei.com/Ascend910B2-core"
devices.ascend.customresources[6]string"huawei.com/Ascend910B3"
devices.ascend.customresources[7]string"huawei.com/Ascend910B3-memory"
devices.ascend.customresources[8]string"huawei.com/Ascend910B3-core"
devices.ascend.customresources[9]string"huawei.com/Ascend910B4"
devices.ascend.enabledboolfalse
devices.ascend.extraArgslist[]
devices.ascend.hamiVnpuCoreboolfalse
devices.ascend.imagestring""
devices.ascend.imagePullPolicystring"IfNotPresent"
devices.ascend.nodeSelector.ascendstring"on"
devices.ascend.runtimeClassNamestring""
devices.ascend.tolerationslist[]
devices.awsneuron.customresources[0]string"aws.amazon.com/neuron"
devices.awsneuron.customresources[1]string"aws.amazon.com/neuroncore"
devices.enflame.customresources[0]string"enflame.com/vgcu"
devices.enflame.customresources[1]string"enflame.com/vgcu-percentage"
devices.enflame.customresources[2]string"enflame.com/gcu"
devices.enflame.enabledbooltrue
devices.iluvatar.customresources[0]string"iluvatar.ai/BI-V100-vgpu"
devices.iluvatar.customresources[10]string"iluvatar.ai/MR-V50.vCore"
devices.iluvatar.customresources[11]string"iluvatar.ai/MR-V50.vMem"
devices.iluvatar.customresources[1]string"iluvatar.ai/BI-V100.vCore"
devices.iluvatar.customresources[2]string"iluvatar.ai/BI-V100.vMem"
devices.iluvatar.customresources[3]string"iluvatar.ai/BI-V150-vgpu"
devices.iluvatar.customresources[4]string"iluvatar.ai/BI-V150.vCore"
devices.iluvatar.customresources[5]string"iluvatar.ai/BI-V150.vMem"
devices.iluvatar.customresources[6]string"iluvatar.ai/MR-V100-vgpu"
devices.iluvatar.customresources[7]string"iluvatar.ai/MR-V100.vCore"
devices.iluvatar.customresources[8]string"iluvatar.ai/MR-V100.vMem"
devices.iluvatar.customresources[9]string"iluvatar.ai/MR-V50-vgpu"
devices.iluvatar.enabledboolfalse
devices.kunlun.customresources[0]string"kunlunxin.com/xpu"
devices.kunlun.customresources[1]string"kunlunxin.com/vxpu"
devices.kunlun.customresources[2]string"kunlunxin.com/vxpu-memory"
devices.kunlun.enabledbooltrue
devices.mthreads.customresources[0]string"mthreads.com/vgpu"
devices.mthreads.enabledbooltrue
devices.nvidia.gpuCorePolicystring"default"
devices.nvidia.libCudaLogLevelint2
devices.vastai.customresources[0]string"vastaitech.com/va"
devices.vastai.enabledbooltrue
dra.enabledboolfalse
enflameResourceNameVGCUstring"enflame.com/vgcu"
enflameResourceNameVGCUPercentagestring"enflame.com/vgcu-percentage"
fullnameOverridestring""
global.annotationsobject{}
global.gpuHookPathstring"/usr/local"
global.imagePullSecretslist[]
global.imageRegistrystring""
global.imageTagstring"v2.9.0-rc2"
global.labelsobject{}
global.managedNodeSelector.usagestring"gpu"
global.managedNodeSelectorEnableboolfalse
hami-dra.drivers.nvidia.containerDriverbooltrue
hami-dra.drivers.nvidia.enabledbooltrue
hami-dra.drivers.nvidia.image.repositorystring"ghcr.io/project-hami/k8s-dra-driver"
hami-dra.drivers.nvidia.image.tagstring"main"
hami-dra.monitor.enabledbooltrue
kunlunResourceNamestring"kunlunxin.com/xpu"
kunlunResourceVCountNamestring"kunlunxin.com/vxpu"
kunlunResourceVMemoryNamestring"kunlunxin.com/vxpu-memory"
legacyMetricsboolfalse
metaxResourceCorestring"metax-tech.com/vcore"
metaxResourceMemstring"metax-tech.com/vmemory"
metaxResourceNamestring"metax-tech.com/sgpu"
metaxsGPUTopologyAwarestring"false"
mluResourceCoresstring"cambricon.com/mlu.smlu.vcore"
mluResourceMemstring"cambricon.com/mlu.smlu.vmemory"
mluResourceNamestring"cambricon.com/vmlu"
mockDevicePlugin.enabledboolfalse
mockDevicePlugin.image.pullPolicystring"IfNotPresent"
mockDevicePlugin.image.pullSecretslist[]
mockDevicePlugin.image.registrystring"docker.io"
mockDevicePlugin.image.repositorystring"projecthami/mock-device-plugin"
mockDevicePlugin.image.tagstring"1.0.1"
nameOverridestring""
namespaceOverridestring""
podSecurityPolicy.enabledboolfalse
prometheus.enabledboolfalse
resourceCoresstring"nvidia.com/gpucores"
resourceMemstring"nvidia.com/gpumem"
resourceMemPercentagestring"nvidia.com/gpumem-percentage"
resourceNamestring"nvidia.com/gpu"
resourcePrioritystring"nvidia.com/priority"
scheduler.admissionWebhook.customURL.enabledboolfalse
scheduler.admissionWebhook.customURL.hoststring"127.0.0.1"
scheduler.admissionWebhook.customURL.pathstring"/webhook"
scheduler.admissionWebhook.customURL.portint31998
scheduler.admissionWebhook.enabledbooltrue
scheduler.admissionWebhook.failurePolicystring"Ignore"
scheduler.admissionWebhook.namespaceSelector.matchExpressionslist[]
scheduler.admissionWebhook.namespaceSelector.matchLabelsstringnil
scheduler.admissionWebhook.objectSelector.matchExpressionslist[]
scheduler.admissionWebhook.reinvocationPolicystring"Never"
scheduler.admissionWebhook.whitelistNamespacesstringnil
scheduler.certManager.enabledboolfalse
scheduler.defaultSchedulerPolicy.gpuSchedulerPolicystring"spread"
scheduler.defaultSchedulerPolicy.nodeSchedulerPolicystring"binpack"
scheduler.extender.extraArgs[0]string"--debug"
scheduler.extender.extraArgs[1]string"-v=4"
scheduler.extender.image.pullPolicystring"IfNotPresent"
scheduler.extender.image.pullSecretslist[]
scheduler.extender.image.registrystring"ghcr.io"
scheduler.extender.image.repositorystring"dynamia-ai/hami-enterprise"
scheduler.extender.image.tagstring""
scheduler.extender.resourcesobject{}
scheduler.forceOverwriteDefaultSchedulerbooltrue
scheduler.kubeScheduler.enabledbooltrue
scheduler.kubeScheduler.extraArgs[0]string"--policy-config-file=/config/config.json"
scheduler.kubeScheduler.extraArgs[1]string"-v=4"
scheduler.kubeScheduler.extraNewArgs[0]string"--config=/config/config.yaml"
scheduler.kubeScheduler.extraNewArgs[1]string"-v=4"
scheduler.kubeScheduler.image.pullPolicystring"IfNotPresent"
scheduler.kubeScheduler.image.pullSecretslist[]
scheduler.kubeScheduler.image.registrystring"registry.cn-hangzhou.aliyuncs.com"
scheduler.kubeScheduler.image.repositorystring"google_containers/kube-scheduler"
scheduler.kubeScheduler.image.tagstring""
scheduler.kubeScheduler.resourcesobject{}
scheduler.leaderElectbooltrue
scheduler.livenessProbeboolfalse
scheduler.metricsBindAddressstring":9395"
scheduler.nodeLockExpirestring"5m"
scheduler.nodeNamestring""
scheduler.overwriteEnvstring"false"
scheduler.patch.enabledbooltrue
scheduler.patch.image.pullPolicystring"IfNotPresent"
scheduler.patch.image.pullSecretslist[]
scheduler.patch.image.registrystring"docker.io"
scheduler.patch.image.repositorystring"jettech/kube-webhook-certgen"
scheduler.patch.image.tagstring"v1.5.2"
scheduler.patch.imageNew.pullPolicystring"IfNotPresent"
scheduler.patch.imageNew.pullSecretslist[]
scheduler.patch.imageNew.registrystring"docker.io"
scheduler.patch.imageNew.repositorystring"liangjw/kube-webhook-certgen"
scheduler.patch.imageNew.tagstring"v1.1.1"
scheduler.patch.nodeSelectorobject{}
scheduler.patch.podAnnotationsobject{}
scheduler.patch.priorityClassNamestring""
scheduler.patch.runAsUserint2000
scheduler.patch.tolerationslist[]
scheduler.podAnnotationsobject{}
scheduler.replicasint1
scheduler.service.annotationsobject{}
scheduler.service.httpPortint443
scheduler.service.httpTargetPortint443
scheduler.service.labelsobject{}
scheduler.service.monitorPortint31993
scheduler.service.monitorTargetPortint9395
scheduler.service.schedulerPortint31998
scheduler.service.typestring"NodePort"
scheduler.tolerationslist[]
schedulerNamestring"hami-enterprise-scheduler"
vastaiResourceNamestring"vastaitech.com/va"