问题描述
根据官方文档(从 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
正在加载评论...