Middle
Mis juhtub, kui liveness-test Kuberneteses läbi ei lähe?
sobes.tech AI
Vastus AI-lt
Kui pod ei läbi liveness-testi, täidab Kubernetes manifestis määratud tegevuse. Tavaliselt on see konteineri taaskäivitamine:
Liveness-testi ebaõnnestumise võimalike tegevuste hulka kuuluvad:
- Taaskäivita: konteineri taaskäivitamine pod'i sees. Seda tegevust kasutatakse vaikimisi.
- Midagi teha: Kubernetes ei tee liveness-testi ebaõnnestumise korral midagi. Konteiner jääb praegusesse olekusse (
RunningvõiCrashing). - Käivita käsk: teostada kindlat käsku konteineris. Kui käsk lõpeb mitte-zero koodiga, loetakse liveness-testi ebaõnnestunuks.
Süžee vaikimisi tegevusega (Taaskäivitus):
- kubelet regulaarselt kontrollib konteinerit liveness-testiga.
- Kui liveness-testi tingimus ei täitu (näiteks HTTP-server ei vasta, käsk lõpeb veaga):
- kubelet registreerib vea.
- Pärast mõningaid ebaõnnestunud katseid (
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSecondsparameetritega konfigureeritud): - kubelet saadab
SIGKILLsignaali ebaõnnestunud konteinerile. - Konteiner lõpetab töö.
- kubelet taaskäivitab sama pod'i konteineri.
- Liveness-testi protsess taastub.
Oluline on eristada liveness-testi readiness-testist. Readiness-testi määrab, kas konteiner on valmis vastuvõtma liiklust. Kui readiness-testi ebaõnnestub, Service ei suuna liiklust sellele pod'ile, kuid konteiner ei taaskäivitu. Liveness-testi ebaõnnestumine näitab riket ja vajadust taaskäivitada.
# Liveness-testi näide spec.containers osas
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Esimese kontrolli viivitus
periodSeconds: 20 # Kontrollide vaheline aeg
timeoutSeconds: 5 # Vastuse ootamise aeg
failureThreshold: 3 # Ebaõnnestumiste arv enne taaskäivitust