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

最佳答案

没有办法像Daemonset那样在每个节点上强制使用x个pod。但是,通过一些计划,您可以使用pod anti affinity在整个节点上强制一个相当均匀的pod分配。
假设我们有10个节点。首先,我们需要具有30个Pod(每个节点3个)的ReplicaSet(部署)。接下来,我们要设置pod反关联性,以使用权重相对较高的preferredDuringSchedulingIgnoredDuringExecution并匹配部署的标签。这将导致调度程序宁愿不调度已存在相同容器的容器。一旦每个节点有1个容器,该循环将重新开始。具有2个容器的节点的权重将低于具有1个容器的节点的权重,因此下一个容器应尝试去那里。
请注意,这不如DaemonSet精确,并且在扩展或缩小集群时可能会遇到一些限制。
扩展集群的一种更可靠的方法是简单地创建多个具有不同名称但彼此相同的DaemonSet。由于DaemonSet将具有相同的标签,因此它们都可以通过相同的服务公开。

关于Kubernetes:将副本均匀分布在整个集群中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57057561/

10-16 16:55