Sobes.tech
Middle

Comment répartir uniformément les pods dans les zones de disponibilité?

sobes.tech IA

Réponse de l'IA

Pour répartir uniformément les pods dans les zones de disponibilité dans Kubernetes, plusieurs approches sont utilisées :

  • Contraintes de répartition de topologie des pods : La méthode la plus moderne et flexible. Permet de définir des règles de répartition des pods basées sur des étiquettes de charges de travail (étiquettes de pods) sur des nœuds dans des topologies spécifiées (par exemple, zones de disponibilité, régions, noms d'hôte).

    topologySpreadConstraints:
      - maxSkew: 1 # Déviation maximale du nombre de pods entre les zones
        topologyKey: topology.kubernetes.io/zone # Clé de topologie, ici la zone de disponibilité
        whenUnsatisfiable: ScheduleAnyway # Que faire si la contrainte ne peut pas être respectée (ScheduleAnyway ou DoNotSchedule)
        labelSelector: # Étiquettes des pods auxquelles la contrainte s'applique
          matchLabels:
            app: my-app
    
  • Affinité et anti-affinité des nœuds : On peut utiliser nodeSelector ou nodeAffinity en combinaison avec des étiquettes de nœuds représentant les zones de disponibilité, mais c'est moins flexible pour une répartition automatique. L'anti-affinité des pods peut être utilisée pour éviter de placer plusieurs pods de la même application sur des nœuds dans une même zone, mais cela peut conduire à une utilisation insuffisante dans une zone si les autres sont surchargées.

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.kubernetes.io/zone
              operator: In
              values:
              - zone-a
              - zone-b
              - zone-c
    
  • Stratégies de déploiement : En combinaison avec Contraintes de répartition de topologie des pods, les stratégies de déploiement (mise à jour progressive) aident à répartir progressivement les nouveaux pods dans les zones.

Recommandations :

  • Utilisez Contraintes de répartition de topologie des pods comme méthode principale.
  • Assurez-vous que vos nœuds ont des étiquettes correctes pour les zones de disponibilité (topology.kubernetes.io/zone).
  • Surveillez la répartition des pods après l'application de la contrainte.