最新文章

如何在 Kubernetes Pod 内进行网络抓包

如何在 Kubernetes Pod 内进行网络抓包

使用 Kubernetes 时,经常会遇到一些棘手的网络问题需要对 Pod 内的流量进行抓包分析。然而所使用的镜像一般不会带有 tcpdump 命令,过去常用的做法简单直接暴力:登录到节点所在节点,使用 root 账号进入容器,然后安装 tcpdump。抓到的包有时还需要拉回本地,使用 Wireshark 进行分析。而且整个过程非常繁琐,跨越几个环境。 正好前几天也做了一次抓包问题排查,这次就介绍一下快速进行网络抓包的几种方法。 TL;DR 几种方法各有优缺点,且都不建议在生产环境使用。假如必须使用,个人倾向于 kubectl debug 临时容器的方案,但这个方案也有不足。 使用额外容器:这种方案为了 Pod 添加一个额外的容器,使用了静态编译的 tcpdump 进行抓取,借助了多容器共享网络空间的特性,适合 distroless 容器。缺点是需要修改原来的 Pod,调式容器重启会引起 Pod 重启。 kubectl plugin ksniff:一个 kubectl 插件。支持特权和非特权容器,可以将捕获内容重定向到 wireshark 或者 tshark。非特权容器的实现会稍微复杂。 kubectl debug 临时容器:该方案对于 distroless 容器有很好的支持,临时容器退出后也不会导致 Pod 重启。缺点是 1.

About Me

张晓辉

英文名 Addo。 资深程序员,LF APAC 开源布道师,CNCF Ambassador,云原生社区管委会成员,公众号“云原生指北”作者,微软 Azure MVP。 曾任职于汇丰软件、唯品会、数人云、小鹏汽车,有多年的微服务和基础架构实践经验,主要工作涉及微服务、容 …

进一步了解