Liveness probes Π² Kubernetes ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π’Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Zalando β€” Henning Jacobs β€” Π½Π΅ Ρ€Π°Π· Π·Π°ΠΌΠ΅Ρ‡Π°Π» Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Kubernetes ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ прСдназначСния liveness (ΠΈ readiness) probes ΠΈ ΠΈΡ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ примСнСния. ΠŸΠΎΡΠ΅ΠΌΡƒ ΠΎΠ½ собрал свои мысли Π² эту Ρ‘ΠΌΠΊΡƒΡŽ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ, которая со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ станСт Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ K8s.

Liveness probes Π² Kubernetes ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ состояния, извСстныС Π² Kubernetes ΠΊΠ°ΠΊ liveness probes (Ρ‚.Π΅., дословно, «тСсты Π½Π° ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΒ» β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².), ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вСсьма опасными. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎ возмоТности ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΈΡ…: ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ случаи, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΈ Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ осознаСтС спСцифику ΠΈ послСдствия ΠΈΡ… использования. Π’ этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ liveness- ΠΈ readiness-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ рассказано, Π² ΠΊΠ°ΠΊΠΈΡ… случаях стоит ΠΈ Π½Π΅ стоит ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

Мой ΠΊΠΎΠ»Π»Π΅Π³Π° Sandor Π½Π΅Π΄Π°Π²Π½ΠΎ подСлился Π² Twitter’Π΅ самыми частыми ошибками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ, Π² Ρ‚ΠΎΠΌ числС связанными с использованиСм readiness/liveness probes:

Liveness probes Π² Kubernetes ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнная livenessProbe ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡƒΠ³ΡƒΠ±ΠΈΡ‚ΡŒ ситуации с высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ (Π»Π°Π²ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ + ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΉ запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°/прилоТСния) ΠΈ привСсти ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ послСдствиям Π²Ρ€ΠΎΠ΄Π΅ падСния зависимостСй (см. Ρ‚Π°ΠΊΠΆΠ΅ мою нСдавнюю ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎΠ± ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ числа запросов Π² связкС K3s+ACME). Π•Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° liveness probe сочСтаСтся с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ зависимости (health check’ΠΎΠΌ), Π² Ρ€ΠΎΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выступаСт внСшняя Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…: СдинствСнный сбой Π‘Π” пСрСзапустит всС ваши ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹!

ΠžΠ±Ρ‰ΠΈΠΉ посыл «НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ liveness probesΒ» Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ°Π»ΠΎ, поэтому рассмотрим, для Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ readiness- ΠΈ liveness-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: бόльшая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ тСста ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Zalando.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Readiness ΠΈ Liveness

Kubernetes прСдоставляСт Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… liveness probes ΠΈ readiness probes. Они пСриодичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСйствиС β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ HTTP-запрос, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ TCP-соСдинСниС ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Kubernetes ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ readiness probes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Pod считаСтся Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, Ссли всС Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹. Одно ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ pod’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС бэкСндов для сСрвисов Kubernetes (ΠΈ особСнно Ingress’Π°).

Liveness probes ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Kubernetes ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. НапримСр, подобная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° позволяСт ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ deadlock, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «застрСваСт» Π½Π° ΠΎΠ΄Π½ΠΎΠΌ мСстС. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Ρ‚Π°ΠΊΠΎΠΌ состоянии ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, нСсмотря Π½Π° ошибки, ΠΏΡ€ΠΈ этом ΠΎΠ½ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ каскадным сбоям (см. Π½ΠΈΠΆΠ΅).

Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ liveness/readiness, Π΅Π³ΠΎ Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ застопорится, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Kubernetes Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ статуса Ready ΠΎΡ‚ всСх pod’ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ readiness probe, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ ΠΏΡƒΡ‚ΡŒ /health Ρ‡Π΅Ρ€Π΅Π· HTTP с настройками ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (interval: 10 сСкунд, timeout: 1 сСкунда, success threshold: 1, failure threshold: 3):

# Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π³ΠΎ описания deployment'Π°/стСка
podTemplate:
  spec:
    containers:
    - name: my-container
      # ...
      readinessProbe:
        httpGet:
          path: /health
          port: 8080

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

  1. Для микросСрвисов с HTTP endpoint’ΠΎΠΌ (REST ΠΈ Ρ‚.ΠΏ.) всСгда опрСдСляйтС readiness probe, которая провСряСт, Π³ΠΎΡ‚ΠΎΠ²ΠΎ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (pod) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.
  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ readiness probe ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ фактичСского ΠΏΠΎΡ€Ρ‚Π° Π²Π΅Π±-сСрвСра:
    • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΡ€Ρ‚Ρ‹ для административных Π½ΡƒΠΆΠ΄, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Β«adminΒ» ΠΈΠ»ΠΈ Β«managementΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 9090), для readinessProbe, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ endpoint Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ОК Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли основной HTTP-ΠΏΠΎΡ€Ρ‚ (Π²Ρ€ΠΎΠ΄Π΅ 8080) Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ*;

      * МнС извСстно ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Ρ€Π΅ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ случаС Π² Zalando, ΠΊΠΎΠ³Π΄Π° этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ readinessProbe ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»Π° ΠΏΠΎΡ€Ρ‚ Β«managementΒ», Π½ΠΎ сам сСрвСр Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ кэша.

    • навСшиваниС readiness probe Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° основном ΠΏΠΎΡ€Ρ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² health check’Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡƒΠ» ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π½Π° сСрвСрС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ health check ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ОК).
  3. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ readiness probe Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ/ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…;
    • самый простой способ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого β€” ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ HTTP-сСрвСру Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС окончания ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π” с Flyway ΠΈ Ρ‚.ΠΏ.); Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ статус health check’Π°, просто Π½Π΅ запускайтС Π²Π΅Π±-сСрвСр Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π”*.

      * Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π” ΠΈΠ· init-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² снаруТи pod’Π°. Π― ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ являюсь ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΎΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… (self-contained) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ прилоТСния Π±Π΅Π· внСшнСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ привСсти Π‘Π” Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ состояниС.

  4. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ httpGet для readiness-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ endpoint’Ρ‹ health check’ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /health).
  5. Π Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ pod станСт not-ready ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· 30 сСкунд (3 Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ работоспособности).
  6. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ для Β«adminΒ» ΠΈΠ»ΠΈ Β«managementΒ», Ссли тСхнологичСский стСк (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Java/Spring) позволяСт это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Β«Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ΠΌΒ» ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌΠΈ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°:
    • Π½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π΅ 2.
  7. ΠŸΡ€ΠΈ нСобходимости readiness probe ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·ΠΎΠ³Ρ€Π΅Π²Π°/Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ кэша ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ состояния 503, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π΅ «разогрССтся»:

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΡ

  1. НС ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° внСшниС зависимости (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ…) ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ тСстов Π½Π° readiness/liveness β€” это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ каскадным сбоям:
    • Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм stateful-сСрвис REST с 10-ю pod’Π°ΠΌΠΈ, зависящими ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Postgres: ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° зависит ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π‘Π”, всС 10 pod’ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΠ°ΡΡ‚ΡŒ, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² сСти/Π½Π° сторонС Π‘Π” β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ всС это заканчиваСтся Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹;
    • ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Spring Data ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ провСряСт соСдинСниС с Π‘Π”*;

      * Π’Π°ΠΊΠΎΠ²ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Spring Data Redis (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° я провСрял Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π·), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ «катастрофичСскому» сбою: ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя Redis оказался нСдоступСн, всС pod’Ρ‹ Β«ΡƒΠΏΠ°Π»ΠΈΒ».

    • «внСшний» Π² Π΄Π°Π½Π½ΠΎΠΌ смыслС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ pod’Ρ‹ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ прилоТСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ состояния Π΄Ρ€ΡƒΠ³ΠΈΡ… pod’ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ кластСра для прСдотвращСния каскадных ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ:
      • Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с распрСдСлСнным состояниСм (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, in-memory-ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² pod’Π°Ρ…).
  2. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ liveness probe для pod’ΠΎΠ² (ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ случаи, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΈ Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ осознаСтС спСцифику ΠΈ послСдствия ΠΈΡ… примСнСния):
    • liveness probe ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ Β«Π·Π°Π²ΠΈΡΡˆΠΈΡ…Β» ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ своим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ «зависшиС» процСссы ΠΈ deadlock’ΠΈ, Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ‚ΡŒΡΡ: Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ являСтся Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ прилоТСния ΠΈ Π΅Π³ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ устойчивому ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ;
    • Π½Π΅ΡƒΠ΄Π°Π²ΡˆΠ°ΡΡΡ liveness probe ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ пСрСзапуску ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚Π΅ΠΌ самым ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ усугубляя послСдствия ошибок, связанных с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ: пСрСзапуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΎΡΡ‚ΠΎΡŽ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° врСмя запуска прилоТСния, скаТСм, Π½Π° 30 с лишним сСкунд), вызывая Π½ΠΎΠ²Ρ‹Π΅ ошибки, увСличивая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΡ… сбоя, ΠΈ Ρ‚.Π΄.;
    • liveness-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² сочСтании с внСшнСй Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ β€” Ρ…ΡƒΠ΄ΡˆΠ°Ρ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ, грозящая каскадными ΠΎΡ‚ΠΊΠ°Π·Π°ΠΌΠΈ: Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° сторонС Π‘Π” ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ пСрСзапуску всСх Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²!
  3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ liveness- ΠΈ readiness-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ:
    • ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ liveness probe с Ρ‚Π΅ΠΌ ΠΆΠ΅ health check’ΠΎΠΌ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ высоким ΠΏΠΎΡ€ΠΎΠ³ΠΎΠΌ срабатывания (failureThreshold), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ статус not-ready послС 3 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ liveness probe провалился послС 10 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ;
  4. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ exec-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ с Π½ΠΈΠΌΠΈ связаны извСстныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, приводящиС ΠΊ появлСнию Π·ΠΎΠΌΠ±ΠΈ-процСссов:

РСзюмС

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ readiness probes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° pod Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ liveness probes Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.
  • НСвСрноС использованиС readiness/liveness probes ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию доступности ΠΈ каскадным сбоям.

Liveness probes Π² Kubernetes ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ОбновлСниС β„–1 ΠΎΡ‚ 2019-09-29

Об init-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… для ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π‘Π”: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° сноска.

EJ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ» ΠΌΠ½Π΅ ΠΎ PDB: ΠΎΠ΄Π½Π° ΠΈΠ· Π±Π΅Π΄ liveness-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ β€” отсутствиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ pod’Π°ΠΌΠΈ. Π’ Kubernetes Π΅ΡΡ‚ΡŒ Pod Disruption Budgets (PDB) для ограничСния числа ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… сбоСв, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ PDB. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Ρ‚ΡŒ K8s: Β«ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ pod, Ссли Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° окаТСтся Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ, Π½ΠΎ Π½Π΅ пСрСзапускай ΠΈΡ… всС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅Β».

Bryan ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ сформулировал: Β«Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ liveness-Π·ΠΎΠ½Π΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” это Β«ΡƒΠ±ΠΈΡ‚ΡŒΒ» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ Π½Π΅ стоит).

Liveness probes Π² Kubernetes ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны

ОбновлСниС β„–2 ΠΎΡ‚ 2019-09-29

КасаСмо чтСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ использованиСм: я создал ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ запрос (feature request) Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΎ liveness probes.

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ