Sobes.tech
Middle

Šta se dešava ako liveness-proba u Kubernetes-u ne uspe?

sobes.tech АИ

Одговор од АИ

Ако pod не прође liveness-пробу, Kubernetes ће извршити акцију која је наведена у manifest-у pod-а. По подразумевану вредност, то је поновно покретање контејнера.

Могуће акције у случају неуспеха liveness-пробе:

  • Поново покрени: Поново покретање контејнера унутар pod-а. Ово је подразумевана акција.
  • Ништа: Kubernetes неће предузети никакве радње у случају неуспеха liveness-пробе. Контејнер ће остати у тренутном стању (Running или Crashing).
  • Изврши команду: Извршавање одређене команде унутар контејнера. Ако команда заврши са ненултим кодом повратка, liveness-проба се сматра неуспешном.

Сценарио са подразумеваном акцијом (Поново покрени):

  1. kubelet на чвору редовно проверава контејнер помоћу liveness-пробе.
  2. Услов liveness-пробе није испуњен (нпр. HTTP сервер не одговара, команда се завршава грешком).
  3. kubelet региструје неуспех пробе.
  4. Након одређеног броја неуспешних покушаја (конфигурисаних параметрима failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds), kubelet одређује да је контејнер неисправан.
  5. kubelet шаље сигнал SIGKILL неисправном контејнеру.
  6. Контејнер се завршава.
  7. kubelet поново покреће контејнер у истом pod-у.
  8. Процес liveness-пробе се наставља.

Важно је разликовати liveness-пробу од readiness-пробе. Readiness-проба одређује да ли је контејнер спреман да прихвати саобраћај. Неуспех readiness-пробе доводи до тога да Service не усмерава саобраћај на овај примерак pod-а, али контејнер се не поново покреће. Неуспех liveness-пробе указује на неисправност и захтева поновно покретање.

# Пример liveness-пробе у spec.containers
containers:
  - name: my-container
    image: my-image:latest
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15 # Задршка пре прве проверке
      periodSeconds: 20      # Интервал између проверa
      timeoutSeconds: 5       # Време чекања на одговор
      failureThreshold: 3     # Број неуспешних покушаја пре поновног покретања