分享一个自己开发的 Kubernetes 排障新姿势: kubectl-debug - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
rayingecho
V2EX    分享创造

分享一个自己开发的 Kubernetes 排障新姿势: kubectl-debug

  •  
  •   rayingecho
    aylei 2018-12-22 22:51:11 +08:00 4144 次点击
    这是一个创建于 2488 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在公司里有过一场讨论: 业务容器里要不要装上 netstat, tcpdump, 乃至 arthas 这样的排障工具.

    一派信奉 docker 哲学: 容器镜像要精简, 要 immutable, 装各种排障工具这种属于虚拟机时代的伪需求. 再说了, 你要更新一个排障工具或者 debug 脚本, 得动所有业务镜像, 成何体统?

    一派践行实用主义: 哲学不哲学的都不能赚钱, 我们就关心线上出了问题工程师能不能用最熟悉, 最顺手的方案定位问题解决问题, 搞那么多花里胡哨的没用. 预装几个 binary 和脚本, 能解决问题就是好的!

    从那时起我就想做今天这个项目了, 而在机缘巧合之下, 今天真的把解决方案做了出来: kubectl-debug

    简单说: kubectl-debug 是一个 kubectl 插件, 支持用户用 kubectl debug POD_NAME 这样的指令, 对指定 Pod 中的目标容器进行 debug. 它的背后其实就是帮用户启动了一个新容器, 并且加入到目标容器的 pid,user, network 以及 ipc namespace 中, 这时新容器当中的各种排障工具和脚本就可以用起来了. 而与此同时, 所有的业务容器不需要预装任何其它工具.

    做完之后自己用了一下, 确实舒服了很多, 尤其是很多早期的业务容器, 用的 alpine 当基础镜像, 啥都没有, 要 debug 的时候先进去 apk add 一波是真的苦...

    最后附上 github 主页, 欢迎大家试用反馈

    13 条回复    2018-12-25 19:49:53 +08:00
    kidlj
        1
    kidlj  
       2018-12-22 23:31:06 +08:00 via iPhone
    nice,收藏
    hengyunabc
        2
    hengyunabc  
       2018-12-22 23:46:19 +08:00
    arthas 好评:) arthas 最近加了 docker 的支持: https://alibaba.github.io/arthas/docker.html
    rayingecho
        3
    rayingecho  
    OP
       2018-12-22 23:57:35 +08:00
    @kidlj
    感谢鼓励
    rayingecho
        4
    rayingecho  
    OP
       2018-12-22 23:58:29 +08:00
    @hengyunabc
    大佬好! 我们已经把 arthas 放进了 java 的基础镜像里, 确实很好用~
    privil
        5
    privil  
       2018-12-23 00:02:13 +08:00
    有意思,感谢分享!
    choury
        6
    choury  
       2018-12-23 00:57:12 +08:00 via Android
    为啥不用 nsenter ?
    firefox12
        7
    firefox12  
       2018-12-24 00:29:57 +08:00 via iPhone
    能安利一下 这个录屏并转成 gif 的软件或过程吗?
    rayingecho
        8
    rayingecho  
    OP
       2018-12-24 13:32:49 +08:00
    @choury
    哈哈, 本质上做的事情确实就是 nsenter, 只不过:
    1. 包装成了一条 kubectl 命令, 更加简洁, 免去了中间的远程执行和找 target containerId 的步骤
    2. 通过起新镜像, 解决了脚本和排障工具的安装维护问题, 这正是 docker 的强项
    rayingecho
        9
    rayingecho  
    OP
       2018-12-24 13:33:17 +08:00
    @firefox12
    用的 gifox for mac, 具体可以自行 gg 蛤
    rayingecho
        10
    rayingecho  
    OP
       2018-12-24 13:33:44 +08:00
    @privil
    感谢鼓励!
    ooeyunarika
        11
    ooeyunarika  
       2018-12-24 17:05:24 +08:00
    好东西,感谢分享!
    firefox12
        12
    firefox12  
       2018-12-24 22:26:09 +08:00
    @rayingecho 谢谢
    abmin521
        13
    abmin521  
       2018-12-25 19:49:53 +08:00 via Android
    666
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5130 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 01:09 PVG 09:09 LAX 18:09 JFK 21:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86