V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
rayingecho
V2EX  ›  分享创造

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

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

    之前在公司里有过一场讨论: 业务容器里要不要装上 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   ·   实用小工具   ·   1169 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:26 · PVG 02:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.