Readiness probe ** — это **проверка “готово ли приложение принимать трафик”.
Проще говоря: “Ты уже готов работать с пользователями или ещё нет?”
Чаще всего это термин из Kubernetes.
Простыми словами 👇
Представь кафе:
- Кафе открыто, но
- повар ещё не готов,
- кухня не прогрелась,
- продукты не разложены.
Readiness probe — это как вопрос официанту:
👉 «Можно уже пускать клиентов?»
Если ответ “нет” — клиенты не заходят.
Если “да” — клиентов начинают пускать.
В Kubernetes что происходит
- Kubernetes регулярно проверяет приложение (например, по HTTP-запросу или команде).
- Если readiness probe успешен ✅
→
podполучает трафик (его добавляют в Service / Load Balancer). - Если неуспешен ❌
→
podжив, но трафик к нему не идёт.
⚠️ Важно:
Readiness probe не убивает pod, он просто временно “выводится из оборота”.
Чем отличается от liveness probe
Коротко:
-
Liveness probe — “Ты вообще жив?”
❌ нет →
podперезапускают -
Readiness probe — “Ты готов обслуживать запросы?”
❌ нет →
podживёт, но без трафика
Когда readiness probe особенно нужен
- приложение долго стартует
- подключается к
БД - делает миграции
- временно перегружено
- зависит от внешних сервисов
Погнали, наглядно и без заумных слов 😄
Реальный YAML-пример с readiness + liveness + startup
apiVersion: v1
kind: Pod
metadata:
name: demo-app
spec:
containers:
- name: app
image: my-app:1.0
ports:
- containerPort: 8080
# 1️⃣ Startup probe — ждём, пока приложение ВООБЩЕ запустится
startupProbe:
httpGet:
path: /health/startup
port: 8080
failureThreshold: 30
periodSeconds: 5
# → даём до 150 секунд на старт
# 2️⃣ Readiness probe — готово ли принимать трафик
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
failureThreshold: 3
# 3️⃣ Liveness probe — не зависло ли
livenessProbe:
httpGet:
path: /health/live
port: 8080
periodSeconds: 10
failureThreshold: 3
Что здесь происходит по шагам
🟦 Startup probe
Вопрос: «Ты уже ЗАПУСТИЛСЯ?»
- Kubernetes не запускает readiness и liveness, пока startup probe не станет OK
- если не стал OK за лимит → pod перезапускают
💡 Нужен для:
- Java / Spring
- приложений с миграциями
- долгого старта
🟩 Readiness probe
Вопрос: «Ты ГОТОВ принимать запросы?»
- если ❌ →
podубирают из Service -
podне перезапускают - когда снова ✅ → трафик возвращается
💡 Типично проверяют:
- подключение к БД
- доступность зависимостей
- перегрузку
🟥 Liveness probe
Вопрос: «Ты вообще ЖИВ?»
- если ❌ →
podперезапускают
💡 Проверяет:
- deadlock
- зависшие потоки
- утечки памяти
Сравнение: startup vs readiness (очень коротко)
| Probe | Когда | Если FAIL | Для чего |
|---|---|---|---|
| startup | только при старте | pod перезапуск | долгий запуск |
| readiness | всё время | убрать трафик | временно не готов |
| liveness | всё время | pod перезапуск | приложение зависло |
Жизненный пример
Приложение стартует так:
- запускается JVM (40 сек)
- миграции БД (30 сек)
- готово принимать запросы
👉 startup probe ждёт шаги 1–2
👉 readiness probe включает трафик только после шага 3
👉 liveness probe следит, чтобы всё не зависло через час
Top comments (0)