我有一个预置的k8s GPU集群,它有几个计算节点,分别拥有8个GPU。因为我们正在迁移到k8s的路上,而且还有一些剩余的项目需要使用GPU,所以我不得不保留一些k8s不允许使用的GPU。此外,一些项目需要使用连续的GPU(我的意思是,使用物理上相邻的PCIE总线),因此有必要特定于这些GPU。
所以问题是,有没有可能强制k8s worker只使用特定的图形处理器?例如,我想配置我的k8s worker来分配从0到4的GPU,而不能分配从4到7的GPU。
谢谢!
发布于 2021-06-06 19:09:05
如果您希望您的作业从不使用任何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
发布于 2021-06-06 18:23:44
这将取决于你的设备插件的具体情况,如果你指的是Nvidia插件,我不这么认为,至少没有一些自定义的工作。https://github.com/NVIDIA/go-gpuallocator库确实支持模块化分配策略,但我不认为这是作为设备插件中的一个选项专门公开的。它在配置方面实际上并没有太多的东西。但是你可以用叉子把它叉起来然后进城。
https://stackoverflow.com/questions/67857773
复制相似问题