【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享

问题描述

当在AKS中遇见复杂的网络问题,想要进入到特定的POD中来抓取网络文件包进行分析。

 

特分享抓取网络包的方法!

 

操作步骤

第一步:使用kubectl get pods命令确认问题Pod所在的Node


第二步:使用node shell登录到相应node上

kubectl node-shell <node name>

 

第三步:在node上使用crictl ps命令找到相应pod的container id

(下图以coredns pod为例,container id是7fa********, 在命令输出的第一列)


第四步:使用下面的命令得到PID:

crictl inspect --output go-template --template '{{.info.pid}}' <container id>


第五步:使用nsenter命令及PID进入Pod的network space:

nsenter -n -t <PID>


第六步:抓包之前可以change directory到/var/tmp,这样可以避免一些可能的Permission Deny问题

cd /var/tmp


第七步:使用tcpdump 命令抓包,其中port表示只抓取3306的数据包,-w表示保存的文件

tcpdump -i eth0 port 3306 -w name.pcap

 

第八步:复现问题后,停止 tcpdump 抓包

按下 Ctrl+C 键来中断正在运行的 tcpdump 进程 

 

posted @ 2025-03-10 20:54  路边两盏灯  阅读(21)  评论(0)    收藏  举报