Sobes.tech
Middle

Mi történik, ha a liveness-próba nem sikerül Kubernetesben?

sobes.tech MI

Válasz az MI-től

Ha a pod nem sikerül a liveness-próbát, a Kubernetes végrehajtja a manifestben megadott műveletet. Alapértelmezés szerint ez a konténer újraindítása.

Lehetséges műveletek liveness-próba sikertelensége esetén:

  • Újraindítás: A konténer újraindítása a podon belül. Ez az alapértelmezett művelet.
  • Nincs: A Kubernetes nem tesz semmit liveness-próba sikertelensége esetén. A konténer a jelenlegi állapotában marad (Running vagy Crashing).
  • Parancs végrehajtása: Egy adott parancs végrehajtása a konténerben. Ha a parancs nem null visszatérési kóddal fejeződik be, a liveness-próba sikertelennek számít.

Alapértelmezett művelettel (Újraindítás) szcenárió:

  1. a kubelet a csomóponton rendszeresen ellenőrzi a konténert a liveness-próba segítségével.
  2. A liveness-próba feltétele nem teljesül (pl. az HTTP szerver nem válaszol, a parancs hibával fejeződik be).
  3. a kubelet rögzíti a próba sikertelenségét.
  4. Néhány sikertelen próbálkozás után (amelyeket a failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds paraméterekkel lehet beállítani) a kubelet meghatározza, hogy a konténer hibás.
  5. a kubelet küldi a SIGKILL jelet a hibás konténernek.
  6. A konténer befejeződik.
  7. a kubelet újraindítja a konténert ugyanabban a podban.
  8. A liveness-próba folytatódik.

Fontos megkülönböztetni a liveness-próbát a readiness-próbától. A readiness-próba meghatározza, hogy a konténer készen áll-e a forgalom fogadására. A readiness-próba sikertelensége miatt a Service nem irányít forgalmat erre a pod példányra, de a konténer nem újraindul. A liveness-próba sikertelensége hibát jelez, és újraindítást igényel.

# Példa a liveness-próbára a spec.containers-ben
containers:
  - name: my-container
    image: my-image:latest
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15 # Első ellenőrzés előtti késleltetés
      periodSeconds: 20      # Ellenőrzések közötti intervallum
      timeoutSeconds: 5       # Válasz várakozási idő
      failureThreshold: 3     # Sikertelen próbálkozások száma a újraindítás előtt