Middle
Co se stane, pokud liveness-test v Kubernetes selže?
sobes.tech AI
Odpověď od AI
Pokud pod ne projde liveness zkoušku, Kubernetes provede akci uvedenou v manifestu podu. Ve výchozím nastavení je to restartování kontejneru.
Možné akce při selhání liveness zkoušky:
- Restart: Restartování kontejneru uvnitř podu. Tato akce je výchozí.
- Žádná: Kubernetes neprovede žádnou akci při selhání liveness zkoušky. Kontejner zůstane ve stávajícím stavu (
RunningneboCrashing). - Spustit příkaz: Spuštění specifického příkazu uvnitř kontejneru. Pokud příkaz skončí s nenulovým kódem, považuje se liveness zkouška za neúspěšnou.
Scénář s výchozí akcí (Restart):
- kubelet na uzlu pravidelně kontroluje kontejner pomocí liveness zkoušky.
- Podmínka liveness zkoušky není splněna (například HTTP server neodpovídá, příkaz končí chybou).
- kubelet zaznamená selhání zkoušky.
- Po několika neúspěšných pokusech (nastavených parametry
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds) kubelet určí, že kontejner je vadný. - kubelet odešle signál
SIGKILL vadnémukontejneru. - Kontejner se ukončí.
- kubelet restartuje kontejner ve stejném podu.
- Proces liveness zkoušky pokračuje.
Je důležité rozlišovat mezi liveness a readiness zkouškou. Readiness zkouška určuje, zda je kontejner připraven přijímat provoz. Selhání readiness zkoušky způsobí, že služba neřídí provoz na tento exemplář podu, ale kontejner se nepřetaktuje. Selhání liveness zkoušky signalizuje závadu a vyžaduje restart.
# Příklad liveness zkoušky v spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Zpoždění před prvním kontrolou
periodSeconds: 20 # Interval mezi kontrolami
timeoutSeconds: 5 # Čas čekání na odpověď
failureThreshold: 3 # Počet neúspěšných pokusů před restartem