AKS クラスター内の Windows ノードから TCP ダンプをキャプチャする

ネットワークの問題は、Microsoft Azure Kubernetes Service (AKS) クラスターを使用しているときに発生する可能性があります。 これらの問題を調査するために、この記事では、AKS クラスター内の Windows ノードから TCP ダンプをキャプチャし、そのキャプチャをローカル コンピューターにダウンロードする方法について説明します。

前提条件

手順 1: トラブルシューティングするノードを見つける

TCP ダンプをプルするノードを決定するにはどうすればよいですか? 最初に、Kubernetes コマンド ライン クライアント kubectl を使用して、AKS クラスター内のノードの一覧を取得します。 指示に従ってクラスターに接続し、Azure portalまたは Azure CLIkubectl 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 フィードバック コミュニティに製品フィードバックを送信することもできます。