Topology Spread Constraint

Topology Spread Constraints permettent de répartir la charge sur plusieurs domaines (zones, régions, etc.) topologiques. C'est utile pour améliorer la haute disponibilité et la résilience en répartissant les Pods sur plusieurs zones, régions, etc.

topologySpreadConstraints utilise topologyKey pour répartir les Pods sur les domaines correspondant à la clé, par exemple :

    topologySpreadConstraints:
      # Différence maximale entre deux domaines,
      # ex. un domaine ne peut pas avoir plus d'1 Pod qu'un autre
      - maxSkew: 1

        # Clé de topologique utilisée pour définir le domaine
        # Les Pods seront répartis sur différentes zones
        topologyKey: topology.kubernetes.io/zone
        
        # Comportement si la contrainte ne peut pas être respectée
        whenUnsatisfiable: DoNotSchedule

        # Seuls les Pods correspondant à ces labels seront contraints
        labelSelector:
          matchLabels:
            app: vote

Mettre à jour le Deployment Vote pour équilibrer la charge dans la région courante.

Quel est le comportement de topologySpreadConstraints par rapport à Node/Pod Affinity ?