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
вместо запуска дополнительного.