Əlçatanlıq zonalarında podları necə bərabər paylamaq olar?
sobes.tech Süni İntellekt
AI-dan cavab
Pod və ya yerləşdirmə manifestində topologySpreadConstraints istifadə edin.
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 # Paylanma açarını təyin edir (zonanın bölgüsü)
whenUnsatisfiable: DoNotSchedule # Əgər paylanma mümkün deyilsə, pod planlanmayacaq
labelSelector:
matchLabels:
app: my-app # Bu etiketlə podlara tətbiq olunur
maxSkew hər hansı bir topologiya domenində (zona) orta göstəricidən çox olan maksimum pod sayını müəyyən edir. Bu halda, maxSkew: 1 hər iki zonanın pod sayı fərqinin 1-dən çox olmamasını təmin edir.
topologyKey: topology.kubernetes.io/zone nodların zonalar etiketlərinə əsasən paylanma edilməsini göstərir.
whenUnsatisfiable: DoNotSchedule planlayıcı topologySpreadConstraints məhdudiyyətini təmin edə bilməzsə, pod planlanmayacaq. Alternativ olaraq ScheduleAnyway istifadə edilə bilər, bu halda pod planlanmağa çalışılır, lakin məhdudiyyət pozula bilər.
labelSelector bu məhdudiyyətin tətbiq olunduğu podların toplusunu müəyyən edir.
Üç zona (məsələn, us-east-1a, us-east-1b, us-east-1c) ilə 9 replikalı bərabər paylanma üçün, hər zona 3 pod alacaq.
Bu paylanma tətbiqin fasiləsizliyini artırır, çünki bir zonanın uğursuzluğu xidmətin tamamilə əlçatmaz olmasına səbəb olmur.