web-dev-qa-db-fra.com

Exécuter la commande bash dans le pod avec kubectl?

ma question est simple.

Comment exécuter une commande bash dans le pod? Je veux tout faire avec une commande bash?

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

Donc, la commande est simplement ignorée.

[root@master ~]# kubectl exec -it --namespace="tools" mongo-pod bash -c "mongo"
root@mongo-deployment-78c87cb84-jkgxx:/# 

Ou alors.

[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

Si c'est juste une fête, cela fonctionne certainement. Mais je veux sauter dans le Mongo Shell immédiatement.

J'ai trouvé une solution, mais ça ne marche pas. Dis-moi si c'est possible maintenant? Exécution de plusieurs commandes (ou à partir d'un script shell) dans un pod kubernetes

Merci.

20
JDev

Le symbole de double tiret "-" est utilisé pour séparer les arguments que vous voulez transmettre à la commande des arguments kubectl. Donc, la manière correcte est:

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

Vous avez oublié un espace entre "-" et "bash".

Pour exécuter plusieurs commandes, vous souhaiterez peut-être:

  • créer un script et le monter en tant que volume dans votre pod et l'exécuter

  • pour lancer un conteneur latéral avec le script et l'exécuter

49
Nicola Ben

J'utilise quelque chose comme ceci pour entrer dans le shell du pod:

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

alors vous pouvez exécuter la commande que vous voulez dans le pod (par exemple, ping)

ping www.google.com
1
Anthony Piñero