Sobes.tech
Middle

Mavjudlik zonalarida podlarni qanday teng taqsimlash mumkin?

sobes.tech AI

AIdan javob

Pod yoki joylashuvni tarqatish bo‘yicha topologySpreadConstraints ni pod yoki joylashtirish manifestida foydalaning.

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 # Tarqatish kaliti (hududni aniqlash)
        whenUnsatisfiable: DoNotSchedule # Agar tarqatish mumkin bo‘lmasa, pod rejalashtirilmaydi
        labelSelector:
          matchLabels:
            app: my-app # Bu belgi bilan podlarga qo‘llaniladi

maxSkew har qanday topologiya domenida (hududda) o‘rtacha qiymatdan oshib ketadigan maksimal podlar sonini belgilaydi. Bu holatda, maxSkew: 1 har qanday ikki hudud orasidagi podlar soni farqi 1 dan oshmasligini anglatadi.

topologyKey: topology.kubernetes.io/zone nodlarning hudud belgilari asosida tarqatilishini ko‘rsatadi.

whenUnsatisfiable: DoNotSchedule planlovchi topologySpreadConstraints cheklovini bajarolmasa, pod rejalashtirilmaydi. Boshqa variant sifatida ScheduleAnyway ishlatilishi mumkin, bu podni rejalashtirishga harakat qiladi, lekin cheklovni buzishi mumkin.

labelSelector bu cheklov qo‘llanadigan podlar to‘plamini belgilaydi.

Uch ta hududga (masalan, us-east-1a, us-east-1b, us-east-1c) 9 ta replika bilan teng taqsimlash uchun, har bir hududga 3 ta pod tushadi.

Bu taqsimot ilovaning xatolikga chidamliligini oshiradi, chunki bir hududning nosozligi xizmatning to‘liq uzilishiga olib kelmaydi.