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.

asked 2 years ago2098 views
1 Answer
0
Accepted Answer

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
answered 2 years ago
  • Thank you. Is there a way to do this without having minimal / desired capacity set?

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions