首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义kuberenetes节点以选择特定pod的唯一nodeSelector

如何定义kuberenetes节点以选择特定pod的唯一nodeSelector
EN

Stack Overflow用户
提问于 2022-07-20 17:09:44
回答 1查看 39关注 0票数 0

好的,我们可以选择以下方法来选择Kubernetes计划特定Pods的位置:

  1. 节点标签的nodeSelector字段匹配

地雷K8的环境共享系统,不同的团队可以操作,并运行10个节点的幕后。每个团队都是独立的,他们只是在自己的命名空间上启动了一些部署,让Kubernetes决定哪个节点荚应该运行,

代码语言:javascript
复制
TeamA-NamespaceA-Scheduled on Node-1,3,7,4,8
TeamB-NamespaceB-Scheduled on Node-5,1,9,10,6,4,3
TeamC-NamespaceC-Scheduled on Node-1,2,3,4,5,6,7,8

我们希望保留一些特定于我们团队的节点--基本上,在这个命名空间上发生的任何部署都应该在特定的节点上运行,是的,我可以为pod部署规范选择nodeSelector,例如

代码语言:javascript
复制
TeamD-NamespaceD-Scheduled on Node-5,6

我需要应用到另一个名称空间的限制不应该是将吊舱调度到专用于名称空间(NamespaceD)的特定保留节点上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-20 17:39:52

为此,您可以使用taintstolerations

基本上,您可以使用专用的团队名称来taint您的节点。如果一个pod没有用于该tolerationtaint,那么它将不会被调度在该节点上。

比方说,team-d必须使用节点node-5node-6。然后,您可以将taint节点node-5node-6作为:

代码语言:javascript
复制
kubectl taint nodes node-5 node-6 team=team-d:NoSchedule

这将在节点上设置NoSchedule污染。意思是,如果一个吊舱不能容忍这种情况,它将“不会被安排在这里”。

然后,在部署中的荚模板中添加如下内容:

代码语言:javascript
复制
tolerations:
- key: "team"
  operator: "Equal"
  value: "team-d"
  effect: "NoSchedule"

这将只使此部署的toleratetaint on node-5node-6的吊舱,并允许在这些节点上进行调度。

这样,你不仅可以控制亲和力(豆荚应该去的地方),也可以控制反亲和力(豆荚不应该去的地方)。您可以阅读更多关于taintstolerations 这里的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73055666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档