我正在使用Kubernetes来协调我的微服务。
在K8S集群中,我只有CPU实例和其他带有GPU的实例。
我想知道如何在没有GPU的情况下强制特定PODS在实例上运行?
谢谢
答案 0 :(得分:2)
与explained here一样,您可以使用污点和公差来确保某些Pod不会安排在具有GPU的节点上。
所有带有GPU的节点都可以这样污染:
kubectl taint nodes <nodename> hasgpu=true:NoSchedule
现在将以下内容添加到Pod的规格中-需要GPU。这样可以确保任何不具有此容差的Pod都不会进入连接了GPU的实例。
tolerations:
- key: "hasgpu"
operator: "Equal"
value: "true"
effect: "NoSchedule"
您可以查看有关污点和公差in this blog
的详细说明以及示例尽管在YAML文件中添加容忍并不是那么干净,您可以使用准入控制器使用准入控制器动态添加容忍。这将为请求特定资源(例如GPU)的Pod添加容差。您可以find more details here,此解决方案很优雅,但是工作相对较多。