Ինչպես հավասարաչափ տարածել պոդերը մատչելիության գոտիներում?
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 նշում է, որ տարածումը պետք է հիմնվի հանգույցների զոնաների նշանների վրա:
whenUnsatisfiable: DoNotSchedule նշանակում է, որ եթե պլանավորիչը չի կարող բավարարել topologySpreadConstraints սահմանափակումը, պոդը չի պլանավորվի: Այլընտրանքային տարբերակ է ScheduleAnyway, որը փորձելու է պլանավորել պոդը, բայց կարող է խախտել սահմանափակումը:
labelSelector սահմանում է պոդների հավաքածուն, որոնց վրա է կիրառվում այս սահմանափակումը:
Երեք զոնաներում (օրինակ, us-east-1a, us-east-1b, us-east-1c) 9 ռեպլիկով հավասարաչափ տարածման համար, յուրաքանչյուր զոնա կստանա 3 պոդ:
Այս տարածումը բարձրացնում է դիմադրողականությունը, քանի որ մեկ զոնայի ձախողումը չի հանգեցնի ծառայության ամբողջական անհասանելիության: