Sobes.tech
Middle

Kas notiks, ja liveness-tests Kubernetes neizdosies?

sobes.tech AI

Atbilde no AI

Ja pod neiztur liveness pārbaudi, Kubernetes veiks norādot darbību pod manifestā. Parasti tas ir konteineru pārstartēšana:

Iespējamās darbības, ja liveness pārbaude neizdodas:

  • Pārstartēt: konteineru pārstartēšana pod iekšienē. Šī darbība tiek izmantota kā noklusējuma.
  • Neveikt neko: Kubernetes neveiks nekādas darbības, ja liveness pārbaude neizdodas. Konteineris paliks pašreizējā stāvoklī (Running vai Crashing).
  • Izpildīt komandu: izpildīt noteiktu komandu konteinerā. Ja komanda beidzas ar nenulles atgriešanas kodu, liveness pārbaude tiek uzskatīta par neveiksmīgu.

Scenārijs ar noklusējuma darbību (Pārstartēt):

  1. kubelet regulāri pārbauda konteineru ar liveness pārbaudi.
  2. Ja liveness pārbaudes nosacījums netiek izpildīts (piemēram, HTTP serveris neatbild, komanda beidzas ar kļūdu):
  3. kubelet reģistrē kļūmi.
  4. Pēc dažām neveiksmīgām mēģinājumiem (failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds konfigurēti):
  5. kubelet nosūta SIGKILL signālu neveiksmīgajam konteinerim.
  6. Konteineris beidzas.
  7. kubelet pārstartē to pašu podu.
  8. Liveness pārbaudes process tiek atsāktas.

Svarīgi atšķirt liveness pārbaudi no readiness pārbaudes. Readiness pārbaude nosaka, vai konteineris ir gatavs pieņemt trafiku. Ja readiness pārbaude neizdodas, Service nesūtīs trafiku uz šo podu, bet konteineris netiks pārstartēts. Liveness pārbaudes neveiksme norāda uz bojājumu un nepieciešamību pēc pārstartēšanas.

# Liveness pārbaudes piemērs spec.containers daļā
containers:
  - name: my-container
    image: my-image:latest
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15 # Pirmās pārbaudes aizkave
      periodSeconds: 20      # Pārbaudes intervāls
      timeoutSeconds: 5       # Atbildes gaidīšanas laiks
      failureThreshold: 3     # Neveiksmīgu mēģinājumu skaits pirms pārstartēšanas