Sobes.tech
Middle

Kā vienmērīgi sadalīt podus pieejamības zonās?

sobes.tech AI

Atbilde no AI

Izmantojiet topologySpreadConstraints podam vai izvieto manifestā.

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 # Atslēga, kas nosaka izplatīšanas jomu
        whenUnsatisfiable: DoNotSchedule # Ja izplatīšana nav iespējama, pods netiks plānots
        labelSelector:
          matchLabels:
            app: my-app # Ierobežojums attiecas uz šiem podiem ar šo marķieri

maxSkew nosaka maksimālo podu skaita pārsniegumu vidējā skaitā jebkurā topoloģijas domēnā (zonā). Šajā gadījumā, maxSkew: 1 nozīmē, ka zonu starpība podu skaitā nesasniegs 1.

topologyKey: topology.kubernetes.io/zone norāda, ka izplatīšana jāveic pēc zonu marķieriem.

whenUnsatisfiable: DoNotSchedule nozīmē, ka, ja plānotājs nevar apmierināt topologySpreadConstraints ierobežojumu, pods netiks plānots. Cits variants ir ScheduleAnyway, kas mēģinās plānot podu, bet var pārkāpt ierobežojumu.

labelSelector nosaka podu kopu, kam šis ierobežojums attiecas.

Līdzsvarota podu sadale pa trim zonām (piemēram, us-east-1a, us-east-1b, us-east-1c) ar 9 replikām nodrošinās, ka katrai zonai tiek piešķirti 3 podi.

Šāda sadale uzlabo lietojumprogrammas izturību pret kļūdām, jo viena zonas kļūme nesasniegs pilnu pakalpojuma nepieejamību.