当 Kubernetes Pod 中运行多个容器时,如何使用 kubectl exec 登录

我叫寺冈,是一名基础设施工程师。
这次我们要讲的是 Kubernetes。
正如下面的 URL 中所述,我们
通过在运行多个容器的 Pod 上运行 kubectl exec 来
登录任何容器
https://kubernetes.io/ja/docs/tasks/debug-application-cluster/get-shell-running-container/
启动 Pod
首先,让我们根据下面的清单启动一个 Pod。
这是一个简单的方法,使用部署控制器来启动运行 Nginx 容器的 Pod。
apiVersion: apps/v1 种类: 部署元数据: 名称: example-web 命名空间: 默认规范: 选择器: matchLabels: app: example-web 副本: 1 模板: 元数据: 标签: app: example-web 规范: 容器: - 名称: nginx 图像:nginx:最新 imagePullPolicy:始终端口:-containerPort:80
反映清单。
$ Kubectl apply -f deployment_example_web.yaml
检查 Pod 是否已启动。
$ kubectl get pods NAME READY STATUS RESTARTS AGE example-web-59fccdb6d4-slrkv 1/1 Running 0 13s
你已经站起来了。
如果您想登录到此 Pod 中运行的容器,请使用
$ kubectl exec -it example-web-59fccdb6d4-slrkv bash root@example-web-59fccdb6d4-slrkv:/#
然后就可以登录了。
接下来,让我们稍微编辑一下清单文件。
apiVersion: apps/v1 种类: 部署元数据: 名称: example-web 命名空间: 默认规范: 选择器: matchLabels: app: example-web 副本: 1 模板: 元数据: 标签: app: example-web 规范: 容器: - 名称: nginx 图像:nginx:最新 imagePullPolicy:始终端口:-containerPort:80 -名称:php-fpm 图像:php:7.4-fpm imagePullPolicy:始终端口:-containerPort:9000
还添加了 PHP-FPM 容器。
反映的命令和之前一样,所以我就省略了,但是
当你启动Pod时,READY部分变成了2/2。
$ kubectl get pods NAME READY STATUS RESTARTS AGE example-web-85cd8dbd8d-24rx4 2/2 Running 0 69s
让我们像以前一样运行相同的 kubectl exec。
$ kubectl exec -it example-web-85cd8dbd8d-24rx4 bash 将容器名称默认为 nginx。
显示了一些消息。
这意味着“默认容器名称是 nginx,因此请使用 kubectl describe 检查所有容器信息。”
也就是说,如果你想登录PHP-FPM容器,则无法使用上述命令。
您可以使用 --container 选项登录,如下所示。
$ kubectl exec -it example-web-85cd8dbd8d-24rx4 --container php-fpm bash root@example-web-85cd8dbd8d-24rx4:/var/www/html#
我能够登录!
概括
这似乎是显而易见的,但我会将其作为备忘录留下。
了解有关 Kubernetes 的更多信息。 。 。
如果您觉得这篇文章有帮助,请点赞!
4