從 AKS 叢集上的 Pod 擷取 TCP 封包
本文討論如何在 Azure Kubernetes Service (AKS) 叢集的 Pod 上擷取 TCP 流量,並將擷取下載至本機計算機。
先決條件
您必須執行 Azure CLI 2.0.59 版或更新版本。
執行 az --version
以確認版本。 若要安裝最新版的 Azure CLI,請參閱 安裝 Azure CLI。
識別Pod並安裝TCPdump
識別您想要從中擷取 TCP 封包的 Pod 名稱。 這應該是具有連線問題的Pod。 若要這樣做,請執行
kubectl get pods -A
以查看 AKS 叢集上的 Pod 清單。 以下是輸出的範例:NAME READY STATUS RESTARTS AGE azure-vote-back-2549686872-4d2r5 1/1 Running 0 31m azure-vote-front-848767080-tf34m 1/1 Running 0 31m
如果您知道 Pod 執行中的命名空間,您也可以執行
kubectl get pods -n <namespace>
以取得在該命名空間中執行的 Pod 清單。線上到您在上一個步驟中識別的 Pod。 下列命令使用 「azure-vote-front-848767080-tf34m」 作為 Pod 名稱。 以正確的 Pod 名稱取代它們。 如果 Pod 不在預設命名空間中,您必須將 參數新增
--namespace
至kubectl exec
命令。kubectl exec azure-vote-front-848767080-tf34m -it -- /bin/bash
線上到 Pod 之後,請執行
tcpdump --version
以判斷是否已安裝 TCPdump。 如果您收到「找不到命令」訊息,請執行下列命令以在 Pod 中安裝 TCPdump:apt-get update && apt-get install tcpdump
如果您的 Pod 使用 Alpine Linux,請執行下列命令來安裝 TCPdump:
apk add tcpdump
擷取 TCP 封包,並將其儲存至本機目錄
執行
tcpdump -s 0 -vvv -w /capture.cap
以開始擷取 Pod 上的 TCP 封包。封包擷取完成後,結束 Pod 殼層會話。
執行下列命令,將封包儲存到目前的目錄:
kubectl cp azure-vote-front-848767080-tf34m:/capture.cap capture.cap
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。