Kubernetes是否总是给正在运行的容器一个shell

我的 Pod 清单如下:

apiVersion: v1
kind: Pod
metadata:
  name: pod-nginx-container
spec:
  containers:
  - name: nginx-alpine-container-1
    image: nginx:alpine
    ports:
      - containerPort: 80

我可以使用运行我的 Nginx 的容器获得一个 shell kubectl exec --stdin --tty pod-nginx-container -- /bin/sh

我的问题是 Kubernetes 是否总是为正在运行的容器提供一个 shell?我的意思是假设我已经创建了自己的 Tomcat 网络服务器映像,当我使用该映像时,我是否仍然可以让 shell 登录到运行 Tomcat 的容器?

回答

Kubernetes

Kubernetes时间表豆荚的节点。一个 Pod 由一个或多个容器组成——这些容器是从容器镜像中实例化的。

容器镜像

容器映像包含一个将作为主进程运行的命令,但它也可以包含其他二进制文件以及完整的 Linux“用户空间”,例如带有 shell 和许多工具的 Ubuntu。

容器镜像可以“从头开始”构建,除了您的应用程序之外,无需任何其他软件,但通常包含一些更多的软件供您的应用程序运行,例如glibc. 有关不包含shell 的最小基础映像,请参阅distroless。

结论

我的问题是 Kubernetes 是否总是为正在运行的容器提供一个 shell?我的意思是假设我已经创建了自己的 Tomcat 网络服务器映像,当我使用该映像时,我是否仍然可以让 shell 登录到运行 Tomcat 的容器?

您的容器包含外壳,仅当您内置外壳时 - 最有可能使用包含外壳的基本映像,例如 alpine 或 ubuntu。

这取决于你Dockerfile在构建容器镜像之前做什么docker build


以上是Kubernetes是否总是给正在运行的容器一个shell的全部内容。
THE END
分享
二维码

)">
< <上一篇
下一篇>>