首页/云/Kubernetes 速查/kubectl debug 与临时容器
kubectl 基础56 条

kubectl debug 与临时容器

给运行中的 Pod 注入临时容器(ephemeral container)做诊断:镜像里没有 shell、或主容器已崩溃时仍能进入同一命名空间看现场。

Kubernetes 速查云更新于 2026-10-13

临时容器调试是什么

当业务镜像里没有可用的命令行工具,或者容器已经崩溃无法进入时,可以往运行中的对象里注入一个临时容器。它使用自带工具的镜像,被加入到目标对象的环境里,从而在没有 shell 的运行时镜像上也能查看网络、进程与文件系统状态。这是排查精简镜像的标准手段。

共享哪些、不共享哪些

默认它会与目标对象共享网络等命名空间,因此可以直接验证端口与解析;但要看到应用进程,需要显式指定目标容器以加入其进程命名空间。文件系统默认不共享,要查看应用的文件必须通过共享卷挂载。临时容器创建后无法删除,退出后会保留为已终止状态。

基本信息

适用环境集群版本需支持临时容器特性,kubectl 版本与之匹配
适用对象运行中或已崩溃的对象,也可作用于节点
镜像选择自带网络与进程工具的调试镜像最实用
共享范围默认共享网络等命名空间,文件系统需卷配合
生命周期创建后不可删除,退出后保留为已终止状态
权限要求对对象具备创建临时容器的权限

典型使用场景

  • 精简镜像排查:运行时镜像不含 shell,用调试容器验证网络与解析
  • 崩溃对象取证:主容器已反复退出,仍可加入同一环境查看现场
  • 网络诊断:在共享网络命名空间里测试端口连通与抓包
  • 进程观察:加入目标容器进程命名空间后查看进程与线程状态
  • 节点排查:以节点的命名空间启动调试容器,检查节点侧文件与网络
  • 文件核对:通过共享卷读取应用的数据目录与配置

常用姿势

常用姿势
kubectl debug -it web-x --image=busybox:1.36 --target=app        # 加入目标容器进程空间
kubectl debug -it web-x --image=nicolaka/netshoot --target=app -- bash   # 网络诊断工具集
kubectl debug node/node-1 -it --image=busybox:1.36                # 在节点环境里排查
kubectl debug -it web-x --image=busybox:1.36 -- sh                # 仅共享网络,做连通性测试

命令与相关手段的分工

手段适用条件局限
在容器内执行命令容器运行中且镜像内有工具精简镜像不适用
临时容器容器运行中或已崩溃创建后不可删除,不能配置端口与探针
复制对象调试需要用不同镜像启动完整副本会创建新对象,环境不完全一致
节点级调试排查节点侧问题权限较高,需谨慎操作
默认只共享网络等命名空间,查看磁盘上的应用文件需要通过共享卷,进程互不可见时记得指定目标容器。
临时容器无法配置资源上限与探测,启动时占用的资源会计入该对象的总额,生产环境不要长期保留。

易错点

  • 以为与主容器共用文件系统:默认只共享网络,看不到应用的文件时会误判为「文件不存在」
  • 忘记指定目标容器:不加入目标容器的进程命名空间时,进程列表里看不到应用进程
  • 在临时容器上配置端口或探针:这些字段不受支持,写了也不会生效
  • 把它当作长期调试环境:临时容器无法删除且持续占用资源,用完应重建对象清理

数据来源与参考

  • Kubernetes 官方文档 · 临时容器与 kubectl debug
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌