Ответ
В Kubernetes существует три типа проб (probes), которые kubelet использует для проверки состояния контейнера:
-
Liveness Probe — определяет, жив ли контейнер. Если проверка завершается неудачей, kubelet убивает контейнер и перезапускает его согласно политике перезапуска (
restartPolicy). Это нужно для восстановления "зависших" приложений. -
Readiness Probe — определяет, готов ли контейнер принимать трафик. Если проверка не проходит, Service, связанный с подом, прекращает направлять на него запросы. Это критично для плавного развертывания и обработки зависимостей при старте.
-
Startup Probe (доступна с v1.16) — используется для медленно стартующих контейнеров (например, legacy-приложений). Она откладывает запуск liveness и readiness проб до своего успешного завершения, предотвращая преждевременные перезапуски.
Пример конфигурации в манифесте Pod:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: web
image: nginx:latest
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 5
periodSeconds: 5
startupProbe:
httpGet:
path: /startup
port: 80
failureThreshold: 30
periodSeconds: 10
Правильная настройка проб — ключ к высокой доступности и отказоустойчивости приложений в Kubernetes.