You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes多容器Pod中如何指定目标容器登录?

问题解决:Deployment多容器配置错误及kubectl exec容器指定方法

一、为什么每个Pod只运行了一个容器?

你的Deployment配置存在YAML语法错误:重复定义了containers字段。在YAML规则中,相同的键会被后续的内容覆盖,所以原本的django容器配置被后面的nginx容器配置替换,最终每个Pod只启动了nginx这一个容器,这就是kubectl get pods显示1/1的原因。

修正后的Deployment配置需将两个容器放在同一个containers列表下:

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
        - name: nginx
          image: nginx:local
          ports:
          - containerPort: 80

修改后重新应用配置:kubectl apply -f your-deployment.yaml,后续就能看到每个Pod的READY状态变为2/2。

二、关于kubectl exec的容器登录问题

kubectl exec命令本质是登录到Pod内的某个容器,而非Pod本身——Pod是共享网络、存储资源的容器集合,本身无法直接登录。如果执行命令时未指定容器,kubectl会默认选择Pod里的第一个容器(或标记为默认容器的实例)。

要指定目标容器,只需添加-c参数:

  • 登录django容器:
    kubectl exec -it ol000dep-bc96bfc98-r9lrj -c django /bin/bash
    
  • 登录nginx容器:
    kubectl exec -it ol000dep-bc96bfc98-r9lrj -c nginx /bin/bash
    

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:42:10