Ответ
В Kubernetes для проверок используются специальные типы контейнеров в рамках Pod: Init Containers и, что более точно для вашего вопроса, Ephemeral Containers (эфемерные контейнеры). Однако, классический и наиболее распространённый способ проверки команд — это контейнеры с пробками (Probes).
-
Liveness Probe (Проба жизнеспособности): Проверяет, работает ли контейнер. Если проверка fails, kubelet перезапускает контейнер.
livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5 -
Readiness Probe (Проба готовности): Проверяет, готов ли контейнер принимать трафик. Если проверка fails, контейнер удаляется из эндпоинтов сервиса.
readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 2 -
Startup Probe (Проба старта): Используется для медленно стартующих приложений. Отключает проверки liveness/readiness до успешного старта.
-
Ephemeral Containers (для отладки): Это временные контейнеры, которые можно добавить в запущенный Pod для инспекции его состояния, когда отладка через
kubectl execнедостаточна (например, если основной контейнер не имеет отладочных утилит).# Добавление эфемерного контейнера для отладки kubectl debug -it <pod-name> --image=busybox:latest --target=<container-name>
Таким образом, для автоматической проверки команд используются Probes, а для ручной отладки — Ephemeral Containers.