kubernetes - 如何在多个节点之间分配相等的部署

标签 kubernetes kubernetes-pod

这似乎应该足够简单,但是我还没有找到答案。

我们有三个标记的节点:
thalia0thalia1thalia2
以及一个名为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/

相关文章:

kubernetes - 如何在 kubectl run 中从 ConfigMap 设置 Env?

Kubernetes [RBAC] : User with access to specific Pods

kubernetes - 如何找出kubernetes中calico CNI分配给每个节点的podcidr

kubernetes - 与 HELM 共享依赖项

kubernetes - microk8s 损坏的 K8s 仪表板和 Kubeflow 仪表板

go - 使用K8S Rest API从特定节点获取Pod

kubernetes - pod定义中重复的env变量名称,确定最终值的优先规则是什么?

kubernetes - 从 Kubernetes Pod/容器内部识别节点的区域

elasticsearch - 使用无法访问的群集IP的kubernetes api

docker - OpenShift 和持久性 Redis 配置