这似乎应该足够简单,但是我一直找不到答案。
我们有三个标记节点:
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
在单个节点上分配mm-sa
的16个副本)。
答案 0 :(得分:2)
Kubernetes会自动将复制控制器或服务中的Pod散布到单区域群集中的各个节点上。因此,如果没有其他节点,则应使用@David Maze的解决方案。但是,由于您提到不想在其他节点上进行调度,因此建议使用 nodeSelector 。通过使用 nodeSelector ,只要该节点在YAML中具有相同的键值对,那么该窗格就可以在该节点上进行调度。
您可以在此处了解有关 nodeSelector 的更多信息:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector