Библиотека девопса | DevOps, SRE, Sysadmin
10.2K subscribers
1.55K photos
75 videos
4 files
2.79K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
🤔 Нетривиальный вопрос с собеседования

Сегодня попробуем ответить на такой вопрос:
Что происходит в Kubernetes, когда под не проходит liveness probe

Большинство кандидатов отвечают: «Он перезапускается». Но это — только верхушка айсберга.

Под капотом Kubernetes:

1. Когда liveness probe проваливается kubelet сообщает об этом API Server, который записывает Pod как unhealthy в etcd.

2. Дальше kubelet через containerd/CRI-O убивает контейнер и проверяет restartPolicy:
если можно — перезапускает, если нет — Pod считается завершённым.

3. Контроллер ReplicaSet видит, что живых Pod’ов меньше, и создаёт новый.

4. Scheduler выбирает подходящий узел, а kube-proxy убирает сбойный Pod из маршрутов сервиса.

5. В kubectl describe pod появляются события, но если Prometheus не следит за ними — узнаете о проблеме только от пользователей.

Сеньор-уровень — это не про YAML, а про понимание того, что конкретно происходит.

🐸Библиотека devops'a

#задача_со_звёздочкой
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💬 Различия между Liveness, Readiness и Startup Probes

Одним из популярных вопросов на собесе является вопрос про разницу между Liveness, Readiness и Startup пробы. Давайте разберёмся, что каждая из этих проб делает, когда и как их использовать.

1. Что такое Liveness Probe

Цель: проверка, жив ли контейнер. Если контейнер не отвечает на пробу, Kubernetes перезапустит его.

Когда использовать: всегда используйте Liveness пробу, чтобы обнаружить ситуации, когда приложение зависает или перестаёт функционировать. Это поможет Kubernetes перезапустить контейнер и избежать длительных сбоев.

Пример: если ваше приложение зависает из-за дедлока или других внутренних проблем, Liveness проба поможет автоматически перезапустить контейнер.

2. Что такое Readiness Probe


Цель: проверка готовности контейнера принимать трафик. Если контейнер не готов, Kubernetes не будет направлять трафик к этому контейнеру.

Когда использовать: используйте Readiness пробу, когда приложению нужно время для инициализации, например, для подключения к базе данных или загрузки конфигураций.

Пример: если веб-серверу нужно 10 секунд для подключения к базе данных, настройте Readiness пробу, чтобы Kubernetes не отправлял запросы до завершения этого процесса.

3. Что такое Startup Probe

Цель: проверка того, успешно ли контейнер стартовал. Полезно для контейнеров с долгим временем старта.

Когда использовать: используйте Startup пробу для контейнеров, которые требуют длительного времени для инициализации, чтобы избежать преждевременных перезапусков.

Пример: если ваше приложение загружает большую модель машинного обучения, настройте Startup пробу, чтобы Kubernetes не пытался перезапустить контейнер до окончания загрузки.

Опции конфигурации проб

1. initialDelaySeconds

Указывает время, которое Kubernetes будет ждать после старта контейнера до первой проверки.

Пример: если вашему приложению нужно 10 секунд для начала работы, установите initialDelaySeconds: 10.

2. periodSeconds

Интервал между проверками после первой.

Пример: если вы хотите проверять контейнер каждые 30 секунд, установите periodSeconds: 30.

3. failureThreshold

Указывает, сколько последовательных неудачных проверок Kubernetes допускает до того, как перезапустит контейнер.

Пример: если ваше приложение иногда теряет соединение, установите failureThreshold: 3, чтобы избежать перезапусков при временных сбоях.

4. timeoutSeconds

Время, которое Kubernetes будет ждать от контейнера, прежде чем считать проверку неудачной.

Пример: если приложение может задерживаться с ответом, установите timeoutSeconds: 5, чтобы дать достаточно времени на обработку запроса.

Как избежать конфликтов при настройке проб

Если настроены все три типа проб, важно убедиться, что они не конфликтуют. Например, если настроена Startup проба, то Liveness и Readiness пробы будут выполняться только после её успешного завершения. Это помогает избежать перезапуска контейнера на этапе инициализации, если приложение запускается медленно.

🐸 Библиотека devops'a

#задача_со_звёздочкой
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3