gpt4 book ai didi

linux - kubectl exec 行为异常,即使二进制文件在 pod 中,也未找到命令

转载 作者:行者123 更新时间:2023-12-05 03:55:08 25 4
gpt4 key购买 nike

因此拥有一个 OpenShift 集群并在 mongodb-test 命名空间中运行一个 pod。 pod 运行良好

$ kubectl get pods -n mongodb-test                                             
NAME READY STATUS RESTARTS AGE
mongodb-1-7ww9k 1/1 Running 0 14m

当我执行到 pod 中并运行 mongo 命令时,我没有遇到任何问题并且该命令按预期工作。

$ kubectl exec -it -n mongodb-test  mongodb-1-7ww9k   -c mongodb  sh
sh-4.2$ mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
>

现在的问题是,当我尝试使用以下语法运行相同的命令时,我得到 mongo not found

$ kubectl exec -it -n mongodb-test mongodb-1-7ww9k -c mongodb -- sh -c mongo
sh: mongo: command not found
E0227 13:02:01.728579 24237 v3.go:79] EOF
command terminated with exit code 127

下面是 pod 内部 echo $PATHwhich mongo 的输出。

$ kubectl exec -ti -n mongodb-test mongodb-1-7ww9k -c mongodb -- sh 
sh-4.2$ echo $PATH
/opt/rh/rh-mongodb36/root/usr/bin:/opt/rh/rh-mongodb36/root/usr/sbin:/opt/app-root/src/bin:/opt/app-root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sh-4.2$ which mongo
/opt/rh/rh-mongodb36/root/usr/bin/mongo
sh-4.2$

最佳答案

所以,这就是问题所在。当我尝试在使用命令

进入 pod 后实际执行 mongo
$ kubectl exec -it -n mongodb-test  mongodb-1-7ww9k   -c mongodb  sh

mongo 可执行文件的路径被设置到 PATH 中(通过 .bash_profile :confused),但是当我尝试调用 mongo,使用下面的命令,同样的事情并没有发生。

kubectl exec -it -n mongodb-test mongodb-1-7ww9k -c mongodb -- sh -c mongo

因为我们怀疑 PATH 是在 .bash_profile 中设置的,所以我尝试在 bash 中执行 mongo 并且下面的命令有效。

kubectl exec -it -n mongodb-test mongodb-1-7ww9k -c mongodb -- bash -c mongo

关于linux - kubectl exec 行为异常,即使二进制文件在 pod 中,也未找到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60428501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com