Выполнить команду 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"
Другие вопросы по тегам