我们有一个 Kubernetes 集群。
现在我们想使用 GPU 节点进行扩展(这样这将是 Kubernetes 集群中唯一具有 GPU 的节点)。
我们希望避免 Kubernetes 在这些节点上调度 pod,除非它们需要 GPU。
并非我们所有的管道都可以使用 GPU。绝对大多数仍然仅占用 CPU 资源。
配备 GPU 的服务器可能非常昂贵(例如,每台服务器 Nvidia DGX 的价格可能高达 150 美元/k)。
如果我们只是将 DGX 节点添加到 Kubernetes 集群,那么 Kubernetes 也会在那里调度非 GPU 工作负载,这将浪费资源(例如,稍后调度并且确实需要 GPU 的其他作业,可能还有其他非 GPU 工作负载) GPU 资源(如 CPU 和内存)已耗尽,因此它们必须等待非 GPU 作业/容器完成)。
是否有一种方法可以在 Kubernetes 中自定义 GPU 资源调度,以便仅在那些需要 GPU 的昂贵节点上调度 pod?如果不这样做,他们可能必须等待其他非 GPU 资源的可用性,例如非 GPU 服务器上的 CPU 和内存...
谢谢。
最佳答案
您可以为此使用标签和标签选择器。 kubernates docs
更新:示例
apiVersion: v1
kind: Pod
metadata:
name: with-gpu-antiAffinity
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: resources
operator: In
values:
- cpu-only
关于docker - kubernetes 调度昂贵的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53859237/