docker - 是否可以强制 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。
谢谢!
解决方案
如果您希望您的作业从不使用其中一个 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
推荐阅读
- azure - 使用文件流压缩文件并上传到 Azure Blobstorage
- powershell - powershell 脚本在 100 台计算机上重新启动服务
- c# - UdpListener、Webhook 和 HttpListener
- google-places-api - Google Places API 自动完成,如何添加第二个地址
- amazon-web-services - 如何将新的策略定义或 ADMX 文件导入 AWS 托管的 Active Directory?
- sql-server-2008 - In Case 声明更新日期不超过今天
- python - python csv进行计算时如何避免无穷大
- mongodb - 使用 MongoDB 构建数据的建议
- spring-boot - Spring Cloud Config 通过 Vault 和 Git 解析秘密属性
- python - 如何在不使用numpy的情况下将两个数组中的公共元素复制到一个新数组中