AWS EKS completly ignores 'topologySpreadConstraints'

0

Hey there,

When using AWS EKS 1.21, currently 1 node running, (incl. cluster-autoscaler with correctly functioning asg) and creating a deployment with 5 replicas and specifying 'topologySpreadConstraints' like this:

      topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: kubernetes.io/hostname
          whenUnsatisfiable: DoNotSchedule
          labelSelector:
            matchLabels:
              app: xxx

the scheduler ignores this completly and schedules all pods on the same node. (even though there is the 'DoNotSchedule') How can this be fixed? I want the cluster-autoscaler to see, that 2 nodes can not be scheduled.

Thanks in advance.

已提問 2 年前檢視次數 2227 次
1 個回答
0
已接受的答案

It is Kubernetes scheduler, not EKS, that schedules the pod.

That said, because you only had one node in one zone, the scheduler did not violate your constraints.

The skew is always 0. Please refer here as to how the skew is calculated.

Cluster Autoscaler does not consider this constraint when making scaling decisions.

You might want to consider increase the minimal and desired instance in your ASG.

Jason_S
已回答 2 年前
  • Thank you. Is there a way to do this without having minimal / desired capacity set?

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南