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

  1. kubelet na uzlu pravidelně kontroluje kontejner pomocí liveness zkoušky.
  2. Podmínka liveness zkoušky není splněna (například HTTP server neodpovídá, příkaz končí chybou).
  3. kubelet zaznamená selhání zkoušky.
  4. Po několika neúspěšných pokusech (nastavených parametry failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds) kubelet určí, že kontejner je vadný.
  5. kubelet odešle signál SIGKILL vadnému kontejneru.
  6. Kontejner se ukončí.
  7. kubelet restartuje kontejner ve stejném podu.
  8. 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