Microsoft Azure Kubernetes Service (AKS) クラスターで Windows コンテナーが失敗した場合は、Windows コンテナー ダンプ ファイルを調べて根本原因を調査する必要があります。 この記事では、AKS クラスター内の Windows ノードから Windows コンテナー ダンプ ファイルをキャプチャする手順について説明します。 さらに詳しく分析するために、ダンプ ファイルをローカル コンピューターにダウンロードする手順も含まれています。
前提条件
AKS クラスター。 AKS クラスターがない場合は、 Azure CLI を使用して作成するか Azure portal を します。
3/13/2024後に作成された Windows エージェント プール、または AKS Windows イメージ バージョン20240316以降のバージョンにアップグレードされたノード イメージ。 または、WindowsCSEScriptsPackage のバージョンが v0.0.39 以降であるかどうかを確認します。これは Windows ノード上のC:\AzureData\CustomDataSetupScript.logに配置できます。
手順 1: 注釈メタデータをデプロイに追加する
コンテナーにホスト フォルダーをマウントし、注釈メタデータを追加して、Windows コンテナーが指定されたフォルダーにダンプ ファイルを格納するように要求します。
metadata:
...
annotations:
"io.microsoft.container.processdumplocation": "C:\\CrashDumps\\{container_id}"
"io.microsoft.wcow.processdumptype": "mini"
"io.microsoft.wcow.processdumpcount": "10"
spec:
...
containers:
- name: containername
image: ...
...
volumeMounts:
- mountPath: C:\CrashDumps
name: local-dumps
volumes:
- name: local-dumps
hostPath:
path: C:\k\containerdumps
type: DirectoryOrCreate
手順 2: 問題を再現する
デプロイを再デプロイし、Windows コンテナーが失敗するまで待ちます。
kubectl describe pod -n [POD-NAMESPACE] [POD-NAME]を使用して、ポッドをホストしている AKS Windows ノードを確認できます。
手順 3: Windows ノードに接続する
AKS クラスター ノードへの接続を確立します。 リモート デスクトップ プロトコル (RDP) 接続で Secure Shell (SSH) キーまたは Windows 管理者パスワードを使用して認証します。 どちらの方法でも、中間接続を作成する必要があります。 これは、現在 AKS Windows ノードに直接接続できないためです。 SSH または RDP を使用してノードに接続する場合でも、AKS ノードのユーザー名を指定する必要があります。 既定では、このユーザー名は azureuser。
SSH キーがある場合は、 Windows ノードへの SSH 接続を作成します。 SSH キーは AKS ノードに保持されません。 SSH キーは、次のいずれかの操作中にクラスターに最初にインストールされたものに戻ります。
- Restart
- バージョンのアップグレード
- ノード イメージのアップグレード
手順 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
ヘルパー ポッドには、3 番目の行に示すように、 node-debugger-aksのプレフィックスがあります。 ポッド名を置き換え、次の Secure Copy (scp) コマンドを実行して、コンテナーが失敗したときに保存されるダンプ ファイル (.dmp) を取得します。
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:/C:/k/containerdumps/{container_id}/{application}.dmp .
C:\k\containerdumps フォルダーを一覧表示して、Windows ノードへの接続後にダンプ ファイルの完全なパスを見つけることができます。
お問い合わせはこちらから
ご質問がある場合は、 Azure コミュニティサポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。