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

我是寺冈,一名基础设施工程师。
这次,我将谈谈Kubernetes。

如以下 URL 中所述,
在运行多个容器的 Pod 上执行 `kubectl exec` 并
本指南解释了如何

https://kubernetes.io/ja/docs/tasks/debug-application-cluster/get-shell-running-container/

启动舱体

首先,我们尝试根据以下清单启动一个 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……

如果您觉得这篇文章对您有帮助,请点个“赞”!
5
加载中...
5票,平均分:1.00/15
10,598
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

寺冈由纪

我于 2016 年加入 Beyond,目前
担任基础设施工程师和 MSP(托管服务提供商)已有六年。我负责处理突发事件的故障排除,
并使用 AWS 等公有云设计和构建基础设施。最近,我一直在
Docker 和 Kubernetes 等容器基础设施。此外,
使用 HashiCorp 的 Terraform 和 Packer 等工具来构建和自动化
我还担任技术推广者的角色,在外部学习小组和研讨会上进行演讲。

・GitHub
https://github.com/nezumisannn

• 演讲邀约
:https://github.com/nezumisannn/my-profile

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

・认证:
AWS认证解决方案架构师 - 助理级、
Google Cloud专业云架构师