AKS クラスター内の Windows ノードから TCP ダンプをキャプチャする
ネットワークの問題は、Microsoft Azure Kubernetes Service (AKS) クラスターを使用しているときに発生する可能性があります。 これらの問題を調査するために、この記事では、AKS クラスター内の Windows ノードから TCP ダンプをキャプチャし、そのキャプチャをローカル コンピューターにダウンロードする方法について説明します。
前提条件
- Azure CLI バージョン 2.0.59 以降。 Web ブラウザーで Azure Cloud Shellを開き、Azure CLI コマンドを入力できます。 または、ローカル コンピューターに Azure CLI をインストールまたはアップグレード します。 コンピューターにインストールされているバージョンを見つけるには、 を実行
az --version
します。 - AKS クラスター。 AKS クラスターがない場合は、Azure CLI または Azure portalを使用して作成します。
手順 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
akswin000000 Ready agent 3m8s v1.20.9 10.240.0.4 <none> Windows Server 2019 Datacenter 10.0.17763.2237 docker://20.10.6
akswin000001 Ready agent 3m50s v1.20.9 10.240.0.115 <none> Windows Server 2019 Datacenter 10.0.17763.2237 docker://20.10.6
akswin000002 Ready agent 3m32s v1.20.9 10.240.0.226 <none> Windows Server 2019 Datacenter 10.0.17763.2237 docker://20.10.6
手順 2: Windows ノードに接続する
次の手順では、AKS クラスター ノードへの接続を確立します。 認証には、Secure Shell (SSH) キーを使用するか、リモート デスクトップ プロトコル (RDP) 接続で Windows 管理者パスワードを使用します。 現在、AKS Windows ノードに直接接続できないため、どちらの方法でも中間接続を作成する必要があります。 SSH または RDP を使用してノードに接続する場合でも、AKS ノードのユーザー名を指定する必要があります。 既定では、このユーザー名は azureuser です。
SSH キーがある場合は、 Windows ノードへの SSH 接続を作成します。 SSH キーは AKS ノードに保持されません。 SSH キーは、次の実行中にクラスターに最初にインストールされたものに戻ります。
- 再起動
- バージョンのアップグレード
- ノード イメージのアップグレード
手順 3: パケット キャプチャを作成する
SSH または RDP を介して Windows ノードに接続すると、Windows コマンド プロンプトの形式が表示されます。
azureuser@akswin000000 C:\Users\azureuser>
次に、コマンド プロンプトを開き、トレースをキャプチャするための ネットワーク シェル (netsh) コマンドを入力します (netsh トレースの開始)。 このコマンドは、パケット キャプチャ プロセスを開始します。
netsh trace start capture=yes tracefile=C:\Users\azureuser\AKS_node_name.etl
次のテキストのような出力が表示されます。
Trace configuration:
-------------------------------------------------------------------
Status: Running
Trace File: AKS_node_name.etl
Append: Off
Circular: On
Max Size: 250 MB
Report: Off
トレースの実行中に、問題を何度もレプリケートします。 このアクションにより、TCP ダンプ内で問題が確実にキャプチャされます。 問題をレプリケートするときにタイム スタンプをメモします。 完了したらパケット キャプチャを停止するには、次のように入力 netsh trace stop
します。
azureuser@akswin000000 C:\Users\azureuser>netsh trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\azureuser\AKS_node_name.cab".
File location = C:\Users\azureuser\AKS_node_name.etl
Tracing session was successfully stopped.
手順 4: キャプチャをローカルに転送する
パケット キャプチャが完了したら、ローカルでダンプをコピーできるようにヘルパー ポッドを特定します。 次に示すように、2 つ目のコンソールを開き、 を実行 kubectl get pods
してポッドの一覧を取得します。
kubectl get pods
NAME READY STATUS RESTARTS AGE
azure-vote-back-6c4dd64bdf-m4nk7 1/1 Running 2 3d21h
azure-vote-front-85b4df594d-jhpzw 1/1 Running 2 3d21h
node-debugger-aks-nodepool1-38878740-vmss000000-6ztp6 1/1 Running 0 3m58s
ヘルパー ポッドのプレフィックス node-debugger-aks
は、3 行目に示すように です。 ポッド名を置き換え、次の Secure Copy (scp) コマンドを実行します。 これらのコマンドは、パケット キャプチャ用に生成されるイベント トレース ログ (.etl) とアーカイブ (.cab) ファイルを取得します。
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .
次のような出力が表示されます。
$ scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
Authorized uses only. All activity may be monitored and reported.
AKS_node_name.cab 100% 571KB 984.0KB/s 00:00
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .
Authorized uses only. All activity may be monitored and reported.
AKS_node_name.etl 100% 1536KB 1.3MB/s 00:01
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。