这似乎应该足够简单,但是我还没有找到答案。
我们有三个标记的节点:thalia0
thalia1
thalia2
以及一个名为mm-sa
的部署规范。
我只想将mm-sa
的副本数设置为48,并让调度程序为每个节点分配16个pod。
我能找到的最接近的是这里,但看起来似乎尚不可用:Node affinity for even spread of pods across multiple availability zones。我还发现了它why-kubernetes-scheduler-ignores-nodeaffinity,但是它说:“根据文档,每个可用于计划的pod的节点必须存在nodeAffinity,并且选择权重总和最大的节点。”
这似乎是一个简单的用例,但是我不知道如何在不使用幼稚方法的情况下实现它,例如在定义名为mm-sa1
,... mm-sa3
的3个不同部署并使用nodeSelector
进行相应分配的情况下。 (注意:我目前正在使用nodeSelector
在单个节点上分配16个副本的mm-sa
)。
最佳答案
Kubernetes将自动将复制 Controller 或服务中的Pod分布在单区域群集中的各个节点上。因此,如果没有其他节点,则应使用@David Maze的解决方案。但是,由于您提到不想在其他节点上进行调度,因此建议您使用nodeSelector。通过使用nodeSelector,只要该节点在YAML中具有相同的键/值对,该 Pane 就可以在该节点上进行调度。
您可以在此处阅读有关nodeSelector的更多信息:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
关于kubernetes - 如何在多个节点之间分配相等的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58345021/