從 AKS 叢集上的 Pod 擷取 TCP 封包

本文討論如何在 Azure Kubernetes Service (AKS) 叢集的 Pod 上擷取 TCP 流量,並將擷取下載到本機電腦。

前提

您必須執行 Azure CLI 2.0.59 版或更新版本。

執行 az --version 以驗證版本。 若要安裝最新版的 Azure CLI,請參閱 安裝 Azure CLI

識別Pod並安裝TCPdump

  1. 識別您想要從中擷取 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 清單。

  2. 線上到您在上一個步驟中識別的 Pod。 下列命令使用 「azure-vote-front-848767080-tf34m」 作為 Pod 名稱。 將它們取代為正確的 Pod 名稱。 如果 Pod 不在預設命名空間中,您必須將 參數新 --namespace 增至 kubectl exec 命令。

    kubectl exec azure-vote-front-848767080-tf34m -it -- /bin/bash
    
  3. 線上到 Pod 之後,請執行 tcpdump --version 以判斷是否已安裝 TCPdump。 如果您收到「找不到命令」訊息,請執行下列命令以在 Pod 中安裝 TCPdump:

    apt-get update && apt-get install tcpdump
    

    如果您的 Pod 使用 Alpine Linux,請執行下列命令來安裝 TCPdump:

     apk add tcpdump
    

擷取 TCP 封包,並將其儲存至本機目錄

  1. 執行 tcpdump -s 0 -vvv -w /capture.cap 以開始擷取 Pod 上的 TCP 封包。

  2. 封包擷取完成之後,請結束您的Pod殼層會話。

  3. 執行下列命令,將封包儲存至目前的目錄:

    kubectl cp azure-vote-front-848767080-tf34m:/capture.cap capture.cap
    

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群