Sobes.tech
Middle

Ինչպես հավասարաչափ տարածել պոդերը մատչելիության գոտիներում?

sobes.tech AI

Պատասխան AI-ից

Օգտագործեք topologySpreadConstraints պոդի կամ տեղադրման մանուֆեստում:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 9
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app:latest
      topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: topology.kubernetes.io/zone # Կլիչ, որը սահմանում է տարածման գոտիները
        whenUnsatisfiable: DoNotSchedule # Եթե տարածումը հնարավոր չէ, պոդը չի պլանավորվի
        labelSelector:
          matchLabels:
            app: my-app # Այս նշանով պոդների վրա է կիրառվում

maxSkew սահմանում է առավելագույն քանակը պոդների, որոնք կարող են գերազանցել միջին արժեքը ցանկացած տոպոլոգիական դոմենում (զոնում): Այս դեպքում, maxSkew: 1 նշանակում է, որ ցանկացած երկու զոնաների միջև պոդների քանակի տարբերությունը չի գերազանցի 1:

topologyKey: topology.kubernetes.io/zone նշում է, որ տարածումը պետք է հիմնվի հանգույցների զոնաների նշանների վրա:

whenUnsatisfiable: DoNotSchedule նշանակում է, որ եթե պլանավորիչը չի կարող բավարարել topologySpreadConstraints սահմանափակումը, պոդը չի պլանավորվի: Այլընտրանքային տարբերակ է ScheduleAnyway, որը փորձելու է պլանավորել պոդը, բայց կարող է խախտել սահմանափակումը:

labelSelector սահմանում է պոդների հավաքածուն, որոնց վրա է կիրառվում այս սահմանափակումը:

Երեք զոնաներում (օրինակ, us-east-1a, us-east-1b, us-east-1c) 9 ռեպլիկով հավասարաչափ տարածման համար, յուրաքանչյուր զոնա կստանա 3 պոդ:

Այս տարածումը բարձրացնում է դիմադրողականությունը, քանի որ մեկ զոնայի ձախողումը չի հանգեցնի ծառայության ամբողջական անհասանելիության: