升级

本文将介绍如何从 GPU-manager 或旧版 Hami(版本 2.5)升级到最新的 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.7.1)

版本参数可用性升级后必需操作
Hami v2.5弹出表单中不包含Nvidia Runtime Class NameCreate Nvidia Runtime Class 参数。无需操作
Hami v2.6部署插件实例到新节点时,必须配置这些参数。更新插件部署参数:
- Nvidia Runtime Class Name: hami-nvidia
- Create Nvidia Runtime Class: true(启用开关)

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


操作步骤

  1. 如有需要,升级 ACP 版本。
  2. Hami v2.7.1 插件包上传至 ACP。
  3. 进入 管理员 -> 集群 -> 目标集群 -> 功能组件 页面,点击 升级 按钮,即可看到 Alauda Build of HAMi 可升级。
  4. 更新定义扩展资源的部分 ConfigMaps,可用于在 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

注意

如果您在 2.7.1 之前的版本中配置了 hami 资源的资源配额,请删除并重新配置。