Kubernetes豆荚反亲和力-基于标签均匀分布豆荚?

Kubernetes豆荚反亲和力-基于标签均匀分布豆荚?,kubernetes,scheduling,affinity,Kubernetes,Scheduling,Affinity,我们发现我们的Kubernetes集群往往有热点,某些节点比其他节点获得的应用程序实例多得多 在本例中,我们部署了大量Apache Airflow实例,一些节点的web或调度器组件比其他节点多3倍 是否可以使用反亲和力规则强制POD在集群中更均匀地分布 例如,“首选标签吊舱最少的节点组件=气流网”?“ 如果反亲和力不起作用,我们还应该研究其他机制吗?您是否尝试过配置kube调度程序?? kube调度程序通过两步操作为pod选择一个节点: 筛选:查找可以调度Pod的节点集 评分:对剩余节点进行排

我们发现我们的Kubernetes集群往往有热点,某些节点比其他节点获得的应用程序实例多得多

在本例中,我们部署了大量Apache Airflow实例,一些节点的web或调度器组件比其他节点多3倍

是否可以使用反亲和力规则强制POD在集群中更均匀地分布

例如,“首选标签吊舱最少的节点
组件=气流网”
?“


如果反亲和力不起作用,我们还应该研究其他机制吗?

您是否尝试过配置
kube调度程序?

kube调度程序通过两步操作为pod选择一个节点:

  • 筛选
    :查找可以调度Pod的节点集
  • 评分
    :对剩余节点进行排序,以选择最合适的Pod位置
:可用于指定kube调度程序运行以筛选和评分节点的和

kube-scheduler --policy-config-file <filename>
kube调度程序--策略配置文件
您的场景的优先事项之一是:

  • BalancedResourceAllocation
    :支持资源使用平衡的节点

尝试将其添加到部署/StatefulSet
.spec.template

      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: "component"
                  operator: In
                  values:
                  - airflow-web
              topologyKey: "kubernetes.io/hostname"

你能再解释一下它的作用吗?猜它是->并且需要1.19。我们在1.16,但还是很高兴知道。如果另一个解决方案没有出现,Up-voted将接受。谢谢我们这里的一个问题是,所有节点的资源使用率都很低,并且都有很多很小的临时豆荚。我们发现了两个短暂的小吊舱问题-(1)是docker速率限制问题,(2)是PLEG问题-即内存/cpu低,但由于节点创建/删除了太多吊舱,吊舱管理开销变得有问题。这会让我们实现类似“所有合理节点选项的循环”吗?例如,找到所有适合平衡的节点,然后随机选择一个节点,这样它就不会成为第一个节点的热点?(这似乎经常发生)。