Kuidas jaotada podid ühtlaselt kättesaadavuse tsoonides?
sobes.tech AI
Vastus AI-lt
Kasutage topologySpreadConstraints podi või juurutusmanifestis.
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 # Võti, mis määrab levitamise ala
whenUnsatisfiable: DoNotSchedule # Kui jaotamine on võimatu, ei planeerita poodi
labelSelector:
matchLabels:
app: my-app # Piirang kehtib nende poodide suhtes, millel on see silt
maxSkew määrab maksimaalse lubatud poodide arvu ületamise keskmisest igas topoloogilises domeenis (sanas). Antud juhul tähendab maxSkew: 1, et zonade vahel ei ületa podide arv erinevus 1.
topologyKey: topology.kubernetes.io/zone näitab, et jaotamine toimub zoni siltide alusel.
whenUnsatisfiable: DoNotSchedule tähendab, et kui planeerija ei suuda täita topologySpreadConstraints piirangut, ei planeerita poodi. Teine variant on ScheduleAnyway, mis püüab poodi planeerida, kuid võib piirangut rikkuda.
labelSelector määrab podide kogumi, millele see piirang kehtib.
Tasakaalustatud podide jaotamine kolme zone'i vahel (näiteks us-east-1a, us-east-1b, us-east-1c) 9 replikaga tagab, et igale zone'ile määratakse 3 podi.
Selline jaotus suurendab rakenduse vastupidavust, kuna ühe zone'i tõrge ei põhjusta teenuse täielikku kättesaamatust.