为什么我无法将 shell 附加到 Google 的 hello-app:v1 容器?

为什么我无法将 shell 附加到 Google 的 hello-app:v1 容器?

我在 Vagrant 中部署了一个简单的 Kubernetes 裸机 pod ( hello-world-pod),集群中的节点运行 Ubuntu 18.04。当我运行此命令时,

kubectl exec -it hello-world-pod -- /bin/sh

...我收到错误:

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "0cc4cd8766f1e809ede55707dd422ffa4509804beb2006200b05ff4197f9a63c": OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown

为什么我无法将 shell 附加到此 pod 中的容器?能够成功地将 shell 附加到 ubuntu 容器和 nginx 容器,但不能附加到这个容器。

以下是有问题的 pod 的清单:

apiVersion: v1
kind: Pod
metadata:
  name: hello-world-pod
spec:
  containers:
  - name: hello-world
    image: gcr.io/google-samples/hello-app:1.0
    ports:
    - containerPort: 80

顺便说一句,我使用 containerd 而不是 docker 作为我的运行环境。

提前致谢!

答案1

显然,在后来的修订版中,这个 shell 已经消失了。

尝试使用旧版本的图像进行 Pluralsight 演示,例如 gcr.io/google-samples/hello-app@sha256:2b0febe1b9bd01739999853380b1a939e8102fd0dc5e2ff1fc6892c4557d52b9

它甚至有killall。

答案2

欢迎,这个示例容器非常小,只有 26.8 MB。不需要 shell,因此维护者没有安装 shell。请参阅错误消息/bin/sh: no such file or directory

容器应该尽可能小,不需要的东西就不要安装。运行时环境并不重要。

相关内容