【问题标题】:Minikube crashes exec'ing into Pod using Alpine linuxMinikube 在使用 Alpine linux 执行到 Pod 时崩溃
【发布时间】:2018-06-04 23:53:58
【问题描述】:

每次我尝试通过运行 alpine linux 的 minikube 仪表板执行到 pod 时,它都会崩溃并关闭连接并出现以下错误

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:262: starting container process caused "exec: \"bash\": executable file not found in $PATH"

CONNECTION CLOSED

“kubectl version”命令的输出如下:

Client Version: version.Info{Major:"1", Minor:"8", 
GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", 
GitVersion:"v1.8.0", 
GitCommit:"0b9efaeb34a2fc51ff8e4d34ad9bc6375459c4a4", 
GitTreeState:"clean", BuildDate:"2017-11-29T22:43:34Z", GoVersion:"go1.9.1", Compiler:"gc", Platform:"linux/amd64"}

谁能给点建议?只要有 BASH 而不是 ASH,我就可以完美运行其他容器。

非常感谢

【问题讨论】:

    标签: kubernetes minikube


    【解决方案1】:

    通常 Alpine linux 不包含 bash。 您是否尝试过使用以下任何方法执行到容器中?

    /bin/ash
    
    /bin/sh
    
    ash
    
    sh
    

    所以例如kubectl exec -it my-alpine-shell-293fj2fk-fifni2 -- sh 应该可以完成这项工作。

    【讨论】:

    • 抱歉,我正在使用 minikube 仪表板执行 pod。我已经更新了问题
    【解决方案2】:

    每次我尝试执行到 pod 中

    您没有指定提供给kubectl exec 的命令,但根据您的问题,我假设它是kubectl exec -it $pod -- bash

    如错误消息所述,问题在于您使用的容器映像不提供 bash。很多很多“超薄”图像没有随 bash 一起提供,因为这样做会带来依赖关系。

    如果您想要一个适用于所有图像的命令,请使用 sh,因为 90% 的时间如果存在 bash,它会符号链接到 /bin/sh 和其他情况(正如您在 @987654327 中提到的那样@ 或 dash 或其他)然后使用 sh 仍将工作,并允许您确定是否需要调整命令以专门请求不同的 shell。

    因此kubectl exec -it $pod -- sh 是我希望工作的命令

    【讨论】:

    • 抱歉,我正在使用 minikube 仪表板执行 pod。我已经更新了问题
    • 好吧,那就不要那样做;仪表板并非旨在替代kubectl。如果您坚持使用仪表板,那么我建议创建一个 确实 包含 bash 的新 docker 映像(使用您的 alpine 映像作为 FROM 行)并部署它。
    猜你喜欢
    • 2019-05-31
    • 1970-01-01
    • 2023-03-24
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2020-02-13
    相关资源
    最近更新 更多