從 AKS 叢集中的 Linux 節點擷取 TCP 傾印

當您使用 Microsoft Azure Kubernetes Service (AKS) 叢集時,可能會發生網路問題。 為了協助調查這些問題,本文說明如何從 AKS 叢集中的 Linux 節點擷取 TCP 傾印,然後將擷取下載到本機電腦。

必要條件

注意事項

您可以透過 Helm 圖表將 TCP 擷取自動化,該圖表可在背景中以 DaemonSet 執行。 如需詳細資訊,請參閱此 自定義 GitHub 工具以擷取 TCP 傾印,或使用下列各節中的步驟。

步驟 1:尋找要進行疑難解答的節點

如何判斷要從哪個節點提取 TCP 傾印? 您會先使用 Kubernetes 命令行用戶端 kubectl 取得 AKS 叢集中的節點清單。 請依照指示連線到叢集,並kubectl get nodes --output wide使用 Azure 入口網站Azure CLI 執行命令。 會出現類似下列輸出的節點清單:

$ kubectl get nodes --output wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
aks-agentpool-34796016-vmss000000   Ready    agent   45h   v1.20.9   10.240.1.81    <none>        Ubuntu 18.04.6 LTS               5.4.0-1062-azure   containerd://1.4.9+azure
aks-agentpool-34796016-vmss000002   Ready    agent   45h   v1.20.9   10.240.2.47    <none>        Ubuntu 18.04.6 LTS               5.4.0-1062-azure   containerd://1.4.9+azure

步驟 2:連線到 Linux 節點

下一個步驟是建立與您想要從中擷取網路追蹤之 AKS 叢集節點的連線。 如需詳細資訊,請 參閱建立Linux節點的互動式殼層連線

步驟 3:確定已安裝 tcpdump

建立與 AKS Linux 節點的連線之後,請執行 ,確認先前已在節 tcpdump --version點上安裝 tcpdump 工具。 如果尚未安裝 tcpdump,則會出現下列錯誤文字:

# tcpdump --version
bash: tcpdump: command not found

然後執行進階封裝工具的套件處理公用程式 apt-get,在您的 Pod 上安裝 tcpdump:

apt-get update && apt-get install tcpdump

如果已安裝 tcpdump,則會出現類似下列文字的內容:

# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1  11 Sep 2018

步驟 4:建立封包擷取

若要擷取傾印,請執行 tcpdump 命令 ,如下所示:

# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6

當追蹤正在執行時,請復寫您的問題多次。 此動作可確保已在 TCP 傾印中擷取問題。 請記下複寫問題時的時間戳。 若要在完成時停止封包擷取,請按 Ctrl+C:

# tcpdump -s 0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C526 packets captured
526 packets received by filter
0 packets dropped by kernel

步驟 5:在本機傳輸擷取

完成封包擷取之後,請識別協助程式Pod,以便在本機複製傾印。 開啟第二個控制台,然後執行 來取得 Pod kubectl get pods清單,如下所示。

$ kubectl get pods
NAME                                                    READY   STATUS    RESTARTS   AGE
azure-vote-back-6c4dd64bdf-m4nk7                        1/1     Running   0          3m29s
azure-vote-front-85b4df594d-jhpzw                       1/1     Running   0          3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2   1/1     Running   0          60s

協助程式 Pod 的前置詞為 node-debugger-aks,如第三列所示。 取代 Pod 名稱,然後執行下列 kubectl 命令。 這些命令會擷取 Linux 節點的封包擷取。

kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。

與我們連絡,以取得說明

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