Kubernetes:标记节点上的每个图形卡,以便能够在该卡上调度特定的 Pod



我有一些节点具有不同数量的GPU卡。我希望能够将特定的 pod 分配给某个 GPU 卡,就像在我为其分配任务时进行预留一样。

我已经看到,您可以像这样标记节点:

kubectl label node nodaA project-type=ProjectA

但这只是标记一个节点,一个 Pod 将被分配给它。但我希望能够更具体。

假设我有一个名为NodeA的节点,它有 3 个来自NvidiaGPU 卡。第一张卡是为名为">CertainOne"的特定任务保留的,另外两张卡只是可用于其他吊舱。

当用户提交不是">CertainOne"的 Pod 时,无论标签如何,都应将 Pod 分配给这 3 张卡。但是,当另一个用户提交带有"CertainOne"标签的 pod 时,应始终使用保留的卡(此时可能正在使用的另一个正在运行的 pod 应删除,标签为CertainOne的 pod 应将其用作优先级(

但我无法找到解决方案。整个想法是,我可以随时更改预订卡,例如更改为另一张卡,还可以更改范围,例如不仅要说第一张,还要说第二张,因此在第二种情况下,应将带有标签">CertainOne"的 pod 分配给卡 1 或卡 2。

这可能吗?还是有其他类似的解决方案?

但这只是标记一个节点,一个 pod 将被分配给它。 但我希望能够更具体。

但我无法找到解决方案。

这可能吗?还是有其他类似的解决方案?

不幸的是,根据我的经验,我有个坏消息要告诉你,因为我从未见过你想要的解决方案。 非常标准的方法是在带有适当标签和选择器的尖峰中使用NodeAffinity。但这可以保证您仅在选定的节点上调度 Pod,这不符合您的要求:(

$ kubectl label nodes nodeA k8s-node=gpunode
apiVersion: v1
kind: Pod
metadata:
name: runongpunode
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: k8s-node
operator: In
values:
- gpunode

相关内容

  • 没有找到相关文章

最新更新