Выполнить команду bash в pod с kubectl?

мой вопрос прост.

Как выполнить команду bash в контейнере? Я хочу сделать все с помощью одной команды bash?

[[email protected] ~]# kubectl exec -it --namespace="tools" mongo-pod --bash -c "mongo"
Error: unknown flag: --bash

Таким образом, команда просто игнорируется.

[[email protected] ~]# kubectl exec -it --namespace="tools" mongo-pod bash -c "mongo"
[email protected]:/# 

Или так.

[[email protected] ~]# 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

Если это просто бит, это, безусловно, работает. Но я хочу немедленно перейти в оболочку монго.

Я нашел решение, но оно не работает. Скажи мне, возможно ли это сейчас? Выполнение нескольких команд (или из сценария оболочки) в кубернете

Благодарю.

Ответ 1

Двойной символ "-" используется для разделения аргументов, которые вы хотите передать команде из аргументов kubectl. Итак, правильный способ:

kubectl exec -it --namespace=tools mongo-pod -- bash -c "mongo"

Вы забыли пробел между "-" и "bash".

Для выполнения нескольких команд вы можете:

  • создать сценарий и установить его в качестве тома в вашем модуле и выполнить его

  • запустить боковой контейнер со сценарием и запустить его

Ответ 2

Я использую что-то вроде этого для входа в оболочку pod:

kubectl exec -it --namespace develop pod-name bash

тогда вы можете выполнить команду, которую вы хотите внутри модуля (например, ping)

ping www.google.com