ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΠ΅Π΄ΡΡΠΈΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Zalando β Henning Jacobs β Π½Π΅ ΡΠ°Π· Π·Π°ΠΌΠ΅ΡΠ°Π» Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Kubernetes ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ liveness (ΠΈ readiness) probes ΠΈ ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠΎΠ±ΡΠ°Π» ΡΠ²ΠΎΠΈ ΠΌΡΡΠ»ΠΈ Π² ΡΡΡ ΡΠΌΠΊΡΡ Π·Π°ΠΌΠ΅ΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ°Π½Π΅Ρ ΡΠ°ΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ K8s.
ΠΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ Π² Kubernetes ΠΊΠ°ΠΊ liveness probes (Ρ.Π΅., Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ, Β«ΡΠ΅ΡΡΡ Π½Π° ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΒ» β ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².), ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡ
: ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ ΠΈ Π²Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΎ liveness- ΠΈ readiness-ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Ρ
, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ, Π² ΠΊΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΡΠΎΠΈΡ ΠΈ Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΡ
ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ.
ΠΠΎΠΉ ΠΊΠΎΠ»Π»Π΅Π³Π° Sandor Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΡΡ Π² Twitter’Π΅ ΡΠ°ΠΌΡΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΠΌΡ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ readiness/liveness probes:
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π½Π°Ρ livenessProbe
ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ³ΡΠ±ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ (Π»Π°Π²ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠ΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ + ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΉ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ Π²ΡΠΎΠ΄Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅
ΠΠ±ΡΠΈΠΉ ΠΏΠΎΡΡΠ» Β«ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ liveness probesΒ» Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΌΠ°Π»ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ readiness- ΠΈ liveness-ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π±ΟΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΡΠ΅ΡΡΠ° ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Zalando.
ΠΡΠΎΠ²Π΅ΡΠΊΠΈ Readiness ΠΈ Liveness
Kubernetes ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
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
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
- ΠΠ»Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ HTTP endpoint’ΠΎΠΌ (REST ΠΈ Ρ.ΠΏ.) Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠΉΡΠ΅ readiness probe, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π³ΠΎΡΠΎΠ²ΠΎ Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (pod) ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊ.
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ readiness probe ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°:
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΡΡΡ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ
Π½ΡΠΆΠ΄, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
Β«adminΒ» ΠΈΠ»ΠΈ Β«managementΒ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 9090), Π΄Π»Ρ
readinessProbe
, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ endpoint Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΠ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ HTTP-ΠΏΠΎΡΡ (Π²ΡΠΎΠ΄Π΅ 8080) Π³ΠΎΡΠΎΠ² ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊ*;* ΠΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΌΠ΅ΡΠ΅ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² Zalando, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, ΡΠΎ Π΅ΡΡΡ
readinessProbe
ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»Π° ΠΏΠΎΡΡ Β«managementΒ», Π½ΠΎ ΡΠ°ΠΌ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ·-Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΊΡΡΠ°. - Π½Π°Π²Π΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ readiness probe Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² health check’Π΅ (ΡΠΎ Π΅ΡΡΡ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ health check ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΠ).
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΡΡΡ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ
Π½ΡΠΆΠ΄, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
Β«adminΒ» ΠΈΠ»ΠΈ Β«managementΒ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 9090), Π΄Π»Ρ
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ readiness probe Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ/ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
;
- ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ β ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ HTTP-ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ Ρ
Flyway ΠΈ Ρ.ΠΏ.); ΡΠΎ Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠ΅Π½ΡΡΡ ΡΡΠ°ΡΡΡ health check’Π°, ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ*.* Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ ΠΈΠ· init-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠ½Π°ΡΡΠΆΠΈ pod’Π°. Π― ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ²Π»ΡΡΡΡ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΎΠΌ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΡ (self-contained) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΈΡ , Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΠ Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
- ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ β ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ HTTP-ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ Ρ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
httpGet
Π΄Π»Ρ readiness-ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠ΅ΡΠ΅Π· ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ endpoint’Ρ health check’ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,/health
). - Π Π°Π·Π±Π΅ΡΠΈΡΠ΅ΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, Π·Π°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (
interval: 10s
,timeout: 1s
,successThreshold: 1
,failureThreshold: 3
):- ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ pod ΡΡΠ°Π½Π΅Ρ not-ready ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· 30 ΡΠ΅ΠΊΡΠ½Π΄ (3 Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ).
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ Π΄Π»Ρ Β«adminΒ» ΠΈΠ»ΠΈ Β«managementΒ», Π΅ΡΠ»ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Java/Spring) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Β«Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅ΠΌΒ» ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°:
- Π½ΠΎ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎ ΠΏΡΠ½ΠΊΡΠ΅ 2.
- ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ readiness probe ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ°Π·ΠΎΠ³ΡΠ΅Π²Π°/Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ 503, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π΅ Β«ΡΠ°Π·ΠΎΠ³ΡΠ΅Π΅ΡΡΡΒ»:
- ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ
startupProbe
,ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΉΡΡ Π² Π²Π΅ΡΡΠΈΠΈ 1.16 (ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ ΠΎ Π½Π΅ΠΉ Π½Π° ΡΡΡΡΠΊΠΎΠΌΠ·Π΄Π΅ΡΡ β ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².).
- ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ
ΠΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ
- ΠΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅ΡΡ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
) ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΠΎΠ² Π½Π° readiness/liveness β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΠΌ ΡΠ±ΠΎΡΠΌ:
- Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ stateful-ΡΠ΅ΡΠ²ΠΈΡ REST Ρ 10-Ρ pod’Π°ΠΌΠΈ, Π·Π°Π²ΠΈΡΡΡΠΈΠΌΠΈ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Postgres: ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ, Π²ΡΠ΅ 10 pod’ΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΏΠ°ΡΡΡ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² ΡΠ΅ΡΠΈ/Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΠ β ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ΅ ΡΡΠΎ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ;
- ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Spring Data ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΠ*;
* Π’Π°ΠΊΠΎΠ²ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Spring Data Redis (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ» Π² ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π·), ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Β«ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡΒ» ΡΠ±ΠΎΡ: ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Redis ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, Π²ΡΠ΅ pod’Ρ Β«ΡΠΏΠ°Π»ΠΈΒ».
- Β«Π²Π½Π΅ΡΠ½ΠΈΠΉΒ» Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ pod’Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ
pod’ΠΎΠ² ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΡ
ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ:
- ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, in-memory-ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² pod’Π°Ρ ).
- ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ liveness probe Π΄Π»Ρ pod’ΠΎΠ² (ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ ΠΈ Π²Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΈΡ
ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ):
- liveness probe ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Β«Π·Π°Π²ΠΈΡΡΠΈΡ Β» ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ°ΠΊΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ Β«Π·Π°Π²ΠΈΡΡΠΈΠ΅Β» ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ deadlock’ΠΈ, Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»ΡΡΠ°ΡΡΡΡ: Π»ΡΡΡΠ΅ΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ;
- Π½Π΅ΡΠ΄Π°Π²ΡΠ°ΡΡΡ liveness probe ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ³ΡΠ±Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ: ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΡΠΎΡΡΠΎΡ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π° Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π° 30 Ρ Π»ΠΈΡΠ½ΠΈΠΌ ΡΠ΅ΠΊΡΠ½Π΄), Π²ΡΠ·ΡΠ²Π°Ρ Π½ΠΎΠ²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ ΠΏΠΎΠ²ΡΡΠ°Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΈΡ ΡΠ±ΠΎΡ, ΠΈ Ρ.Π΄.;
- liveness-ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ β Ρ ΡΠ΄ΡΠ°Ρ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ, Π³ΡΠΎΠ·ΡΡΠ°Ρ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΠΌΠΈ ΠΎΡΠΊΠ°Π·Π°ΠΌΠΈ: Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΠ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΡ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²!
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ liveness- ΠΈ readiness-ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ:
- ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ liveness probe Ρ ΡΠ΅ΠΌ ΠΆΠ΅ health check’ΠΎΠΌ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΠΎΡΠΎΠ³ΠΎΠΌ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ (
failureThreshold
), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΡΡ not-ready ΠΏΠΎΡΠ»Π΅ 3 ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΈ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ liveness probe ΠΏΡΠΎΠ²Π°Π»ΠΈΠ»ΡΡ ΠΏΠΎΡΠ»Π΅ 10 ΠΏΠΎΠΏΡΡΠΎΠΊ;
- ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ liveness probe Ρ ΡΠ΅ΠΌ ΠΆΠ΅ health check’ΠΎΠΌ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΠΎΡΠΎΠ³ΠΎΠΌ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ (
- ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ exec-ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½ΠΈΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π·ΠΎΠΌΠ±ΠΈ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²:
- ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ: ΡΠΌ.
Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Datadog .
- ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ: ΡΠΌ.
Π Π΅Π·ΡΠΌΠ΅
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ readiness probes, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° pod Π³ΠΎΡΠΎΠ² ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ liveness probes ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ.
- ΠΠ΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ readiness/liveness probes ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΠΌ ΡΠ±ΠΎΡΠΌ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
-
Kubernetes docs: Configure Liveness and Readiness Probes ; -
Kubernetes Liveness and Readiness Probes Revisited: How to Avoid Shooting Yourself in the Other Foot ; -
NRE Labs Outage Post-Mortem (ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈ ΠΏΡΠΎ livenessProbe).
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β1 ΠΎΡ 2019-09-29
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ β2 ΠΎΡ 2019-09-29
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
Kubernetes: ΠΆΠΈΠ·Π½Ρ ΠΏΠΎΠ΄Π° Β»; - Β«
7 Π»ΡΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ ΠΏΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ Google Β»; - Β«
7 ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com