好的,我们可以选择以下方法来选择Kubernetes计划特定Pods的位置:
nodeSelector字段匹配地雷K8的环境共享系统,不同的团队可以操作,并运行10个节点的幕后。每个团队都是独立的,他们只是在自己的命名空间上启动了一些部署,让Kubernetes决定哪个节点荚应该运行,
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,例如
TeamD-NamespaceD-Scheduled on Node-5,6我需要应用到另一个名称空间的限制不应该是将吊舱调度到专用于名称空间(NamespaceD)的特定保留节点上。
发布于 2022-07-20 17:39:52
为此,您可以使用taints和tolerations。
基本上,您可以使用专用的团队名称来taint您的节点。如果一个pod没有用于该toleration的taint,那么它将不会被调度在该节点上。
比方说,team-d必须使用节点node-5和node-6。然后,您可以将taint节点node-5和node-6作为:
kubectl taint nodes node-5 node-6 team=team-d:NoSchedule这将在节点上设置NoSchedule污染。意思是,如果一个吊舱不能容忍这种情况,它将“不会被安排在这里”。
然后,在部署中的荚模板中添加如下内容:
tolerations:
- key: "team"
operator: "Equal"
value: "team-d"
effect: "NoSchedule"这将只使此部署的tolerate、taint on node-5和node-6的吊舱,并允许在这些节点上进行调度。
这样,你不仅可以控制亲和力(豆荚应该去的地方),也可以控制反亲和力(豆荚不应该去的地方)。您可以阅读更多关于taints和tolerations 这里的信息。
https://stackoverflow.com/questions/73055666
复制相似问题