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 nodдордун аймак белгилерине негизделген таркатууну көрсөтөт.

whenUnsatisfiable: DoNotSchedule планировщик topologySpreadConstraints чектөөсүн аткара албаса, под пландаштырылбайт. Башка вариант — ScheduleAnyway, ал подду пландаштырып, бирок чектөөнү бузушу мүмкүн.

labelSelector бул чектөө колдонулган поддордун топтомун аныктайт.

Үч аймакка (мисалы, us-east-1a, us-east-1b, us-east-1c) 9 реплика менен бирдей таратуу үчүн, ар бир аймакка 3 под келет.

Мындай таратуу колдонмонун ишенимдүүлүгүн жогорулатат, анткени бир аймактын иштебей калышы кызматтын толук жеткиликтүүлүгүн камсыз кылбайт.