在独特的节点上部署Kubernetes Pods

3
有没有一种方法可以在独特的节点上在Kubernetes中部署副本集?
所有我能找到的关于Kubernetes NodeSelectors,(anti-)affinity等的文档都似乎与指定您想要或不想要pod所在的特定节点有关。我不介意我的pod在哪些节点上,我只是不希望同一个deployment中的两个pod在同一个节点上 - 我想将它们分散开来。
这似乎是一个足够简单的事情 - 在Mesos中,您可以应用像“HOSTNAME:unique”这样的约束来实现它 - 但我找不到Kubernetes的等效选项。请问有人可以帮忙吗?

1
守护进程集?https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ - ozlevka
1
可能是重复问题,请查看第一个答案:如何在独占节点上运行两个Pods - Szymon Maszke
谢谢,我已经检查过了,你是对的——这是一个重复的问题。 - hiiamelliott
1
我认为第一个答案是正确的,使用Pod反亲和性。可能重复的第一个答案似乎过于复杂。 - Joshua Oliphant
1个回答

2
与下面评论中描述的第一个答案相比,我认为正确的方法是按照文档中描述的定义 pod anti-affinity 。更具体地说:

规则的形式是“如果X已经运行一个或多个满足规则Y的pod,则此pod应该(或在反亲和性的情况下不应该)在X中运行”。

请随时分享您的场景细节以提出解决方案。当然,如果您想要仅在计算平面上运行部署或计算+控制平面,您可以选择 Deployment 或后者的 DaemonSet

1
我从未跟进过这个线程,但是在我有了几年更多的Kubernetes经验后,我知道pod反亲和力将是解决方案。将spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.podAffinityTerm设置为与Pod自身标签匹配的内容,意味着它不会在同一节点上启动来自同一部署的第二个Pod。 - hiiamelliott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接