当 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
