TGViewer
DevOps DevOps @i_devops · 8.83K subscribers
Post #2859 1.74K
Kubernetes: как не угробить прод с неправильными Liveness/Readiness пробыми 🧟‍♂️

Если ваши поды «умирают» слишком рано или слишком долго не проходят readiness — возможно, вы не до конца понимаете, как работают пробы в Kubernetes. А между тем, это критично для uptime и стабильности продакшена.


📌 Пробы — не «просто пинги»

- livenessProbe отвечает за "жив ли под". Если не проходит — kubelet убивает контейнер.
- readinessProbe — "готов ли под принимать трафик". Пока не готов — не пускается в сервис.

Неправильная настройка может привести к:
- бесконечным перезапускам (flapping),
- недоступности сервиса после деплоя,
- ненужной нагрузке на кластер.


🛠 Типичные ошибки

1. Тот же эндпоинт для обеих проб
Readiness может требовать больше инициализации. Разделяйте эндпоинты:
/healthz/live и /healthz/ready — хорошая практика.

2. Слишком агрессивные тайминги
initialDelaySeconds, timeoutSeconds, failureThreshold — не забывайте учитывать холодный старт (особенно при Java, .NET, DB init).

3. Тестирование только на dev/stage
На проде нагрузка выше, сеть может вести себя иначе. Профиль подов должен учитывать real-world сценарии.

4. Liveness вместо retries
Liveness не замена retry-логике в приложении. Используйте circuit breakers, retries и grace periods на уровне сервиса.


✅ Как делать правильно

- Используйте простые GET-запросы, без heavy логики.
- Не тестируйте зависимости (БД, внешние API) в liveness — пусть это останется за readiness.
- Применяйте terminationGracePeriodSeconds и preStop hook, чтобы избежать резкого отключения.


🧩 Стартовый шаблон для readiness/liveness

livenessProbe:
httpGet:
path: /healthz/live
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 2
failureThreshold: 3

readinessProbe:
httpGet:
path: /healthz/ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 2
failureThreshold: 3



Вывод:
Настройка prob — это не ритуал ради YAML-а. Это инструмент стабильности и доступности. Подходите к ним осознанно, валидируйте на нагрузке и помните, что "здоровый" под ≠ "готовый к трафику".

#devops #девопс

Подпишись 👉@i_DevOps
  • 👍 6
More from @i_devops
  1. Oct 9, 2026LLM сжигает токены, security gate задерживает релиз, секреты нужно восстановить после сбоя…
  2. Oct 8, 2026Docker изнутри: исчерпывающее руководство. Механизмы контейнеризации + примеры, эксперимен…
  3. Oct 7, 2026Тренировки по DevOps. Часть 2 Лекция 7: Сети. Часть 2. Коробки и коты Лекция 8: Как запуст…
  4. Oct 7, 2026💻Практический вебинар «СТРАТЕГИЯ РЕЗЕРВНОГО КОПИРОВАНИЯ» 📹 15 октября в 11:00 Мск за 90…
  5. Oct 6, 2026Тренировки по DevOps. Часть 1 Лекция 1: Кто такой DevOps Лекция 2: Облако. Кто виноват и ч…
  6. Oct 5, 2026k8s-cleaner — это утилита для автоматической очистки ресурсов Kubernetes, которые больше н…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →