Skip to content
← Все статьи

Мониторинг доступности в Kubernetes

Коротко. Kubernetes проверяет здоровье подов тремя видами проб: livenessProbe перезапускает зависший контейнер, readinessProbe убирает под из балансировки, пока он не готов принимать трафик, а startupProbe даёт медленно стартующим приложениям время на инициализацию. Это внутренний self-healing. Но пробы не видят сетевой путь снаружи кластера — для честного аптайма с точки зрения пользователя нужен внешний synthetic-мониторинг сайтов.

Три вида проб и их роли

Путаница между liveness и readiness — источник самых болезненных инцидентов в Kubernetes. Их назначение принципиально разное:

  • livenessProbe — «жив ли процесс?». Провал → kubelet перезапускает контейнер;
  • readinessProbe — «готов ли принимать трафик?». Провал → под убирается из Endpoints, но не перезапускается;
  • startupProbe — «закончил ли стартовать?». Пока не прошла, liveness и readiness отключены.

Пример манифеста

Правильная конфигурация для веб-сервиса с health-эндпоинтами:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  template:
    spec:
      containers:
        - name: web
          image: myapp:1.4.2
          ports:
            - containerPort: 8080
          startupProbe:
            httpGet:
              path: /healthz
              port: 8080
            failureThreshold: 30
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 0
            periodSeconds: 10
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /readyz
              port: 8080
            periodSeconds: 5
            failureThreshold: 3

Liveness vs readiness: типичные ошибки

ОшибкаПоследствиеКак правильно
liveness проверяет зависимость (БД)Каскадный рестарт всех подов при сбое БДliveness — только сам процесс
Нет startupProbe для медленного стартаliveness убивает под до инициализацииДобавить startupProbe с запасом
readiness и liveness на один путьПод перезапускается вместо вывода из ротацииРазделить /healthz и /readyz
Слишком агрессивный failureThresholdФлапающие рестарты под нагрузкой3–5 и адекватный periodSeconds
Золотое правило: liveness проверяет ТОЛЬКО сам процесс. Если в liveness проверять базу или внешний API документацию, сбой зависимости устроит каскадный перезапуск всех реплик.

Чего пробы не видят

Probes работают внутри кластера: kubelet стучится в под напрямую. Они не проверяют Ingress, балансировщик, DNS, TLS-терминацию и сеть между пользователем и кластером. Под может быть «Ready», а снаружи сайт — недоступен из-за неверного Ingress или просроченного сертификата на LoadBalancer.

Внешний слой поверх Kubernetes

enterno.io проверяет полный путь снаружи — так, как видит пользователь: HTTP-ответ через Ingress, валидность SSL на балансировщике, DNS-резолв и Ping из регионов RU / EU / US. Это дополняет внутренние probes, а не заменяет: probes лечат поды, внешний монитор ловит проблемы на границе кластера. Бесплатно — 10 мониторов с интервалом 5 минут, на платных — 1 минута / 30 секунд. Алерты в Telegram, Slack, email, webhook, PagerDuty.

Для cron-задач и батч-джоб в Kubernetes используйте heartbeat-мониторинг (dead man's switch): джоб пингует уникальный URL, и если пинг не пришёл вовремя — приходит алерт.

FAQ

Почему под рестартует под нагрузкой?

Чаще всего liveness-проба таймаутит из-за нехватки CPU. Увеличьте timeoutSeconds, проверьте лимиты ресурсов и не вешайте на liveness тяжёлые проверки.

Нужен ли startupProbe всегда?

Нет, только для приложений с долгой инициализацией (прогрев кэша, миграции). Для быстрых сервисов хватает liveness + readiness.

Заменяет ли readinessProbe внешний мониторинг?

Нет. readiness управляет балансировкой внутри кластера, но не видит Ingress, DNS и путь к пользователю. Внешний synthetic-монитор нужен отдельно.

Как мониторить CronJob в Kubernetes?

Через heartbeat: задача делает HTTP-пинг на enterno.io/heartbeat в конце выполнения; пропущенный пинг = алерт о незапустившейся или зависшей джобе.

Добавьте взгляд снаружи кластера: создайте монитор на enterno.io/monitors для проверки Ingress и SSL. Полезное: health-check эндпоинты, мониторинг контейнеров, мониторинг для разработчиков.

Проверьте ваш сайт прямо сейчас

Проверить свой сайт →
Другие статьи: DevOps
DevOps
Мониторинг Docker-контейнеров: метрики, инструменты и лучшие практики
16.03.2026 · 168 просм.
DevOps
Мониторинг сайта с Grafana: дашборды и алерты
18.06.2026 · 42 просм.
DevOps
Проверки доступности в CI/CD пайплайне
18.06.2026 · 55 просм.
DevOps
Стратегии деплоя без простоя
16.03.2026 · 124 просм.