Middle
Čo sa stane, ak liveness test v Kubernetes zlyhá?
sobes.tech AI
Odpoveď od AI
Ak pod ne prejde liveness skúšku, Kubernetes vykoná akciu uvedenú v manifestu podu. Predvolene je to reštartovanie kontajnera.
Možné akcie pri zlyhaní liveness skúšky:
- Reštart: Reštartovanie kontajnera v rámci podu. Toto je predvolená akcia.
- Žiadna: Kubernetes nevykoná žiadnu akciu pri zlyhaní liveness skúšky. Kontajner zostane v aktuálnom stave (
RunningaleboCrashing). - Spusti príkaz: Spustenie špecifického príkazu v kontajneri. Ak príkaz skončí s nenulovým kódom, liveness skúška sa považuje za neúspešnú.
Scenár s predvolenou akciou (Reštart):
- kubelet na uzle pravidelne kontroluje kontajner pomocou liveness skúšky.
- Podmienka liveness skúšky nie je splnená (napríklad, HTTP server neodpovedá, príkaz končí chybou).
- kubelet zaznamená zlyhanie skúšky.
- Po niekoľkých neúspešných pokusoch (nastavených parametrami
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds) kubelet určí, že kontajner je chybný. - kubelet odošle signál
SIGKILLchybnému kontajneru. - Kontajner sa ukončí.
- kubelet ho reštartuje v rovnakom podu.
- Proces liveness skúšky sa obnoví.
Je dôležité rozlišovať medzi liveness skúškou a readiness skúškou. Readiness skúška určuje, či je kontajner pripravený prijímať prevádzku. Neúspech readiness skúšky spôsobí, že Service neadresuje prevádzku na tento exemplár podu, ale kontajner sa nepreštartuje. Neúspech liveness skúšky signalizuje poruchu a vyžaduje reštart.
# Príklad liveness skúšky v spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Zdržanie pred prvou kontrolou
periodSeconds: 20 # Interval medzi kontrolami
timeoutSeconds: 5 # Čas čakania na odpoveď
failureThreshold: 3 # Počet neúspešných pokusov pred reštartom