Linux kubectl exec行为异常,说明即使pod中存在二进制文件,也未找到命令

Linux kubectl exec行为异常,说明即使pod中存在二进制文件,也未找到命令,linux,mongodb,bash,kubernetes,openshift,Linux,Mongodb,Bash,Kubernetes,Openshift,因此,在mongodb测试名称空间中运行一个pod,并创建一个OpenShift集群。吊舱运转良好 $ kubectl get pods -n mongodb-test NAME READY STATUS RESTARTS AGE mongodb-1-7ww9k 1/1 Running 0 14m 当我在pod中执行并

因此,在
mongodb测试
名称空间中运行一个pod,并创建一个OpenShift集群。吊舱运转良好

$ 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
notfound

$ 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$PATH
which 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$ 

你能试试下面的吗

# kubectl run mongo --image=mongo --port=27017

# kubectl exec -it mongo-857dc9fb9d-scknx -- mongo
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb

if it doesnt work then try below

 # kubectl exec -it mongo-857dc9fb9d-scknx -- /opt/rh/rh-mongodb36/root/usr/bin/mongo
你能试试下面的吗

# kubectl run mongo --image=mongo --port=27017

# kubectl exec -it mongo-857dc9fb9d-scknx -- mongo
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb

if it doesnt work then try below

 # kubectl exec -it mongo-857dc9fb9d-scknx -- /opt/rh/rh-mongodb36/root/usr/bin/mongo

这就是问题所在。当我试图执行
mongo
时,实际上是在使用命令进入pod之后

$ kubectl exec -it -n mongodb-test  mongodb-1-7ww9k   -c mongodb  sh
不知何故,
mongo
可执行文件的路径被设置为
path
(通过
.bash\u profile
:混淆),但当我试图使用下面的命令调用
mongo
时,同样的情况没有发生

kubectl exec -it -n mongodb-test mongodb-1-7ww9k -c mongodb -- sh -c mongo
由于我们怀疑
路径
是在
中设置的。bash_profile
我尝试在bash中执行
mongo
,并且下面的命令有效

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

这就是问题所在。当我试图执行
mongo
时,实际上是在使用命令进入pod之后

$ kubectl exec -it -n mongodb-test  mongodb-1-7ww9k   -c mongodb  sh
不知何故,
mongo
可执行文件的路径被设置为
path
(通过
.bash\u profile
:混淆),但当我试图使用下面的命令调用
mongo
时,同样的情况没有发生

kubectl exec -it -n mongodb-test mongodb-1-7ww9k -c mongodb -- sh -c mongo
由于我们怀疑
路径
是在
中设置的。bash_profile
我尝试在bash中执行
mongo
,并且下面的命令有效

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

运气不好``kubectl exec-i-n mongodb test mongodb-1-7ww9k--mongo exec失败:container\u linux.go:345:启动容器进程导致“exec:\'mongo\':在$PATH中找不到可执行文件”命令终止,退出代码为1``我认为这与OpenShift有关,我想如果同一个pod在正常的K8S集群上运行,事情会好起来的。嘿,包括-没关系,但我试过了,但没有成功。第二个命令也不起作用<代码>/opt/rh/rh-mongodb36/root/usr/bin/mongo:加载共享库时出错:libyaml cpp.so.rh-mongodb36-0.5:无法打开共享对象文件:没有这样的文件或目录没有运气``kubectl exec-i-n mongodb test mongodb-1-7ww9k--mongo exec失败:container\u linux.go:345:启动容器进程导致“exec:\”mongo\“:在$PATH中找不到可执行文件“命令终止,退出代码为1``我认为这与OpenShift有关,我认为如果同一个pod在正常的K8S集群上运行,情况会很好。嘿,包括-没关系,但我尝试了,但没有成功。第二个命令也不起作用。”
/opt/rh/rh-mongodb36/root/usr/bin/mongo:加载共享库时出错:libyaml cpp.so.rh-mongodb36-0.5:无法打开共享对象文件:没有这样的文件或目录
您可以使用其完整路径执行
mongo
吗?请用部署清单更新您的问题?我试过使用一个普通的mongo图像,效果很好。我想重现与您完全相同的场景。您能否使用其完整路径执行
mongo
?请使用部署清单更新您的问题?我试过使用一个普通的mongo图像,效果很好。我想重现与你完全相同的场景。