【AKS】實驗在Azure K8S上的Pod中抓取 TCP 數據包
問題描述
根據官方文檔(從 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
當在復雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 云中,恰是如此!

浙公網安備 33010602011771號