Middle+
Kokie veiksniai užtikrina mazgo teisingą užbaigimą priklausomai nuo pod prioritetą?
sobes.tech AI
Atsakymas iš AI
Teisingas mazgo užbaigimas pasiekiamas naudojant šiuos veiksnius:
- Laiko apribojimai:
terminationGracePeriodSeconds: Nustato laiką, per kurį mazgas bandys teisingai užbaigti podų darbą prieš jų priverstinį sunaikinimą. Numatyta reikšmė yra 30 sekundžių.pod.spec.terminationGracePeriodSeconds: Gali perrašyti konkretų podą laiko apribojimą.
# Pavyzdys podo manifesto su padidintu užbaigimo laiku apiVersion: v1 kind: Pod metadata: name: my-pod-with-grace-period spec: containers: - name: my-container image: my-image terminationGracePeriodSeconds: 60 # Padidintas laikas - Signalai:
- Kubernetes siunčia
SIGTERMsignalą podų konteineriams. - Programai konteineryje turi būti pajėgi priimti
SIGTERMir jį tinkamai apdoroti (pvz., uždaryti esamus ryšius, išsaugoti būseną). - Jei programa nebaigia
SIGTERMperterminationGracePeriodSeconds, siunčiamaSIGKILL.
- Kubernetes siunčia
- Pod prioritetas (
priorityClassName):- Spaudimo metu (pvz., resursų trūkumo ar mazgo evakuacijos atveju) žemesnio prioriteto podai baigiasi pirmieji.
- Tai užtikrina, kad kritiškai svarbūs (aukšto prioriteto) podai veiks ilgiau ir gaus daugiau laiko teisingam užbaigimui, jei mazgas tampa neprieinamas.
# Pavyzdys podo su prioritetu nurodytu apiVersion: v1 kind: Pod metadata: name: my-priority-pod spec: containers: - name: my-container image: my-image priorityClassName: high-priority # Prioriteto klasės naudojimas - PreStop hook'ai:
- Papildomi scenarijai ar iškvietimai, kurie vykdomi konteineryje tiesiogiai prieš siunčiant
SIGTERM. - Gali būti naudojami sinchronizacijai, atsijungimui nuo paslaugų ar kitų užduočių, reikalingų teisingam užbaigimui.
# PreStop hook'o pavyzdys apiVersion: v1 kind: Pod metadata: name: my-pod-with-prestop spec: containers: - name: my-container image: my-image lifecycle: preStop: exec: command: ["/bin/sh", "-c", "echo 'Stopping container...' && sleep 5 && exit 0"] # Komandos pavyzdys - Papildomi scenarijai ar iškvietimai, kurie vykdomi konteineryje tiesiogiai prieš siunčiant
- Galutinių taškų valdymas (Endpoints):
- Kubernetes pašalina pod IP iš Endpoints Service objekto pradėjus užbaigimą, kad naujas srautas nebūtų nukreiptas į užbaigiantį podą.
- Tai leidžia esamiems ryšiams užbaigti per grace period.
Šie mechanizmai leidžia Kubernetes valdyti podų užbaigimo procesą mazge, atsižvelgiant į jų prioritetą, ir suteikia jiems galimybę teisingai užbaigti, išvengiant priverstinio sunaikinimo ten, kur tai įmanoma.