Sobes.tech
Middle

Kubernetes'te liveness-тест өтпөсө эмне болот?

sobes.tech AI

AIден жооп

Эгер pod liveness-сынактары өтпөсө, Kubernetes manifest'те көрсөтүлгөн аракетти жасайт. Адатта, бул контейнерди кайра жүктөө:

Liveness-сынактарынын иштебеген учурларында мүмкүн болгон аракеттер:

  • Кайра жүктөө: pod ичиндеги контейнерди кайра жүктөө. Бул негизги аракет катары колдонулат.
  • Эч нерсе кылбоо: Kubernetes liveness-сынактарынын иштебеген учурларында эч кандай аракет кылбайт. Контейнер азыркы абалында калат (Running же Crashing).
  • Команда иштетүү: Контейнер ичинде белгилүү бир команда иштетүү. Эгер команда нөл эмес кайтаруу коду менен аяктагыс, liveness-сынактарынын иштебеген деп эсептелет.

Негизги аракет менен сценарий (Кайра жүктөө):

  1. kubelet узелде liveness-сынактарын текшерет.
  2. Liveness-сынактарынын шарты аткарылбай калат (мисалы, HTTP-сервер жооп бербейт, команда ката менен аяктайт).
  3. kubelet иштен чыккандыгын каттайт.
  4. Кээ бир неудачалардан кийин (failureThreshold, initialDelaySeconds, periodSeconds, timeoutSeconds параметрлери менен конфигурацияланган):
  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      # Текшерүүлөрдүн аралыгы
      timeoutSeconds: 5       # Жооп күтүүнүн убактысы
      failureThreshold: 3     # Кайра жүктөөгө чейин неудачалар саны