Sobes.tech
Middle

Ako rovnomerne rozložiť pody v zónach dostupnosti?

sobes.tech AI

Odpoveď od AI

Za ravnomerné rozloženie podov po zónach dostupnosti v Kubernetes sa používajú rôzne prístupy:

  • Obmedzenia rozloženia topológie podov: Najmodernejší a najflexibilnejší spôsob. Umožňuje stanoviť pravidlá rozloženia podov na základe štítkov pracovnej záťaže (pod labels) na uzloch v určených topológiách (napríklad zóny dostupnosti, regióny, názvy hostiteľov).

    topologySpreadConstraints:
      - maxSkew: 1 # Maximálne odchýlka počtu podov medzi zónami
        topologyKey: topology.kubernetes.io/zone # Kľúč topológie, v tomto prípade zóna dostupnosti
        whenUnsatisfiable: ScheduleAnyway # Čo robiť, ak nie je možné obmedzenie splniť (ScheduleAnyway alebo DoNotSchedule)
        labelSelector: # Štítky podov, na ktoré sa vzťahuje obmedzenie
          matchLabels:
            app: my-app
    
  • Afilácia a anti-afilácia uzlov: Môže sa použiť nodeSelector alebo nodeAffinity v kombinácii so štítkami uzlov, ktoré predstavujú zóny dostupnosti, ale to je menej flexibilné pre automatické rozloženie. Pod anti-affinity môže byť použitá na zabránenie umiestnenia viacerých podov rovnakej aplikácie na uzly v rovnakej zóne, ale to môže viesť k nedostatočnému využitiu v jednej zóne, ak sú ostatné preťažené.

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.kubernetes.io/zone
              operator: In
              values:
              - zone-a
              - zone-b
              - zone-c
    
  • Stratégie nasadenia: V kombinácii s Obmedzeniami rozloženia topológie podov stratégie nasadenia (rolling update) pomáhajú postupne rozdeľovať nové pody po zónach.

Odporúčania:

  • Používajte Obmedzenia rozloženia topológie podov ako hlavnú metódu.
  • Uistite sa, že vaše uzly majú správne štítky pre zóny dostupnosti (topology.kubernetes.io/zone).
  • Monitorujte rozloženie podov po aplikácii obmedzenia.