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

1qczuiv0  于 2023-03-29  发布在  Kubernetes
关注(0)|答案(3)|浏览(190)

我的问题很简单。
如何在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

如果这只是一个bash,它当然可以工作。但我想立即进入mongo shell。
我找到了一个解决方案,但它不起作用。请告诉我现在是否可以这样做?Executing multiple commands( or from a shell script) in a kubernetes pod
谢谢。

idfiyjo8

idfiyjo81#

双破折号“--”用于将您希望在容器内运行的命令与kubectl参数分开。因此正确的方法是:

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

你忘了在“--”和“bash”之间加空格。
要执行多个命令,您可能需要:

  • 创建脚本并将其作为卷挂载到Pod中并执行
  • 启动包含脚本的副容器并运行它
66bbxpm5

66bbxpm52#

我用这样的东西进入分离舱的 shell

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

然后你可以在pod中执行你想要的命令(例如ping)

ping www.google.com

然后你可以看到你的ping日志,瞧...享受它:D

nc1teljy

nc1teljy3#

对我来说,这是打开pod shell的正确命令(以及参数顺序):

kubectl -n <namepace> exec -it <pod> -- /bin/sh
  • 注意 *:使用/bin/bash导致了以下错误:

发生内部错误:在容器中执行命令时出错:无法在容器中执行:无法启动exec“":OCI运行时执行失败:执行失败:无法启动容器进程:执行代码:“/bin/bash”:统计/bin/bash:没有这样的文件或目录:未知的
因此,请确保您使用的是/bin/sh,以避免不必要的错误。

相关问题