Middle
Co się stanie, jeśli test liveness w Kubernetes nie przejdzie?
sobes.tech AI
Odpowiedź od AI
Jeśli pod nie przejdzie testu liveness, Kubernetes wykona akcję określoną w manifeście poda. Domyślnie jest to ponowne uruchomienie kontenera.
Możliwe działania w przypadku niepowodzenia testu liveness:
- Restart: Ponowne uruchomienie kontenera w podzie. To działanie jest domyślne.
- Brak: Kubernetes nie podejmie żadnych działań w przypadku niepowodzenia testu liveness. Kontener pozostanie w swoim obecnym stanie (
RunninglubCrashing). - Wykonaj polecenie: Wykonanie określonego polecenia wewnątrz kontenera. Jeśli polecenie zakończy się kodem zwrotnym innym niż zero, test liveness uznaje się za nieudany.
Scenariusz z domyślną akcją (Restart):
- kubelet na węźle regularnie sprawdza kontener za pomocą testu liveness.
- Warunek testu liveness nie jest spełniony (np. serwer HTTP nie odpowiada, polecenie kończy się błędem).
- kubelet rejestruje awarię testu.
- Po pewnej liczbie nieudanych prób (konfigurowanych przez parametry
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds) kubelet uznaje, że kontener jest uszkodzony. - kubelet wysyła sygnał
SIGKILLdo uszkodzonego kontenera. - Kontener kończy działanie.
- kubelet ponownie uruchamia kontener w tym samym podzie.
- Proces testu liveness jest kontynuowany.
Ważne jest rozróżnienie testu liveness od testu readiness. Test readiness określa, czy kontener jest gotowy do przyjmowania ruchu. Niepowodzenie testu readiness powoduje, że Service nie kieruje ruchu do tego egzemplarza poda, ale kontener nie jest ponownie uruchamiany. Niepowodzenie testu liveness wskazuje na awarię i wymaga ponownego uruchomienia.
# Przykład testu liveness w spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Opóźnienie przed pierwszym sprawdzeniem
periodSeconds: 20 # Interwał między sprawdzeniami
timeoutSeconds: 5 # Czas oczekiwania na odpowiedź
failureThreshold: 3 # Liczba nieudanych prób przed ponownym uruchomieniem