当 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 kind: Deployment metadata: name: example-web namespace: default spec: selector: matchLabels: app: example-web replicas: 1 template: metadata: labels: app: example-web spec: containers: - name: nginx image: nginx:latest imagePullPolicy: Always ports: - 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 kind: Deployment metadata: name: example-web namespace: default spec: selector: matchLabels: app: example-web replicas: 1 template: metadata: labels: app: example-web spec: containers: - name: nginx image: nginx:latest imagePullPolicy: Always ports: - containerPort: 80 - name: php-fpm image: php:7.4-fpm imagePullPolicy: Always ports: - 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。使用“kubectl describe pod/example-web-85cd8dbd8d-24rx4 -n default”查看此 pod 中的所有容器。.

屏幕上显示了一条消息,
意思是“默认容器名为 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
加载中...
4 票,平均:1.00 / 14
10,420
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

寺冈由纪

于 2016 年加入 Beyond,目前是他担任基础设施工程师
MSP 的第六个年头,他负责排除故障,同时
使用 AWS 等公共云设计和构建基础设施。
最近,我
一直在使用 Terraform 和 Packer 等 Hashicorp 工具作为构建 Docker 和 Kubernetes 等容器基础设施以及自动化操作的一部分,并且我
还扮演了在外部学习小组和研讨会上发言的传播者的角色。

・GitHub
https://github.com/nezumisannn

・演示历史
https://github.com/nezumisannn/my-profile

・演示材料(SpeakerDeck)
https://speakerdeck.com/nezumisannn

・认证:
AWS认证解决方案架构师-
谷歌云专业云架构师