kubernetes 无法在k8s pod中运行Shell

k5ifujac  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(3)|浏览(263)

当我运行kubectl exec -it backstage-test01-5d877c7f54-425s6 -n customer-namespaces -- /bin/bash命令时,它返回以下错误:

Defaulted container "linkerd-proxy" out of: linkerd-proxy, backstage-backend, linkerd-init (init)
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "eec3a58e120807f9dbea37e3c827850cc69690a4c0febd03ef6174b30a314fb7": OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

这是我在Pod的Containers选项卡中获得的视图。

我试图在kubernetes pod中执行shell,但我得到一个错误,说“bin/bash:没有sush文件或目录:未知”

bihw5rsg

bihw5rsg1#

您的pod中有两个容器:

  • linkerd-proxy:Linkerd Sidecar代理
  • backstage-backend:您的容器

尝试指定容器而不是使用默认容器:

kubectl exec -it backstage-test01-5d877c7f54-425s6 -n customer-namespaces -c backstage-backend -- /bin/bash

为了避免将来发生这种情况,请在pod spec(从v1.21开始可用)中的部署中添加以下注解:

kubectl.kubernetes.io/default-container

这个注解将保证您访问正确的容器,而不是linkerd-proxy
参考文献:

hpcdzsge

hpcdzsge2#

有时这个Pod会在PodsCreation上堆栈并进入错误循环,如果你检查它,你可能会发现那里有一个错误。您可以使用以下命令轻松检查它:

kubectl logs -f myPodName

从日志跟踪-确保yourPod正在运行,然后你可以做一些像;

kubectl exec --stdin --tty myPodName -- sh

然后检查你是否能进入shell..

neskvpey

neskvpey3#

也许只是因为环境还没有安装bash?
例如(不确定您的pod env):

kubectl exec -it backstage-test01-5d877c7f54-425s6 -n customer-namespaces -- apk add bash

快速检查:

kubectl exec -it backstage-test01-5d877c7f54-425s6 -n customer-namespaces -- sh -c 'which yum || which apt-get || which apk'

# e.g. 
/sbin/apk

相关问题