
В Kubernetes есть механизм проверки работоспособности, с помощью которого можно узнать, работает контейнер в pod’е или нет.

Проверка работоспособности kubelet поддерживает три типа проверок работоспособности:
Проба запуска (startup).
Проба рабо��оспособности (liveness).
Проба готовности (readiness).
Проба запуска (startup)
Приложения с инфраструктурой и устаревшие приложения дольше запускаются при первой инициализации. В этом случае мы используем тот же метод проверки (команда, HTTP-запрос или проверка TCP), что и для остальных проб, но увеличиваем порог ожидания в секундах, чтобы приложение успело запуститься.
ports: - name: liveness-port containerPort: 8080 hostPort: 8080 livenessProbe: httpGet: path: /healthz port: liveness-port failureThreshold: 1 periodSeconds: 10 startupProbe: httpGet: path: /healthz port: liveness-port failureThreshold: 30 periodSeconds: 10
Проба работоспособности (liveness)
Проба работоспособности проверяет, выполняется контейнер или нет.
Если проба не находит живой контейнер, автоматически выполняется политика перезапуска контейнера.

Проба готовности (readiness)
Проба готовности проверяет, готово ли приложение обслуживать запросы.
Если не готово, IP pod’а удаляется из списка конечных точек сервиса.

kubelet производит с pod’ом три типа действия:
Выполняет команду в контейнере.
Проверяет состояние определённого порта в контейнере.
Выполняет запрос GET к IP-адресу контейнера.
Команда для пробы работоспособности
livenessProbe: exec: command: - sh - /tmp/status_check.sh initialDelaySeconds: 10 periodSeconds: 5
HTTP-запрос для пробы работоспособности
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 3
Проверка TCP для пробы работоспособности
--- initialDelaySeconds: 15 livenessProbe: ~ periodSeconds: 20 port: 8080 tcpSocket: ~
Пробы готовности настраиваются так же, как пробы работоспособности.
Разница в том, что вместо livenessProbe мы указываем значение для readinessProbe.
Проба готовности
--- command: - sh - /tmp/status_check.sh exec: ~ initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: ~
Настройка проб
В пробах можно настроить несколько значений:
initialDelaySeconds: через сколько секунд после запуска контейнера начинаются пробы работоспособности или готовности.
По умолчанию — 0 секунд. Минимальное значение — 0.periodSeconds: сколько секунд проходит между пробами.
По умолчанию — 10 секунд. Минимальное значение — 1.timeoutSeconds: через сколько секунд истекает время ожидания пробы.По умолчанию — 1 секунда. Минимальное значение — 1.
successThreshold: сколько проб подряд должно завершиться успехом, чтобы проверка считалась успешной после проваленной пробы.
По умолчанию — 1. Для пробы работоспособности должно быть 1. Минимальное значение — 1.failureThreshold: сколько проб должно провалиться, чтобы пришлось перезапускать контейнер (или pod был помечен как неготовый, если речь о проверке готовности). По умолчанию — 3. Минимальное значение — 1.
Развёртывание Nginx
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-webserver labels: app: webserver spec: replicas: 1 template: metadata: labels: app: webserver spec: containers: - name: webserver image: nginx imagePullPolicy: Always ports: - containerPort: 80 livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 3 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 3
Для HTTP get можно настроить дополнительные параметры:
path: путь для доступа на HTTP-сервере.
port: имя или номер порта для доступа к контейнеру. Номер должен находиться в диапазоне от 1 до 65535.
host: имя хоста для подключения; по умолчанию — IP pod’а. Можно задать хост в заголовках HTTP.
httpHeaders: кастомные заголовки для запроса. HTTP разрешает повторяющиеся заголовки.
scheme: схема для подключения к хосту (HTTP или HTTPS). По умолчанию — HTTP.
Еще больше про K8s
Для тех, кто хочет углубить свои знания в Kubernetes будет полезен курс Kubernetes:Мега. Вас ждет разбор кейсов вместе со спикерами и 6 часов практики.
На курсе вы: установите Kubernetes в ручном режиме, авторизуетесь в кластере, настроите autoscaling, разберете такие темы, как Open Policy Agent, Network Policy, безопасность и высокодоступные приложения, ротация сертификатов, аутентификация пользователей в кластере, хранение секретов, Horisontal Pod Autoscaler, создание собственного оператор K8s.
«Мега» подойдет всем, кому предстоит запускать Kubernetes в продакшн и отвечать за работу проекта в дальнейшем: специалистам по безопасности, системным инженерам, администраторам, архитекторам, DevOps и др.
Зачем нужен интенсив, когда есть документация?
Экономия времени: полтора месяца, вместо нескольких, которые вы потратили бы на чтение и самостоятельные эксперименты
Документация может месяцами лежать в папке «прочитать», а интенсив это конкретные даты.
Здесь есть практика, где помогают находить ошибки. Вас ждут ама-сессии со спикерами, обмен кейсами с единомышленниками и куратор, который поможет сформировать мотивацию на обучение.
Кстати, видеокурс доступен уже сейчас.
Узнать подробнее: https://slurm.club/3ehOUqr
