【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享 - LuBu0505/My-Code GitHub Wiki

问题描述

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

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

操作步骤

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

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

kubectl node-shell

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

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

image.png

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

crictl inspect --output go-template --template '{{.info.pid}}'

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

nsenter -n -t

第六步:抓包之前可以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 进程 


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

⚠️ **GitHub.com Fallback** ⚠️