Middle+
Jaké faktory zajišťují správné dokončení uzlu v závislosti na prioritě podu?
sobes.tech AI
Odpověď od AI
Správné ukončení práce uzlu je dosaženo díky následujícím faktorům:
- Časové limity:
terminationGracePeriodSeconds: Určuje dobu, po kterou se uzel pokusí správně ukončit práci podů před jejich nuceným zničením. Výchozí je 30 sekund.pod.spec.terminationGracePeriodSeconds: Může přepsat časový limit pro konkrétní pod.
# Příklad manifestu podu s prodlouženým časem ukončení apiVersion: v1 kind: Pod metadata: name: my-pod-with-grace-period spec: containers: - name: my-container image: my-image terminationGracePeriodSeconds: 60 # Prodloužený čas - Signály:
- Kubernetes posílá signál
SIGTERMkontejnerům podu. - Aplikace v kontejneru by měla být schopna zachytit
SIGTERMa správně s ním zacházet (například ukončit aktuální spojení, uložit stav). - Pokud aplikace neukončí práci na
SIGTERMběhemterminationGracePeriodSeconds, odešle seSIGKILL.
- Kubernetes posílá signál
- Priorita podu (
priorityClassName):- Při vytlačení (například při nedostatku zdrojů nebo evakuaci uzlu) jsou pody s nižší prioritou ukončovány jako první.
- To zajišťuje, že kriticky důležité (vysokoprioritní) pody budou fungovat déle a dostanou více času na správné ukončení, pokud se uzel stane nedostupným.
# Příklad manifestu podu s určením priority apiVersion: v1 kind: Pod metadata: name: my-priority-pod spec: containers: - name: my-container image: my-image priorityClassName: high-priority # Použití třídy priority - PreStop hooky:
- Další skripty nebo volání, která se provádějí v kontejneru těsně před odesláním
SIGTERM. - Mohou být použity k synchronizaci, odhlášení ze služeb nebo jiným úkolům potřebným pro správné ukončení.
# Příklad PreStop hooku 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"] # Příklad příkazu - Další skripty nebo volání, která se provádějí v kontejneru těsně před odesláním
- Správa koncových bodů (Endpoints):
- Kubernetes odstraní IP podu z objektu Endpoints Service při začátku ukončení, aby nový provoz nebyl směrován na ukončující se pod.
- To umožňuje ukončení stávajících spojení během grace period.
Celkově tyto mechanismy umožňují Kubernetes řídit proces ukončení podů na uzlu, s ohledem na jejich prioritu, a poskytnout jim šanci na správné ukončení, čímž se vyhýbá nucenému zničení tam, kde je to možné.