Выполнить команду bash в pod с kubectl?
Мой вопрос прост.
Как выполнить команду bash в модуле? Я хочу сделать все одной командой bash?
[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod --bash -c "mongo"
Error: unknown flag: --bash
Таким образом, команда просто игнорируется.
[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod bash -c "mongo"
root@mongo-deployment-78c87cb84-jkgxx:/#
Или так.
[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod bash mongo
Defaulting container name to mongo.
Use 'kubectl describe pod/mongo-deployment-78c87cb84-jkgxx -n tools' to see all of the containers in this pod.
/usr/bin/mongo: /usr/bin/mongo: cannot execute binary file
command terminated with exit code 126
Если это просто bash, это, безусловно, работает. Но я хочу немедленно прыгнуть в оболочку монго.
Я нашел решение, но оно не работает. Скажите, возможно ли это сейчас? Выполнение нескольких команд (или из сценария оболочки) в модуле kubernetes
Благодарю.
4 ответа
Символ двойного тире "-" используется для отделения аргументов, которые вы хотите передать команде, от аргументов kubectl. Итак, правильный путь:
kubectl exec -it --namespace=tools mongo-pod -- bash -c "mongo"
Вы забыли пробел между "-" и "bash".
Для выполнения нескольких команд вы можете:
создать скрипт и смонтировать его как том в вашем модуле и выполнить его
запустить сторонний контейнер со скриптом и запустить его
Я использую что-то вроде этого, чтобы попасть в оболочку капсулы:
kubectl exec -it --namespace develop pod-name bash
тогда вы можете выполнить команду, которую вы хотите внутри модуля (например, ping)
ping www.google.com
Для меня это была правильная команда (и порядок параметров) для открытия оболочки модуля:
kubectl -n <namepace> exec -it <pod> -- /bin/sh
Примечание : Использование/bin/bash
вызвало эту ошибку:
ошибка: произошла внутренняя ошибка: ошибка при выполнении команды в контейнере: не удалось выполнить в контейнере: не удалось запустить exec "": ошибка выполнения во время выполнения OCI: ошибка exec: невозможно запустить процесс контейнера: exec: "/bin/bash": stat / bin/bash: такого файла или каталога нет: неизвестно
Поэтому убедитесь, что вы используете/bin/sh
во избежание нежелательных ошибок.
Пожалуйста, запустите ниже одного лайнера свои собственные команды для выполнения команды bash в модуле с целью kubectl.
kubectl exec -it nginx-pod -- bash -c "ls;pwd;echo hello;uname -r;cat /etc/*se"