kubernetes - Kubernetes:标记节点上的每个图形卡,以便能够在该卡上调度特定的 pod
问题描述
我有一些具有不同数量 gpu 卡的节点。我希望能够将特定的 pod 分配给某个 gpu 卡,就像我分配任务时的预订一样。
我已经看到,您可以像这样标记节点:
kubectl label node nodaA project-type=ProjectA
但这只是标记一个节点,一个 pod 将分配给它。但我希望能够更具体。
假设我有一个名为NodeA的节点,它有3 张来自Nvidia的GPU 卡。第一张卡是为名为“ CertainOne ”的特定任务保留的,其他两张卡仅可用于其他 pod。
当用户提交的 pod不是“ CertainOne ”时,无论标签是什么,都应该将这些 pod 分配给这 3 张卡。但是当另一个用户提交带有“ CertainOne ”标签的 pod 时,应该始终使用保留卡(此时可能正在使用的另一个正在运行的 pod 应该被丢弃,并且带有“CertainOne”标签的 pod 应该优先使用它)
但我无法找到解决方案。整个想法是,我可以随时更改预订卡,例如更改为另一张卡,还可以更改范围,例如不仅是第一个,还可以是第二个,以便带有“ CertainOne ”标签的吊舱" 应该在第二种情况下分配给卡 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
推荐阅读
- php - 未定义变量:bg footer.php 文件 - Realtor wordpress 主题
- php - 如何使用php类获取类函数中的参数
- java - 多条件 Java 循环
- ruby-on-rails - 通过 API 共享 Rails 模板
- reactjs - 在 fetch 中使用 setState 设置响应数据和状态的布尔值时收到错误
- android - 删除某些项目后,RecyclerView 中的 Firestore Firebase 分页无法正常工作
- python-3.x - 如何在 Keras(tensorflow 后端)中更改(调整)加载模型的丢失率?
- matlab - 关于使用matlab绘制反射系数的问题
- c# - 标签在 Unity C# 中不起作用
- php - 获取州名而不是 Woocommerce 中的代码