HAMi Enterprise Chart 2.8.0-rc1
| Chart version | Declared appVersion | Release date |
|---|---|---|
2.8.0-rc1 | 2.8.0-rc1 | 2026-03-16 |
This is a patch release. Changes below are compared with HAMi Enterprise v2.8.0-rc0.
Software changes
- Alibaba PPU scheduling integration: The scheduler now recognizes PPU node registration information and the
alibaba.com/ppu,alibaba.com/ppu-memory, andalibaba.com/gpu-coreresources. This Chart does not install a PPU device plugin. Before using this capability, the companion plugin must register the devices and resources on the nodes. - Memory registration for NVIDIA unified-memory GPUs: When NVML cannot query device memory, the device plugin can register the device using a preconfigured memory capacity. If no positive value is set, such devices are skipped. Devices whose memory NVML can query continue to use the queried value.
- Ascend 910C module allocation: When Ascend is enabled and the device configuration contains
commonWord: Ascend910C, a request for one NPU by a single container is changed to two to allocate a complete module; other odd-numbered requests are rejected. The default device configuration in the released Chart does not include a 910C entry. - Pod admission with an explicitly named scheduler: Fixes an issue where the admission webhook could skip device handling when
spec.schedulerNamewas already set to the HAMi scheduler name. The name is configured by the Chart'sschedulerNamesetting. - NVIDIA node status and workload startup: The scheduler clears node device state when the number of allocatable GPUs reaches zero and updates device information when registration annotations change. If NVIDIA configuration enables
postNvidiaSmiand a workload already has anExec-typepostStartcommand,nvidia-smiruns only after the original command succeeds. The container image must provideshfor the command chaining. - NVIDIA namespace quotas: During Pod admission, the webhook totals single-GPU NVIDIA memory and compute requests declared by the containers and checks the applicable
ResourceQuotaconfigured for the namespace. It returnsexceeding resource quotawhen the quota is exceeded. This admission check does not cover requests for multiple GPUs declared by a container. - Monitoring metric updates: The container memory-detail metrics
hami_container_device_memory_context_bytes,hami_container_device_memory_module_bytes, andhami_container_device_memory_data_bytesare renamed tovGPU_device_memory_context_size_bytes,vGPU_device_memory_module_size_bytes, andvGPU_device_memory_buffer_size_bytes, respectively. The oldhami_container_device_memory_offset_bytesmetric has no same-name replacement. The scheduler metricsGPUDeviceMemoryLimit,GPUDeviceCoreLimit,GPUDeviceMemoryAllocated,GPUDeviceCoreAllocated, andvGPULicenseRemainsgain adevicetypelabel.GPUDeviceMemoryAllocatedalso gains adevicecoreslabel, as doesnodeGPUOverview.
Chart changes
- Adds
devicePlugin.preConfiguredDeviceMemory, measured in MB and defaulting to0. It is written to the scheduler's device configuration. For a specific node,devicePlugin.nodeConfiguration.configcan setpreconfigureddevicememoryto override the device-plugin configuration. A positive node-level value takes precedence over the general setting. - Adds
devices.alibaba.enabled(defaulttrue) anddevices.alibaba.ppuCorePolicy(defaultdefault) for PPU resource mapping and compute policy. The supported policies aredefault,force, anddisable. - Adds
prometheus.enabled, defaulting tofalse. When set totrueand the cluster already provides themonitoring.coreos.com/v1/ServiceMonitorresource type, the Chart creates ServiceMonitors for the scheduler and NVIDIA device plugin. The Chart does not install that resource type. - The main Chart's
versionandappVersionare both2.8.0-rc1; the default image tag changes tov2.8.0-rc1.
Upgrade notes
On NVIDIA nodes where NVML cannot query memory, set devicePlugin.preConfiguredDeviceMemory to the actual capacity in MB. To configure different capacities by node, set a positive preconfigureddevicememory for each node in devicePlugin.nodeConfiguration.config; other NVIDIA nodes can retain the default.
For Ascend 910C, in addition to setting devices.ascend.enabled: true, provide a custom Chart package containing files/device-config.yaml with commonWord: Ascend910C and the corresponding resource names, then add those resource names to devices.ascend.customresources. The custom file replaces the entire device configuration generated by the Chart, so preserve existing device entries as needed. The default Chart does not include 910C configuration. For existing 910C workloads, check odd-numbered NPU requests and capacity expectations after single-NPU requests are changed to two NPUs.
For NVIDIA workloads with a custom Exec-type postStart command, confirm that the image provides sh and that the original command and its arguments behave as expected when run by a shell. nvidia-smi will not run if the original command fails.
Deployments using Prometheus Operator can enable prometheus.enabled as needed. Before upgrading, check dashboards, alerts, and query rules that depend on the old metric names or exact label matches, and migrate them to the new metrics and labels. Rules that depend on the memory-offset metric need a separate adjustment.
Obtain the package through the agreed delivery channel. See the Chart and appVersion mapping or the software center.
Values reference
The following parameter descriptions are taken from the README bundled with the Chart 2.8.0-rc1 release package and are preserved as published. Use this version's values.yaml as the source of default configuration.
Expand values table
Global Configuration
| Parameter | Description | Default Value |
|---|---|---|
global.imageRegistry | Global Docker image registry | "" |
global.imagePullSecrets | Global Docker image pull secrets | [] |
global.imageTag | Image tag | "v2.8.0" |
global.gpuHookPath | GPU Hook path | /usr/local |
global.labels | Global labels | {} |
global.annotations | Global annotations | {} |
global.managedNodeSelectorEnable | Whether to enable managed node selector | false |
global.managedNodeSelector.usage | Managed node selector usage | "gpu" |
nameOverride | Name override | "" |
fullnameOverride | Full name override | "" |
namespaceOverride | Namespace override | "" |
Resource Name Configuration
NVIDIA GPU Resources
| Parameter | Description | Default Value |
|---|---|---|
resourceName | GPU resource name | "nvidia.com/gpu" |
resourceMem | GPU memory resource name | "nvidia.com/gpumem" |
resourceMemPercentage | GPU memory percentage resource name | "nvidia.com/gpumem-percentage" |
resourceCores | GPU core resource name | "nvidia.com/gpucores" |
resourcePriority | GPU priority resource name | "nvidia.com/priority" |
Cambricon MLU Resources
| Parameter | Description | Default Value |
|---|---|---|
mluResourceName | MLU resource name | "cambricon.com/vmlu" |
mluResourceMem | MLU memory resource name | "cambricon.com/mlu.smlu.vmemory" |
mluResourceCores | MLU core resource name | "cambricon.com/mlu.smlu.vcore" |
Hygon DCU Resources
| Parameter | Description | Default Value |
|---|---|---|
dcuResourceName | DCU resource name | "hygon.com/dcunum" |
dcuResourceMem | DCU memory resource name | "hygon.com/dcumem" |
dcuResourceCores | DCU core resource name | "hygon.com/dcucores" |
Metax GPU Resources
| Parameter | Description | Default Value |
|---|---|---|
metaxResourceName | GPU resource name | "metax-tech.com/sgpu" |
metaxResourceCore | GPU core resource name | "metax-tech.com/vcore" |
metaxResourceMem | GPU memory resource name | "metax-tech.com/vmemory" |
metaxsGPUTopologyAware | GPU topology awareness | "false" |
Enflame GCU Resources
| Parameter | Description | Default Value |
|---|---|---|
enflameResourceNameVGCU | vGCU resource name | "enflame.com/vgcu" |
enflameResourceNameVGCUPercentage | vGCU percentage resource name | "enflame.com/vgcu-percentage" |
Kunlunxin XPU Resources
| Parameter | Description | Default Value |
|---|---|---|
kunlunResourceName | XPU resource name | "kunlunxin.com/xpu" |
Scheduler Configuration
| Parameter | Description | Default Value |
|---|---|---|
schedulerName | Scheduler name | "hami-scheduler" |
scheduler.nodeName | Define node name, scheduler will schedule to this node | "" |
scheduler.overwriteEnv | Whether to overwrite environment variables | "false" |
scheduler.defaultSchedulerPolicy.nodeSchedulerPolicy | Node scheduler policy | binpack |
scheduler.defaultSchedulerPolicy.gpuSchedulerPolicy | GPU scheduler policy | spread |
scheduler.metricsBindAddress | Metrics bind address | ":9395" |
scheduler.forceOverwriteDefaultScheduler | Whether to force overwrite default scheduler | true |
scheduler.livenessProbe | Whether to enable liveness probe | false |
scheduler.leaderElect | Whether to enable leader election | true |
scheduler.replicas | Number of replicas | 1 |
Kube Scheduler Configuration
| Parameter | Description | Default Value |
|---|---|---|
scheduler.kubeScheduler.enabled | Whether to run kube-scheduler container in scheduler pod | true |
scheduler.kubeScheduler.image.registry | Kube scheduler image registry | "registry.cn-hangzhou.aliyuncs.com" |
scheduler.kubeScheduler.image.repository | Kube scheduler image repository | "google_containers/kube-scheduler" |
scheduler.kubeScheduler.image.tag | Kube scheduler image tag | "" |
scheduler.kubeScheduler.image.pullPolicy | Kube scheduler image pull policy | IfNotPresent |
scheduler.kubeScheduler.image.pullSecrets | Kube scheduler image pull secrets | [] |
scheduler.kubeScheduler.extraNewArgs | Extra new arguments | ["--config=/config/config.yaml", "-v=4"] |
scheduler.kubeScheduler.extraArgs | Extra arguments | ["--policy-config-file=/config/config.json", "-v=4"] |
Extender Configuration
| Parameter | Description | Default Value |
|---|---|---|
scheduler.extender.image.registry | Scheduler extender image registry | "docker.io" |
scheduler.extender.image.repository | Scheduler extender image repository | "projecthami/hami" |
scheduler.extender.image.tag | Scheduler extender image tag | "" |
scheduler.extender.image.pullPolicy | Scheduler extender image pull policy | IfNotPresent |
scheduler.extender.image.pullSecrets | Scheduler extender image pull secrets | [] |
scheduler.extender.extraArgs | Scheduler extender extra arguments | ["--debug", "-v=4"] |
Admission Webhook Configuration
| Parameter | Description | Default Value |
|---|---|---|
scheduler.admissionWebhook.enabled | Whether to enable admission webhook | true |
scheduler.admissionWebhook.customURL.enabled | Whether to enable custom URL | false |
scheduler.admissionWebhook.customURL.host | Custom URL host | 127.0.0.1 |
scheduler.admissionWebhook.customURL.port | Custom URL port | 31998 |
scheduler.admissionWebhook.customURL.path | Custom URL path | /webhook |
scheduler.admissionWebhook.reinvocationPolicy | Reinvocation policy | Never |
scheduler.admissionWebhook.failurePolicy | Failure policy | Ignore |
TLS Certificate Configuration
| Parameter | Description | Default Value |
|---|---|---|
scheduler.certManager.enabled | Whether to use cert-manager to generate self-signed certificates | false |
scheduler.patch.enabled | Whether to use kube-webhook-certgen to generate self-signed certificates | true |
scheduler.patch.image.registry | Certgen image registry | "docker.io" |
scheduler.patch.image.repository | Certgen image repository | "jettech/kube-webhook-certgen" |
scheduler.patch.image.tag | Certgen image tag | "v1.5.2" |
scheduler.patch.image.pullPolicy | Certgen image pull policy | IfNotPresent |
scheduler.patch.imageNew.registry | New certgen image registry | "docker.io" |
scheduler.patch.imageNew.repository | New certgen image repository | "liangjw/kube-webhook-certgen" |
scheduler.patch.imageNew.tag | New certgen image tag | "v1.1.1" |
Scheduler Service Configuration
| Parameter | Description | Default Value |
|---|---|---|
scheduler.service.type | Service type | NodePort |
scheduler.service.httpPort | HTTP port | 443 |
scheduler.service.schedulerPort | Scheduler NodePort | 31998 |
scheduler.service.monitorPort | Monitor port | 31993 |
scheduler.service.monitorTargetPort | Monitor target port | 9395 |
Device Plugin Configuration
| Parameter | Description | Default Value |
|---|---|---|
devicePlugin.image.registry | Device plugin image registry | "docker.io" |
devicePlugin.image.repository | Device plugin image repository | "projecthami/hami" |
devicePlugin.image.tag | Device plugin image tag | "" |
devicePlugin.image.pullPolicy | Device plugin image pull policy | IfNotPresent |
devicePlugin.image.pullSecrets | Device plugin image pull secrets | [] |
Monitor Configuration
| Parameter | Description | Default Value |
|---|---|---|
devicePlugin.monitor.image.registry | Monitor image registry | "docker.io" |
devicePlugin.monitor.image.repository | Monitor image repository | "projecthami/hami" |
devicePlugin.monitor.image.tag | Monitor image tag | "" |
devicePlugin.monitor.image.pullPolicy | Monitor image pull policy | IfNotPresent |
devicePlugin.monitor.image.pullSecrets | Monitor image pull secrets | [] |
devicePlugin.monitor.ctrPath | Container path | /usr/local/vgpu/containers |
devicePlugin.monitor.extraArgs | Monitor extra arguments | ["-v=4"] |
devicePlugin.monitor.extraEnvs | Monitor extra environments | {} |
Device Plugin Other Configuration
| Parameter | Description | Default Value |
|---|---|---|
devicePlugin.deviceSplitCount | Integer type, default value: 10. Maximum number of tasks assigned to a single GPU device | 10 |
devicePlugin.deviceMemoryScaling | Device memory scaling ratio | 1 |
devicePlugin.deviceCoreScaling | Device core scaling ratio | 1 |
devicePlugin.runtimeClassName | Runtime class name | "" |
devicePlugin.createRuntimeClass | Whether to create runtime class | false |
devicePlugin.migStrategy | String type, "none" means ignore MIG functionality, "mixed" means allocate MIG devices through independent resources | "none" |
devicePlugin.disablecorelimit | String type, "true" means disable core limit, "false" means enable core limit | "false" |
devicePlugin.passDeviceSpecsEnabled | Whether to enable passing device specs | false |
devicePlugin.extraArgs | Device plugin extra arguments | ["-v=4"] |
devicePlugin.nodeConfiguration.config | Node configuration for device plugin by json | An example of default configuration. |
devicePlugin.nodeConfiguration.externalConfigName | Node configuration for device plugin by external congimap | "" |
devicePlugin.extraEnvs | Device plugin extra environments | {} |
Device Plugin Service Configuration
| Parameter | Description | Default Value |
|---|---|---|
devicePlugin.service.type | Service type | NodePort |
devicePlugin.service.httpPort | HTTP port | 31992 |
Device Plugin Deployment Configuration
| Parameter | Description | Default Value |
|---|---|---|
devicePlugin.pluginPath | Plugin path | /var/lib/kubelet/device-plugins |
devicePlugin.libPath | Library path | /usr/local/vgpu |
devicePlugin.nvidiaNodeSelector | NVIDIA node selector | {"gpu": "on"} |
devicePlugin.updateStrategy.type | Update strategy type | RollingUpdate |
devicePlugin.updateStrategy.rollingUpdate.maxUnavailable | Maximum unavailable count | 1 |
Device Configuration
AWS Neuron
| Parameter | Description | Default Value |
|---|---|---|
devices.awsneuron.customresources | Custom resources | ["aws.amazon.com/neuron", "aws.amazon.com/neuroncore"] |
Kunlunxin
| Parameter | Description | Default Value |
|---|---|---|
devices.kunlun.enabled | Whether to enable | true |
devices.kunlun.customresources | Custom resources | ["kunlunxin.com/xpu"] |
Mthreads
| Parameter | Description | Default Value |
|---|---|---|
devices.mthreads.enabled | Whether to enable | true |
devices.mthreads.customresources | Custom resources | ["mthreads.com/vgpu"] |
NVIDIA
| Parameter | Description | Default Value |
|---|---|---|
devices.nvidia.gpuCorePolicy | GPU core policy | default |
devices.nvidia.libCudaLogLevel | CUDA library log level | 1 |
Huawei Ascend
| Parameter | Description | Default Value |
|---|---|---|
devices.ascend.enabled | Whether to enable | false |
devices.ascend.image | Image | "" |
devices.ascend.imagePullPolicy | Image pull policy | IfNotPresent |
devices.ascend.extraArgs | Extra arguments | [] |
devices.ascend.nodeSelector | Node selector | {"ascend": "on"} |
devices.ascend.tolerations | Tolerations | [] |
devices.ascend.customresources | Custom resources | ["huawei.com/Ascend910A", "huawei.com/Ascend910A-memory", ...] |
Iluvatar
| Parameter | Description | Default Value |
|---|---|---|
devices.iluvatar.enabled | Whether to enable | false |
devices.iluvatar.customresources | Custom resources | ["iluvatar.ai/BI-V150-vgpu", "iluvatar.ai/BI-V150.vMem","iluvatar.ai/BI-V150.vCore", ...] |