title: How do I make pods spread evenly across nodes when a new host is added?
body: <h2>Overview</h2>
  <p>Kubernetes scheduling errs on the side of 'not shuffling things around once scheduled and happy' which can lead to quite the level of imbalance in terms of CPU, Memory, and container count distribution. It can also mean that <a href="https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#known-limitations" rel="nofollow noreferrer">sometimes Affinity and Topology rules may not be enforced</a> / as the state of affair changes:</p>
  <h6>With regards to topology spread constraints introduced in v1.19 (stable)</h6>
  <blockquote>
  <p>There's no guarantee that the constraints remain satisfied when Pods are removed. For example, scaling down a Deployment may result in imbalanced Pods distribution.</p>
  </blockquote>
  <h2>Context</h2>
  <p>We are currently making use of <a href="https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/" rel="nofollow noreferrer">pod topology spread contraints</a>, and they are pretty superb, aside from the fact that they only seem to handle skew during scheduling, and not execution (unlike the ability to differentiate with <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/#concepts" rel="nofollow noreferrer">Taints and Tolerations</a>).</p>
  <p>For features such as <a href="https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity" rel="nofollow noreferrer">Node affinity</a>, we're currently waiting on the ability to add <code>RequiredDuringExecution</code> requirements as opposed to <code>ScheduledDuringExecution</code> requirements</p>
  <h2>Question</h2>
  <p><em><strong>My question is</strong></em>, is there a native way to make Kubernetes re-evaluate and attempt to enforce topology spread skew when a new fault domain (topology) is added, without writing my own scheduler?</p>
  <p>Or do I need to wait for Kubernetes to advance a few more releases? ;-) (I'm hoping someone may have a smart answer with regards to combining affinity / topology constraints)</p>