一个pod多个容器kubernetes在哪里登录

yquaqz18  于 2023-04-29  发布在  Kubernetes
关注(0)|答案(2)|浏览(218)

我有一个部署,其中有两个容器。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ol000dep
spec:
  selector:
    matchLabels:
      app: ol000kube
  replicas : 2
  template:
    metadata:
      labels:
        app: ol000kube
    spec:
      containers:
        - name: django
          image: django:local
          ports:
          - containerPort: 8011
      containers:
        - name: nginx
          image: nginx:local
          ports:
          - containerPort: 80

这就形成了两个复制舱,据我所知,每个舱都有两个容器。

kubectl get pods      
NAME                       READY   STATUS    RESTARTS   AGE
ol000dep-bc96bfc98-r9lrj   1/1     Running   0          21m
ol000dep-bc96bfc98-t6flw   1/1     Running   0          21m

现在我可以登录了

kubectl exec -it ol000dep-bc96bfc98-r9lrj  /bin/bash

那我就想
Pod中的此登录不是Container吗??
如果是,我如何选择我想要登录的容器?

wpx232ag

wpx232ag1#

有意思即使你提供的yaml是不正确的(.spec.containersMap键必须是唯一的),k8s似乎可以接受。
在您的示例中,pod启动时第二个容器(名称:nginx)在其中。
Pod中的此登录不是Container吗??

容器。

因此,使用kubectl exec -it ol000dep-bc96bfc98-r9lrj /bin/bash,您可以登录/exec进入nginx容器。
在纠正yaml之后,两个容器将在pod中启动,您可以通过其名称登录到所需的容器(e.例如name: django)。

...
      containers:
        - name: django
          image: django:local
          ports:
          - containerPort: 8011
        - name: nginx
          image: nginx:local
          ports:
          - containerPort: 80

登录:

kubectl exec -it POD_NAME -c CONTAINER_NAME -- /bin/bash

请注意,如果不指定容器的名称(通过省略-c CONTAINER_NAME),则默认情况下将登录到第一个定义的容器(在本例中为django)。

kb5ga3dv

kb5ga3dv2#

试试这个:

kubectl exec -it ol000dep-bc96bfc98-r9lrj  --container django(nginx)  -- /bin/bash

相关问题