理解 Ephemeral Container:什么时候该用它
Ephemeral Container(临时容器)是 Kubernetes 自 1.16 引入、1.23 正式 GA 的一项特性,专为故障排查设计。与普通容器不同,它不参与 Pod 的常规生命周期管理,不会出现在 Pod 的 spec.containers 列表中,而是通过 spec.ephemeralContainers 动态注入。与 kubectl exec 相比,exec 依赖目标容器内已安装的 Shell 或调试工具,若业务镜像采用极简的 distroless 或 alpine 基础镜像,exec 往往因缺少命令而失效。临时容器则允许你挂载一个包含完整调试工具链的镜像,并与目标容器共享网络、PID 或文件系统命名空间,从而在不重启或修改业务镜像的前提下“空降”调试环境。使用前需确保集群版本不低于 1.23,且当前用户具备 pods/ephemeralcontainers 子资源的 create 和 update 权限。该特性特别适用于生产环境中无法随意重启、且业务容器因安全策略剥离了调试工具的 Pod。
创建临时容器并进入故障现场
在实际排查中,推荐使用 kubectl debug 命令快速注入临时容器。基本语法为 kubectl debug

从网络、进程到文件系统定位故障
进入临时容器后,排查应遵循“进程状态→网络连通性→文件系统与挂载”的标准路径。首先,若启用了 --share-processes,可直接运行 ps -ef 查看业务进程是否存活、是否存在僵尸进程或异常 CPU 占用。其次,网络排查是高频场景,使用 ss -tulnp 检查目标端口监听状态,通过 curl -v https://localhost:

验证修复与清理:避免把调试变成生产风险
故障定位并实施修复(如调整配置、重启依赖服务或修复代码)后,必须进行闭环验证。首先检查业务容器日志 kubectl logs

