我有一个由4个节点组成的kubernetes集群。我部署了一个pod作为deployment,并拥有8个副本。当我部署它时,kubernetes有时会在node1中调度4个pod,其余的4个pod在node2中。在这种情况下,node3和node4没有此容器运行(但其他容器在那里运行)。
我确实理解Pod亲和力和反亲和性,其中他们对pod-anti-affinity有Zookeeper示例,这非常好。这将确保没有2个pod部署在同一节点上。
这很好,但是我的要求略有不同,我想使用节点反亲和性限制k8s可以部署到一个节点的最大pod数。
我需要确保在上面的示例中不会部署超过3个相同pod的实例。我考虑在pod上设置内存/ CPU限制,但这似乎是个坏主意,因为我有不同配置的节点。有什么方法可以实现这一点吗?
(更新1)-我明白我的问题不够清晰。为了进一步澄清,我想要的是限制特定部署的每个节点上pod的最大数量为3个实例。例如,如何告诉k8s不要在每个节点上部署超过3个nginx pod实例?该限制仅应适用于nginx部署,而不适用于其他部署。
(更新2)-为了进一步解释一个场景。 一个k8s集群,有4个工作节点。 2个部署
1.一个nginx部署->副本= 10 2.自定义用户代理部署->副本10
要求-Hey kubernetes,我想在4个节点中安排“自定义用户代理” pod(此示例中的Pod#2),但我想确保每个节点最多只有3个“自定义用户代理”的pod。对于“nginx” pod,不应该有任何限制,这意味着如果k8s在一个节点中安排5个nginx,则我不介意在第二个节点中安排其余的5个。
我确实理解Pod亲和力和反亲和性,其中他们对pod-anti-affinity有Zookeeper示例,这非常好。这将确保没有2个pod部署在同一节点上。
这很好,但是我的要求略有不同,我想使用节点反亲和性限制k8s可以部署到一个节点的最大pod数。
我需要确保在上面的示例中不会部署超过3个相同pod的实例。我考虑在pod上设置内存/ CPU限制,但这似乎是个坏主意,因为我有不同配置的节点。有什么方法可以实现这一点吗?
(更新1)-我明白我的问题不够清晰。为了进一步澄清,我想要的是限制特定部署的每个节点上pod的最大数量为3个实例。例如,如何告诉k8s不要在每个节点上部署超过3个nginx pod实例?该限制仅应适用于nginx部署,而不适用于其他部署。
(更新2)-为了进一步解释一个场景。 一个k8s集群,有4个工作节点。 2个部署
1.一个nginx部署->副本= 10 2.自定义用户代理部署->副本10
要求-Hey kubernetes,我想在4个节点中安排“自定义用户代理” pod(此示例中的Pod#2),但我想确保每个节点最多只有3个“自定义用户代理”的pod。对于“nginx” pod,不应该有任何限制,这意味着如果k8s在一个节点中安排5个nginx,则我不介意在第二个节点中安排其余的5个。