Kubernetes:在整个集群中平均分布副本

时间:2019-07-16 12:43:48

标签: kubernetes kube-scheduler

我们可以使用DaemonSet对象在每个节点上部署一个副本。我们如何每个节点部署2个副本或3个副本?我们如何实现这一目标。请让我们知道

2 个答案:

答案 0 :(得分:1)

无法像Daemonset那样在每个节点上强制x个pod。但是,通过一些计划,您可以使用pod anti affinity强制在节点上均匀分配pod。

假设我们有10个节点。首先,我们需要具有30个Pod(每个节点3个)的ReplicaSet(部署)。接下来,我们要设置Pod的反关联性,以使用权重较高的“ preferredDuringSchedulingIgnoredDuringExecution”并匹配部署的标签。这将导致调度程序宁愿不调度已存在相同容器的容器。一旦每个节点有1个容器,该循环将重新开始。具有2个容器的节点的权重将低于具有1个容器的节点的权重,因此下一个容器应尝试去那里。

请注意,这不如DaemonSet精确,并且在扩展或缩小集群时可能会遇到一些限制。

扩展集群的一种更可靠的方法是简单地创建多个具有不同名称但彼此相同的DaemonSet。由于DaemonSet具有相同的标签,因此它们都可以通过相同的服务公开。

答案 1 :(得分:0)

默认情况下,kubernetes调度程序更喜欢在不同的节点上调度pod。

  1. Kubernetes调度程序将首先根据您的亲和力/反亲和力/资源限制/等来确定可以部署Pod的所有可能节点。

  2. 然后,调度程序将找到可以部署Pod的最佳节点。如果可能的话,调度程序将自动将Pod调度到单独的可用区域和单独的节点上。

您可以自己尝试。例如,如果您有3个节点,请尝试部署Pod的9个副本。您将看到每个节点将运行2个Pod。