更新时间:2025-07-07 GMT+08:00
兼容Kubernetes默认GPU调度模式
开启GPU虚拟化后,建议在工作负载调度GPU时使用显存隔离模式(设置volcano.sh/gpu-mem.128Mi资源)或算显隔离模式(同时设置volcano.sh/gpu-mem.128Mi和volcano.sh/gpu-core.percentage资源)。同时,该机制仍兼容Kubernetes默认GPU调度模式,支持使用nvidia.com/gpu资源的工作负载。
在工作负载中声明nvidia.com/gpu资源:
- 若nvidia.com/gpu被设置为小数,系统将通过GPU虚拟化实现显存隔离,并按设定比例分配GPU显存,最终分配给容器的显存量需为128MiB的整数倍,否则自动向下取整。例如,在16GiB的GPU上,nvidia.com/gpu设置为0.5,则容器将被分配0.5×16GiB=8GiB=8192MiB(128MiB的64倍)。
- 若nvidia.com/gpu被设置为整数,则使用整卡GPU资源。在开启GPU虚拟化之前,已使用nvidia.com/gpu资源的工作负载不会自动转换为虚拟化GPU,而是继续使用整卡资源。

开启GPU虚拟化后,在工作负载中声明nvidia.com/gpu等价于开启虚拟化GPU显存隔离,可以和显存隔离模式的工作负载共用一张GPU卡,但无法与算显隔离模式负载共用一张GPU卡。
约束与限制
使用GPU虚拟化兼容Kubernetes默认GPU调度模式,要求配套的CCE AI 套件 (NVIDIA GPU)插件版本为2.0.10及以上、Volcano调度器插件版本为1.10.5及以上。
兼容Kubernetes默认GPU调度模式示例
- 使用kubectl连接集群。
- 创建一个使用nvidia.com/gpu资源的工作负载。
创建gpu-app.yaml文件,示例如下:
apiVersion: apps/v1 kind: Deployment metadata: name: gpu-app namespace: default spec: replicas: 1 selector: matchLabels: app: gpu-app template: metadata: labels: app: gpu-app spec: schedulerName: volcano containers: - image: <your_image_address> # 请替换为您的镜像地址 name: container-0 resources: requests: cpu: 250m memory: 512Mi nvidia.com/gpu: 0.1 # 申请GPU的数量 limits: cpu: 250m memory: 512Mi nvidia.com/gpu: 0.1 # GPU数量的使用上限 imagePullSecrets: - name: default-secret
- 执行以下命令,创建应用。
kubectl apply -f gpu-app.yaml
- 登录容器查看容器被分配显存总量。
kubectl exec -it gpu-app -- nvidia-smi
预期输出:
Thu Jul 27 07:53:49 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA A30 Off | 00000000:00:0D.0 Off | 0 | | N/A 47C P0 34W / 165W | 0MiB / 2304MiB | 0% Default | | | | Disabled | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
预期输出表明,Pod可使用的显存总量为2304MiB。
本示例中,GPU节点上的显存总量为24258MiB,而24258MiB * 0.1 = 2425.8MiB并非128MiB的整数倍,因此进行向下取整至18倍,即18 * 128MiB=2304MiB。
父主题: GPU虚拟化