Проверяет понимание Kubernetes probes: их назначение, виды и настройку для обеспечения надёжности приложений.
Probes — это механизм Kubernetes для проверки состояния контейнера. Они позволяют системе понимать, работает ли приложение корректно, и принимать решения: перезапустить под, убрать его из сервиса или подождать завершения запуска. Без probes Kubernetes считает контейнер здоровым, пока он запущен, даже если приложение зависло или не отвечает.
Probes настраиваются в секции containers манифеста пода. Каждая проверка может быть трёх типов: HTTP-запрос, TCP-соединение или выполнение команды. Пример с HTTP-проверкой:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: nginx
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 3
periodSeconds: 5
startupProbe:
httpGet:
path: /startup
port: 80
failureThreshold: 30
periodSeconds: 10Здесь initialDelaySeconds — задержка перед первой проверкой, periodSeconds — интервал между проверками, failureThreshold — количество неудач до срабатывания. Для TCP-проверки используется tcpSocket, для команды — exec с массивом аргументов.
Используйте readiness probe для сервисов, которые должны быть доступны только после полной готовности (например, после загрузки кэша). Liveness probe настраивайте на критичные проверки, которые не должны ложно срабатывать, иначе частые перезапуски нарушат работу. Startup probe полезен для приложений с долгим стартом (более 1-2 минут).
Итог: Probes — обязательный инструмент для production-нагрузок. Они повышают отказоустойчивость, автоматизируют восстановление и обеспечивают корректное распределение трафика. Настраивайте их осознанно, подбирая типы и параметры под конкретное приложение.