首页 > 解决方案 > 是否可以强制 k8s worker 只使用特定的 GPU?

问题描述

我有一个本地 k8s GPU 集群,其中有几个计算节点,分别有 8 个 GPU。因为我们正在迁移到 k8s,而且还有一些项目要使用 GPU,所以我必须保留一些 k8s 不允许使用的 GPU。此外,一些项目需要使用连续的 GPU(我的意思是,使用物理上相邻的 PCIE 总线),因此有必要让这些 GPU 特定。

那么问题来了,是否可以强制 k8s worker 只使用特定的 GPU?例如,我想配置我的 k8s worker 分配 0 到 4 的 GPU,而不能分配 4 到 7 的 GPU。

谢谢!

标签: dockerkubernetescluster-computingmulti-gpu

解决方案


如果您希望您的作业从不使用其中一个 gpu 节点,您可以使用 noschedule 污点来污染此节点,例如:

kubectl taint nodes aks-gpuv100small.. no=k8s:NoSchedule  

如果您希望您的作业仅在特定 gpu 节点上运行,您可以将标签添加到此节点并将 nodeSelectors 添加到您的作业

 kubectl label nodes aks-gpuv100small.. k8s=gpu
 nodeSelector:
   k8s: gpu

如果您希望在 gpu 节点内仅将某些设备公开给作业,您可以将以下环境变量添加到您的作业中

CUDA_VISIBLE_DEVICES=0,1,2,3

推荐阅读