Sobes.tech
Middle

Hoe verdeel je de pods gelijkmatig over de beschikbaarheidszones?

sobes.tech AI

Antwoord van AI

Om pods gelijkmatig over de beschikbaarheidszones in Kubernetes te verdelen, worden verschillende benaderingen gebruikt:

  • Pod Topologie Spreidingsbeperkingen: De meest moderne en flexibele methode. Hiermee kunnen regels voor de verdeling van pods worden ingesteld op basis van labels van workloads (pod labels) op knooppunten in opgegeven topologieën (bijvoorbeeld beschikbaarheidszones, regio's, hostnamen).

    topologySpreadConstraints:
      - maxSkew: 1 # Maximale afwijking van het aantal pods tussen zones
        topologyKey: topology.kubernetes.io/zone # Topologie-sleutel, in dit geval de beschikbaarheidszone
        whenUnsatisfiable: ScheduleAnyway # Wat te doen als de beperking niet kan worden nageleefd (ScheduleAnyway of DoNotSchedule)
        labelSelector: # Labels van pods waarop de beperking van toepassing is
          matchLabels:
            app: my-app
    
  • Node Affinity en Anti-Affinity: Je kunt nodeSelector of nodeAffinity gebruiken in combinatie met labels van knooppunten die beschikbaarheidszones vertegenwoordigen, maar dit is minder flexibel voor automatische verdeling. Pod anti-affinity kan worden gebruikt om te voorkomen dat meerdere pods van dezelfde applicatie op knooppunten in dezelfde zone worden geplaatst, maar dit kan leiden tot onderbenutting in één zone als andere overbelast zijn.

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.kubernetes.io/zone
              operator: In
              values:
              - zone-a
              - zone-b
              - zone-c
    
  • Implementatiestrategieën: In combinatie met Pod Topologie Spreidingsbeperkingen helpen implementatiestrategieën (rolling update) om nieuwe pods geleidelijk over de zones te verdelen.

Aanbevelingen:

  • Gebruik Pod Topologie Spreidingsbeperkingen als hoofd methode.
  • Zorg dat je knooppunten correcte labels hebben voor beschikbaarheidszones (topology.kubernetes.io/zone).
  • Monitor de verdeling van pods na het toepassen van de beperking.