使用kubectl在pod中执行bash命令?

时间:2018-07-09 14:10:48

标签: kubernetes kubectl

我的问题很简单。

如何在Pod中执行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

如果只是扑朔迷离,那肯定可以。但是我想立即跳入mongo shell。

我找到了一个解决方案,但是它不起作用。告诉我现在是否有可能? Executing multiple commands( or from a shell script) in a kubernetes pod

谢谢。

2 个答案:

答案 0 :(得分:30)

双破折号“-”用于将要传递给命令的参数与kubectl参数分开。 所以正确的方法是:

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

您忘记了“-”和“ bash”之间的空格。

要执行多个命令,您可能需要:

  • 创建脚本并将其作为卷安装在pod中并执行

  • 使用脚本启动辅助容器并运行

答案 1 :(得分:0)

我使用类似这样的东西进入豆荚的外壳:

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

然后您可以在Pod中执行所需的命令(例如ping)

ping www.google.com