💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
在使用 kubernetes 跑应用的时候,可能会遇到一些网络问题,比较常见的是服务端无响应(超时)或回包内容不正常,如果没找出各种配置上有问题,这时我们需要确认数据包到底有没有最终被路由到容器里,或者报文到达容器的内容和出容器的内容符不符合预期,通过分析报文可以进一步缩小问题范围。那么如何在容器内抓包呢?本文提供实用的脚本一键进入容器网络命名空间(netns),使用宿主机上的tcpdump进行抓包。 1. `kubectl get pod -o wide` `kubectl describe pods -n crm-sprod sc-facade-b5cf7d9dc-jbsp4 | grep docker` 获取container id 2. 进入pod所在服务器 `docker inspect -f {{.State.Pid}} 2eb97134de41d974b22d7b21e3fe6cec45debed7c4a231c1a1a4d270df567505` 获取到pid 3. 进入pod的network namespace `nsenter -n --target pid` 这时已经进入 pod 的 netns,可以执行宿主机上的 ip a 或 ifconfig 来查看容器的网卡,执行 netstat -tunlp 查看当前容器监听了哪些端口,再通过 tcpdump 抓包: `tcpdump -i eth0 -w test.pcap port 80` 然后拷贝到本地用wireshark分析