升级

本文介绍如何从 GPU-manager 或较旧版本的 Hami 升级到最新的 Hami 版本。

GPU-manager 到 Hami

注意

  1. GPU-manager 和 Hami 不能部署在同一个节点上,但它们可以共存于同一个集群中。
  2. 在升级过程中,必须逐个修改应用,这将重启相应的工作负载 pod。
  3. 当你只有一个 GPU 节点时,必须先卸载 GPU-manager,再安装 Hami。你可以在两个插件都已部署时,通过切换节点标签来实现这一点。 例如,移除 nvidia-device-enable=vgpu 节点标签以删除该节点上的 GPU-manager 实例,然后添加 gpu=on 标签以在其上部署 Hami 插件。

操作步骤

逐个修改你的应用。示例:

你旧的 GPU-manager 实例:

spec:
  containers:
    - image: your-image
      imagePullPolicy: IfNotPresent
      name: gpu
      resources:
        limits:
          cpu: '2'
          memory: 4Gi
          tencent.com/vcuda-core: "50"
          tencent.com/vcuda-memory: "8000"

迁移到 Hami:

spec:
  containers:
    - image: your-image
      imagePullPolicy: IfNotPresent
      name: gpu
      resources:
        limits:
          cpu: '2'
          memory: 4Gi
          nvidia.com/gpualloc: 1     # 请求 1 个物理 GPU(必需)
          nvidia.com/gpucores: "50"  # 请求每个 GPU 50% 的计算资源(可选)
          nvidia.com/gpumem: 8000    # 请求每个 GPU 8000MB 的显存(可选)

Hami 到 Hami

重要变更 (v2.5.0 → v2.8.0)

版本参数可用性升级后所需操作
Hami v2.5弹出表单中不包含 Nvidia Runtime Class NameCreate Nvidia Runtime Class不适用
Hami v2.6在新节点上部署插件实例时,必须配置这些参数。更新插件部署参数:
- Nvidia Runtime Class Name: hami-nvidia
- Create Nvidia Runtime Class: true(启用开关)
Hami v2.8Helm 值 devicePlugin.nvidianodeSelector 重命名为 devicePlugin.nvidiaNodeSelector(大写 N)。如果你曾覆盖此值,请在 Helm values 中更新键名。
Hami v2.8监控资源配置已从 devicePlugin.vgpuMonitor.resources 移动到 devicePlugin.monitor.resources如果你自定义过监控资源,请更新该值路径。
Hami v2.8Alauda Build of Hami-WebUI v1.5.0 不兼容。Alauda Build of Hami-WebUI 升级到 v1.10.0。此版本与 Hami v2.7v2.8 兼容。

⚠️ 从 v2.5 升级到 v2.8.0 不应影响现有应用。 ✅ 建议使用 滚动更新 重启应用,以避免出现意外问题。


操作步骤

  1. 如有需要,请先升级 ACP 版本。
  2. Hami v2.8.0 插件包上传到 ACP。
  3. 进入 管理员 -> 集群 -> 目标集群 -> 功能组件 页面,然后点击 升级 按钮,你将看到 Alauda Build of HAMi 可以升级。
  4. 更新一些定义扩展资源的 ConfigMap,它们可用于在 ACP 上设置扩展资源。在你的 gpu 集群中运行以下脚本:
点击展开代码
kubectl apply -f - <<EOF
apiVersion: v1
data:
  dataType: integer
  defaultValue: "1"
  descriptionEn: Number of GPU jobs for resource quota. When create workload, declare how many physical GPUs needs and the requests of gpu core and gpu memory are the usage of per physical GPU
  descriptionZh: 资源配额代表 GPU 任务数。创建负载时代表申请的物理 gpu 个数, 申请的算力和显存都是每个物理 GPU 的使用量
  group: hami-nvidia
  groupI18n: '{"zh": "HAMi NVIDIA", "en": "HAMi NVIDIA"}'
  key: nvidia.com/gpualloc
  labelEn: gpu number
  labelZh: gpu 个数
  limits: optional
  requests: disabled
  resourceUnit: "count"
  relatedResources: "nvidia.com/gpucores,nvidia.com/gpumem"
  excludeResources: "nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory"
  runtimeClassName: ""
kind: ConfigMap
metadata:
  labels:
    features.cpaas.io/enabled: "true"
    features.cpaas.io/group: hami-nvidia
    features.cpaas.io/type: CustomResourceLimitation
  name: cf-crl-hami-nvidia-gpualloc
  namespace: kube-public
---
apiVersion: v1
data:
  dataType: integer
  defaultValue: "20"
  descriptionEn: vgpu cores, 100 cores represents the all computing power of a physical GPU
  descriptionZh: vgpu 算力, 100 算力代表一个物理 GPU 的全部算力
  group: hami-nvidia
  groupI18n: '{"zh": "HAMi NVIDIA", "en": "HAMi NVIDIA"}'
  key: nvidia.com/gpucores
  prefix: limits
  labelEn: vgpu cores
  labelZh: vgpu 算力
  limits: optional
  requests: disabled
  relatedResources: "nvidia.com/gpualloc,nvidia.com/gpumem"
  excludeResources: "nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory"
  runtimeClassName: ""
  ignoreNodeCheck: "true"
kind: ConfigMap
metadata:
  labels:
    features.cpaas.io/enabled: "true"
    features.cpaas.io/group: hami-nvidia
    features.cpaas.io/type: CustomResourceLimitation
  name: cf-crl-hami-nvidia-gpucores
  namespace: kube-public
---
apiVersion: v1
data:
  dataType: integer
  defaultValue: "4000"
  group: hami-nvidia
  groupI18n: '{"zh": "HAMi NVIDIA", "en": "HAMi NVIDIA"}'
  key: nvidia.com/gpumem
  prefix: limits
  labelEn: vgpu memory
  labelZh: vgpu 显存
  limits: optional
  requests: disabled
  resourceUnit: "Mi"
  relatedResources: "nvidia.com/gpualloc,nvidia.com/gpucores"
  excludeResources: "nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory"
  runtimeClassName: ""
  ignoreNodeCheck: "true"
kind: ConfigMap
metadata:
  labels:
    features.cpaas.io/enabled: "true"
    features.cpaas.io/group: hami-nvidia
    features.cpaas.io/type: CustomResourceLimitation
  name: cf-crl-hami-nvidia-gpumem
  namespace: kube-public
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cf-crl-hami-config
  namespace: kube-public
  labels:
    device-plugin.cpaas.io/config: "true"
data:
  deviceName: "HAMi"
  nodeLabelKey: "gpu"
  nodeLabelValue: "on"
EOF

注意

如果你在 v2.7.1 之前的版本中配置了 HAMi 资源配额,请删除后重新配置。 如果你要升级到 Hami v2.8.0,并且还在使用 Alauda Build of Hami-WebUI,请确保 WebUI 版本为 v1.10.0。早期的 v1.5.0 与 Hami v2.8 不兼容。