Swiss army tool (application troubleshooting)

容器为了安全通常会使用精简的基础镜像,例如alpine,甚至是Distroless,连shell都没有。同时对安全性要求比较高的公司,也会控制权限,不会让开发直接到容器里执行程序。所以之前需要定位Java程序性能问题,需要SRE手动进入容器里面执行heap dump,再手动拷文件出来。因此希望开发一个应用服务,开发可以自己方便做故障定位。

架构设计

为了实现上面的目的,需要用到核心的技术是Nsenter,通过kubernetes api在目标pod的相同节点,新建一个带有各种故障排除的Debug-pod,然后进入到与目标pod同一个namespace,执行heap dump,thread dump命令,或者是探测目标pod到其他地方的网络连通性。把heap dump或者thread dump的文件压缩,上传到NFS,通过RESTful api提供下载


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!