这些精简的基础镜像不包括用于对应用程序或其依赖项进行故障排查的工具,这是 Kubernetes 临时容器功能最大用途。临时容器允许创建包含可能需要的所有调试工具的容器镜像。一旦需要调试,就可以将临时容器部署到所选的正在运行的 Pod 中。
不能将容器添加到已部署的容器,需要更新 spec,并重新创建资源。但是,可以将临时容器添加到现有 Pod 中,以便对线上问题进行故障排查。
二、 临时容器的配置
临时容器与常规容器共享相同的 spec。但是,某些字段被禁用,并且某些行为被更改。
如下列出了一些重大变化,检查临时容器规范以获取完整列表:
它们不会重新启动。
不允许定义资源。
不允许使用端口。
不允许使用启动、活动和就绪探测。
三、启动临时容器
首先,检查是否启用了临时容器功能:
rust复制代码
kubectl debug -it <POD_NAME> --image=busybox
如果未启用该功能,将看到类似下面的消息:
rust复制代码
Defaulting debug container name to debugger-wg54p.
error: ephemeral containers are disabled forthiscluster (error from server: "the server could not find the requested resource").
# ps aux
PID USER TIME COMMAND
1 root 0:00 /pause
6 root 0:00 nginx: master process nginx -g daemon off;
111010:00 nginx: worker process
12 root 0:00 sh
17 root 0:00 ps aux