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.