Sobes.tech
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 (Running või Crashing).
  • 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):

  1. kubelet regulaarselt kontrollib konteinerit liveness-testiga.
  2. Kui liveness-testi tingimus ei täitu (näiteks HTTP-server ei vasta, käsk lõpeb veaga):
  3. kubelet registreerib vea.
  4. Pärast mõningaid ebaõnnestunud katseid (failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds parameetritega konfigureeritud):
  5. kubelet saadab SIGKILL signaali ebaõnnestunud konteinerile.
  6. Konteiner lõpetab töö.
  7. kubelet taaskäivitab sama pod'i konteineri.
  8. 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