首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes AntiAffinity -每个节点相同豆荚的极限最大数目

Kubernetes AntiAffinity -每个节点相同豆荚的极限最大数目
EN

Stack Overflow用户
提问于 2020-05-22 23:13:45
回答 3查看 7.3K关注 0票数 10

我有一个有4个节点的kubernetes集群。我部署了一个吊舱作为部署,有8个副本。当我部署这个时,kubernetes有时会在node1中调度4个豆荚,而在node2中调度剩下的4个豆荚。在本例中,node3和node4没有运行这个容器(但是其他容器运行在那里)

我确实理解Pod亲和力和抗亲和力,在这里,他们有关于pod-抗亲和力的动物园管理员示例,这是很棒的。这将确保不会在同一节点上部署任何2个豆荚。

这很好,但是我的需求略有不同,我想限制k8s可以部署到一个具有节点反亲和力的节点的最大数量。

在上面的示例中,我需要确保在节点上部署不超过3个相同荚的实例。我曾想过对荚设置内存/cpu限制,但这似乎是个坏主意,因为我有不同配置的节点。有办法做到这一点吗?

(更新1)-我知道我的问题不够清楚。为了进一步澄清,我想要的是,对于一个特定的部署,将一个pod的实例限制在每个节点最多3个。例如,如何告诉k8s每个节点不部署3个以上的nginx实例?限制只应适用于nginx部署,而不应适用于其他部署。

(更新2)-以一种情景作进一步解释。一个k8s集群,包含4个工作节点。2次部署

  1. nginx部署->副本= 10
  2. 自定义用户代理部署->副本10

需求--嘿,kubernetes,我想在4个节点中调度“自定义用户代理”pod (本例中为Pod #2 )的10个Pods,但是我想确保每个节点最多只能有3个‘定制用户代理’。对于' nginx‘荚,不应该有任何这样的限制,这意味着我不介意k8s在一个节点中调度5 nginx,而在第二个节点中调度5 nginx。

EN

回答 3

Stack Overflow用户

发布于 2021-01-30 13:24:38

我自己没有找到这方面的正式文件。但我认为您可以在preferredDuringSchedulingIgnoredDuringExecution选项中使用podantiaffinity。这将阻止k8s在单个节点上放置相同的节点,但如果不可能,它将选择最符合条件的现有节点。官方文档这里

代码语言:javascript
复制
affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - podAffinityTerm:
          labelSelector:
            matchLabels:
              name: deployment-name
          topologyKey: kubernetes.io/hostname
        weight: 100
票数 3
EN

Stack Overflow用户

发布于 2020-05-23 08:05:27

因此,为每个节点设置一个最小的荚数可以通过拓扑键实现。

是的,您可以通过与"kubernetes.io/hostname".设置为拓扑键的pod关联,通过部署对象在每个节点上生成一个pod。

使用上面的示例,您将具有以下行为:

我希望这就是你想要的:

票数 2
EN

Stack Overflow用户

发布于 2021-03-19 10:07:03

我相信您想要实现的可以通过maxSkew参数的pod拓扑扩展约束。请查看原始文档https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61965256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档