如何在Azure K8S的Pod中利用AKS抓取TCP数据包?

摘要:问题描述 根据官方文档(从 AKS 群集上的 Pod 捕获 TCP 数据包: https:learn.microsoft.comzh-cntroubleshootazureazure-kubernete
问题描述 根据官方文档(从 AKS 群集上的 Pod 捕获 TCP 数据包:https://learn.microsoft.com/zh-cn/troubleshoot/azure/azure-kubernetes/logs/packet-capture-pod-level)的内容,本文将实验如何从AKS Pod中下载网络数据包。 实验操作 第一步:使用kubectl连接到Pod中 运行kubectl get pods -A以查看 AKS 群集上的 Pod 列表。 运行kubectl exec <pod name>-it -- /bin/bash 连接到Pod 第二步:tcpdump是否已经安装 运行tcpdump --version以确定是否安装了 TCPdump 如果没有,运行 apt-get update && apt-get install tcpdump 安装 第三步:抓取文件并保存网络包到本地目录中 运行tcpdump -s 0 -vvv -w /capture.cap以开始捕获 Pod 上的 TCP 数据包 如果以上步骤遇见”tcpdump: /capture.cap: Permission denied“问题,可以把 /capture的路径修改到/var/tmp目录下。 数据包捕获完成后,退出 Pod shell 会话 运行 kubectl cp <pod name>:/<your path>/capture.cap capture.cap 将网络数据包保存到本地 如果在cp时候,遇见错误“tar: removing leading '/' from member names,可以使用 kubectl exec <Pod Name> -- cat /var/tmp/capture.cap > mylocalcapture.cap 来实现 附录:完整的命令 kubectl get pods kubectl exec <pod name> -it -- /bin/bash tcpdump --version kubectl cp <pod name>:/<your path>/capture.cap capture.cap # Ctrl + C kubectl exec <Pod Name> -- cat /var/tmp/capture.cap > mylocalcapture.cap 附录:动图展示 参考资料 从 AKS 群集上的 Pod 捕获 TCP 数据包:https://learn.microsoft.com/zh-cn/troubleshoot/azure/azure-kubernetes/logs/packet-capture-pod-level