Hogyan oszd el egyenletesen a podokat a rendelkezésre állási zónákban?
sobes.tech MI
Válasz az MI-től
Használja a topologySpreadConstraints-t a pod vagy a telepítési manifesztumban.
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 # Kulcs, amely meghatározza a terjesztést zónák szerint
whenUnsatisfiable: DoNotSchedule # Ha a terjesztés nem lehetséges, a pod nem lesz ütemezve
labelSelector:
matchLabels:
app: my-app # Ez a korlátozás azokra a podokra vonatkozik, amelyek ezzel a címkével rendelkeznek
A maxSkew meghatározza a maximális pod számot, amely meghaladja az átlagot bármely topológiai doménben (zónában). Ebben az esetben, maxSkew: 1 azt jelenti, hogy a podok száma közötti különbség két zóna között nem haladhatja meg az 1-et.
A topologyKey: topology.kubernetes.io/zone azt jelzi, hogy a terjesztést a csomópontok zónacímkéi alapján kell végrehajtani.
A whenUnsatisfiable: DoNotSchedule azt jelenti, hogy ha a ütemező nem tudja teljesíteni a topologySpreadConstraints korlátozást, akkor a pod nem lesz ütemezve. Alternatívaként a ScheduleAnyway próbálja ütemezni a podot, de megsértheti a korlátozást.
A labelSelector meghatározza azokat a podokat, amelyekre ez a korlátozás vonatkozik.
Az egyenletes pod-elosztás három zónába (például us-east-1a, us-east-1b, us-east-1c) 9 replikával, minden zónában 3 pod lesz.
Ez az elosztás növeli az alkalmazás hibatűrő képességét, mivel egy zóna kiesése nem eredményez teljes szolgáltatáskimaradást.