临时容器

临时容器

        一种特殊的容器,改容器在现有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

 

 
 
 

 



posted @   逆风飞翔的博客  阅读(9)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示