從 AKS 叢集中的 Linux 節點擷取 TCP 傾印
當您使用 Microsoft Azure Kubernetes Service (AKS) 叢集時,可能會發生網路問題。 為了協助調查這些問題,本文說明如何從 AKS 叢集中的 Linux 節點擷取 TCP 傾印,然後將擷取下載到本機電腦。
必要條件
- Kubernetes kubectl 工具。 若要使用 Azure CLI 安裝 kubectl,請執行 az aks install-cli 命令。
- AKS 叢集。 如果您沒有 AKS 叢集,請使用 Azure CLI 或透過 Azure 入口網站 建立一個叢集。
- 安裝在Linux節點上的 tcpdump 命令行工具。
注意事項
您可以透過 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 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應