Sobes.tech
Middle

Kaip tolygiai paskirstyti podus prieinamumo zonose?

sobes.tech AI

Atsakymas iš AI

Kad tolygiai paskirstyti podus pagal prieinamumo zonas Kubernetes, naudojami keli požiūriai:

  • Pod Topology Spread Constraints: Tai yra moderniausias ir lankstiausias būdas. Leidžia nustatyti paskirstymo taisykles pagal darbo krūvių žymes (pod labels) nurodytose topologijose (pavyzdžiui, prieinamumo zonos, regionai, hostai).

    topologySpreadConstraints:
      - maxSkew: 1 # Didžiausias nuokrypis podų skaičiuje tarp zonų
        topologyKey: topology.kubernetes.io/zone # Topologijos raktas, šiuo atveju – prieinamumo zona
        whenUnsatisfiable: ScheduleAnyway # Ką daryti, jei apribojimas neįmanoma įvykdyti (ScheduleAnyway arba DoNotSchedule)
        labelSelector: # Pod žymės, kurioms taikomas apribojimas
          matchLabels:
            app: my-app
    
  • Node Affinity ir Anti-Affinity: Galite naudoti nodeSelector arba nodeAffinity kartu su mazgų žymėmis, žyminčiomis prieinamumo zonas, tačiau tai mažiau lanksti automatinio paskirstymo atžvilgiu. Pod anti-affinity galima naudoti, siekiant išvengti kelių to paties taikymo podų išdėstymo vienoje zonoje, tačiau tai gali sumažinti išnaudojimą vienoje zonoje, jei kitos yra perpildytos.

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.kubernetes.io/zone
              operator: In
              values:
              - zone-a
              - zone-b
              - zone-c
    
  • Paskirstymo strategijos: Kartu su Pod Topology Spread Constraints, išdėstymo strategijos (pvz., riedėjimo atnaujinimas) padeda palaipsniui paskirstyti naujus podus po zonas.

Rekomendacijos:

  • Naudokite Pod Topology Spread Constraints kaip pagrindinį metodą.
  • Užtikrinkite, kad jūsų mazgai turėtų teisingus žymenis prieinamumo zonoms (topology.kubernetes.io/zone).
  • Stebėkite paskirstymo pusiausvyrą po apribojimo taikymo.