当 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