临时容器
临时容器
一种特殊的容器,改容器在现有pod中临时运行,以便完成用户发起的操作,例如:故障排查。会使用容器来检查服务,而不是用它来构建应用程序。
由于临时容器奔溃或容器镜像不包含调试工具而导致kubectl exec 无用时,临时容器对于交互式故障排查很有用。
就是在原有的pod上,添加一个临时的Container,这个Container可以包含我们排查问题所有的工具,netstat、ps、top
创建临时容器前置条件
修改kube-apiserver、kube-scheduler、kube-controller-manager、 kube-proxy、kubelet启动配置参数,添加--feature-gates=EphemeralContainers=true 注意,--feature-gates=EphemeralContainers=true需要添加到最后,否则可能会出现意想不到的问题。 vim /usr/lib/systemd/system/kube-apiserver.service vim /usr/lib/systemd/system/kube-scheduler.service vim /usr/lib/systemd/system/kube-controller-manager.service vim /usr/lib/systemd/system/kube-proxy.service vim /usr/lib/systemd/system/kubelet.service
配置参数
--feature-gates=EphemeralContainers=true
重启服务
systemctl daemon-reload
systemctl restart kube-apiserver kube-scheduler kube-controller-manager kube-proxy kubelet
创建测试容器
kubectl run mynginxpod --image=nginx
创建临时容器配置
{ "apiVersion": "v1", "kind": "EphemeralContainers", "metadata": { "name": "mynginxpod" }, "ephemeralContainers": [{ "command": ["sh"], "image": "busybox:1.28", "name": "debugger", "stdin": true, "tty": true, "terminationMessagePolicy": "File" }] }
运行:
namespaces:要与注入临时容器的namespaces相同,mynginxpod为注入临时容器的pod
kubectl replace --raw /api/v1/namespaces/default/pods/mynginxpod/ephemeralcontainers -f ec.json
进入临时容器
kubectl exec -it mynginxpod -c debugger sh
或者直接创建并进入临时容器
kubectl debug -it ephemeral-demo --image=busybox:1.28 --image-pull-policy=IfNotPresent --target=ephemeral-demo
创建 Pod 副本调试
创建测试容器
kubectl run myapp --image=nginx --restart=Never
通过运行以下命令,建立 myapp 的一个名为 myapp-debug 的副本, 新增了一个用于调试的 busybox容器
kubectl debug myapp -it --image=busybox --share-processes --copy-to=myapp-debug
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!