Kubectl прикрепить против Kubectl Exec?

Используя kubectl exec -ti POD_NAME bash Я могу получить доступ к терминалу внутри контейнера и выполнить команду.

Я могу понять удобство использования и удобство вышеуказанной команды. Как оператор K8s я регулярно использую exec.

Тем не менее, каков случай использования kubectl attach POD_NAME?

Как это можно использовать? Какова реальная цель этого? В каких ситуациях или обстоятельствах это можно использовать?

2 ответа

Решение

Варианты использования kubectl attach описаны в kubernetes / выпуск 23335.

Он может присоединяться к основному процессу, выполняемому контейнером, который не всегда является bash.
В отличие от exec, который позволяет выполнять любой процесс внутри контейнера (часто: bash)

# Get output from running pod 123456-7890, using the first container by default
kubectl attach 123456-7890

# Get output from ruby-container from pod 123456-7890
kubectl attach 123456-7890 -c ruby-container

Эта статья предлагает:

Помимо интерактивного выполнения команд, теперь вы также можете присоединиться к любому запущенному процессу. подобно kubectl logs вы получите данные stderr и stdout, но с присоединением вы также сможете отправлять stdin из вашего терминала в программу.
Потрясающе для интерактивной отладки или даже просто отправки ctrl- c в некорректно работающее приложение.

  $> kubectl attach redis -i

Опять же, основное отличие заключается в процессе, с которым вы взаимодействуете в контейнере:

  • exec: любой, кого вы хотите создать
  • прикрепить: тот, который в данный момент работает (нет выбора)

The kubectl attachкоманда похожа на kubectl exec, но присоединяется к основному процессу, запущенному в containerвместо запуска дополнительного.

Другие вопросы по тегам