Выбор ответа Senior Отладка в кластере обновлено

Отладка distroless-контейнера

Вопрос

Образ приложения distroless, в нём нет shell, kubectl exec -it pod -- sh падает. Как посмотреть сеть и процессы контейнера?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: kubectl debug -it <pod --image=nicolaka/netshoot --target=<container. Эфемерные контейнеры добавляются в работающий под без перезапуска, делят с ним сетевой namespace, а с --target и пространство процессов целевого контейнера.

Варианты ответа

  1. Пересобрать образ с bash и задеплоить в прод, затем вернуть distroless-версию
  2. kubectl debug -it <pod> --image=nicolaka/netshoot --target=<container>правильный ответ
  3. Подключиться к поду по SSH: kubelet поднимает sshd в каждом поде на порту 2222
  4. Отладить невозможно: distroless-контейнер не допускает никакого доступа извне

Разбор

Эфемерные контейнеры добавляются в работающий под без перезапуска, делят с ним сетевой namespace, а с --target и пространство процессов целевого контейнера. Пересборка меняет условия и долго, SSH в под не предусмотрен. Ещё есть kubectl debug --copy-to для копии пода с другой командой и kubectl debug node/... для узла.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.