如何在 HAMi 上使用 Kueue
在 HAMi 中使用 Kueue
本指南将帮助你使用 Kueue 来管理 HAMi vGPU 资源,包括启用 Deployment 支持、配置 ResourceTransformation,以及 创建请求 vGPU 资源的工作负载。
前置条件
在开始之前,请确保:
- 集群中已安装 HAMi
- 集群中已安装 Kueue
快速开始
安装 Kueue
如果尚未安装 Kueue,可以使用以下命令进行安装:
kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.15.0/manifests.yaml
安装完成后,Kueue 控制器将运行在 kueue-system 命名空间中。
在 Kueue 中启用 Deployment 支持
Kueue 支持管理 Deployment,但你需要在 Kueue 配置中启用 deployment 集成。
配置 Kueue
编辑 Kueue manager 的配置以启用 Deployment 支持:
kubectl edit configmap kueue-manager-config -n kueue-system
添加如下配置:
apiVersion: config.kueue.x-k8s.io/v1beta2
kind: Configuration
integrations:
frameworks:
- "deployment"
- "pod"
更新配置后,重启 kueue-manager:
kubectl rollout restart deployment kueue-manager -n kueue-system
配置 ResourceTransformation
ResourceTransformation 允许 Kueue 将一种形式的资源请求转换为另一种形式。
对于 HAMi vGPU 资源,这使得 Kueue 可以使用聚合指标
(如 nvidia.com/total-gpucores 和 nvidia.com/total-gpumem)来跟踪 GPU 资源,
而不是单独的 nvidia.com/gpu 请求。
编辑 kueue-manager 配置以添加 ResourceTransformation:
kubectl edit configmap kueue-manager-config -n kueue-system
将 ResourceTransformation 配置添加到同一个 Configuration 对象中:
apiVersion: config.kueue.x-k8s.io/v1beta2
kind: Configuration
integrations:
frameworks:
- "deployment"
- "pod"
resources:
transformations:
- input: nvidia.com/gpucores
strategy: Replace
multiplyBy: nvidia.com/gpu
outputs:
nvidia.com/total-gpucores: "1"
- input: nvidia.com/gpumem
strategy: Replace
multiplyBy: nvidia.com/gpu
outputs:
nvidia.com/total-gpumem: "1"
更新配置后,重启 kueue-manager:
kubectl rollout restart deployment kueue-manager -n kueue-system
创建 ResourceFlavor
首先,创建一个 ResourceFlavor:
apiVersion: kueue.x-k8s.io/v1beta2
kind: ResourceFlavor
metadata:
name: hami-flavor
spec:
nodeLabels:
gpu: "on"
该 ResourceFlavor 仅适用于启用了 vGPU 功能的节点。
创建 ClusterQueue
创建一个用于跟踪 HAMi 资源的 ClusterQueue:
apiVersion: kueue.x-k8s.io/v1beta2
kind: ClusterQueue
metadata:
name: hami-queue
spec:
resourceGroups:
- coveredResources: ["nvidia.com/gpu", "nvidia.com/total-gpucores", "nvidia.com/total-gpumem"]
flavors:
- name: hami-flavor
resources:
- name: "nvidia.com/gpu"
nominalQuota: 80
- name: "nvidia.com/total-gpucores"
nominalQuota: 200
- name: "nvidia.com/total-gpumem"
nominalQuota: 10240
该 ClusterQueue 跟踪以下资源:
nvidia.com/total-gpucores:所有 vGPU 的 GPU 核心总量(每个单位表示 1% 的 GPU 核心)nvidia.com/total-gpumem:所有 vGPU 的 GPU 显存总量(单位为 MiB)
创建 LocalQueue
创建一个引用该 ClusterQueue 的 LocalQueue:
apiVersion: kueue.x-k8s.io/v1beta2
kind: LocalQueue
metadata:
name: hami-local-queue
namespace: default
spec:
clusterQueue: hami-queue
创建请求 vGPU 资源的工作负载
现在,你可以创建请求 vGPU 资源的 Deployment。 Kueue 将通过 ResourceTransformation 自动转换资源请求。