Дебаг Pod'ов без перезапуска через ephemeral containers

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

ephemeral containersk8skubectl

👁 Иногда в проде что-то идёт не так: Pod живой, но приложение внутри ведёт себя странно. Проблема — контейнер не содержит инструментов для дебага. Добавлять их в Dockerfile — не по-девопсовски. Вот тут и помогают ephemeral containers.

Ephemeral контейнеры — это временные контейнеры, которые можно «впрыснуть» в работающий Pod для диагностики. Они не участвуют в основном процессе Pod'а и не перезапускаются.

📝 Пример — добавляем контейнер с bash и net-tools:

kubectl debug -it pod/my-pod \
  --image=busybox \
  --target=app-container \
  --share-processes \
  -- bash

📌Важно:

  • --target указывает, в какой контейнер ты хочешь попасть по PID namespace
  • --share-processes позволяет видеть процессы основного контейнера
  • Ephemeral контейнер не влияет на работу Pod'а и удаляется после завершения

🔎 Используй для:

  • анализа сетевых проблем (netstat, dig, curl)
  • изучения переменных окружения, монтированных томов
  • быстрого запуска strace, ps, top без пересборки образа

❗️ Ephemeral containers — удобный способ проникнуть внутрь проблемного Pod'а без даунтайма и пересборки. Незаменимый инструмент в арсенале SRE/DevOps-инженера.

tags: #k8s #troubleshooting #полезно

❤️ @recura_tech

Скриншот: команда kubectl debug для добавления ephemeral контейнера (busybox) в работающий Pod на тёмном фоне; виден логотип RECURA.
Пример команды kubectl debug на изображении — демонстрация использования busybox для дебага Pod.

Читайте так же