Kā vienmērīgi sadalīt podus pieejamības zonās?
sobes.tech AI
Atbilde no AI
Izmantojiet topologySpreadConstraints podam vai izvieto manifestā.
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 # Atslēga, kas nosaka izplatīšanas jomu
whenUnsatisfiable: DoNotSchedule # Ja izplatīšana nav iespējama, pods netiks plānots
labelSelector:
matchLabels:
app: my-app # Ierobežojums attiecas uz šiem podiem ar šo marķieri
maxSkew nosaka maksimālo podu skaita pārsniegumu vidējā skaitā jebkurā topoloģijas domēnā (zonā). Šajā gadījumā, maxSkew: 1 nozīmē, ka zonu starpība podu skaitā nesasniegs 1.
topologyKey: topology.kubernetes.io/zone norāda, ka izplatīšana jāveic pēc zonu marķieriem.
whenUnsatisfiable: DoNotSchedule nozīmē, ka, ja plānotājs nevar apmierināt topologySpreadConstraints ierobežojumu, pods netiks plānots. Cits variants ir ScheduleAnyway, kas mēģinās plānot podu, bet var pārkāpt ierobežojumu.
labelSelector nosaka podu kopu, kam šis ierobežojums attiecas.
Līdzsvarota podu sadale pa trim zonām (piemēram, us-east-1a, us-east-1b, us-east-1c) ar 9 replikām nodrošinās, ka katrai zonai tiek piešķirti 3 podi.
Šāda sadale uzlabo lietojumprogrammas izturību pret kļūdām, jo viena zonas kļūme nesasniegs pilnu pakalpojuma nepieejamību.