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 portalを使用して作成します。
- Linux ノードにインストールされている tcpdump コマンド ライン ツール。
注:
Helm チャートを使用して TCP キャプチャを自動化できます。これは、バックグラウンドで DaemonSet として実行できます。 詳細については、 TCP ダンプをキャプチャするためのこのカスタム GitHub ツールを参照するか、次のセクションの手順を使用します。
手順 1: トラブルシューティングするノードを見つける
TCP ダンプをプルするノードを決定するにはどうすればよいですか? 最初に、Kubernetes コマンド ライン クライアント kubectl を使用して、AKS クラスター内のノードの一覧を取得します。 指示に従ってクラスターに接続し、Azure portalまたは Azure CLIをkubectl get nodes --output wide
使用してコマンドを実行します。 次の出力に似たノード リストが表示されます。
$ 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
次に、Advanced Package Tool のパッケージ処理ユーティリティ apt-get を実行して、ポッドに 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: キャプチャをローカルに転送する
パケット キャプチャが完了したら、ローカルでダンプをコピーできるようにヘルパー ポッドを特定します。 次に示すように、2 つ目のコンソールを開き、 を実行 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
ヘルパー ポッドのプレフィックス node-debugger-aks
は、3 行目に示すように です。 ポッド名を置き換え、次の kubectl コマンドを実行します。 これらのコマンドは、Linux ノードのパケット キャプチャを取得します。
kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示