共用方式為


從 AKS 叢集中的 Windows 節點擷取 Windows 容器傾印檔案

如果 Microsoft Azure Kubernetes Service (AKS) 叢集上的 Windows 容器失敗,您可能必須檢查 Windows 容器傾印檔案,以調查根本原因。 本文提供從 AKS 叢集中的 Windows 節點擷取 Windows 容器傾印檔案的步驟。 它也包含將傾印檔案下載到本機計算機以供進一步分析的指示。

必要條件

  • AKS 叢集。 如果您沒有 AKS 叢集,請使用 Azure CLI透過 Azure 入口網站 建立一個叢集。

  • 在 升級至 AKS Windows 映射版本或更新版本20240316的節點映射之後3/13/2024建立的 Windows 代理程式集區。 或者,確認 WindowsCSEScriptsPackage 版本是 v0.0.39 或更新版本,可位於 C:\AzureData\CustomDataSetupScript.log Windows 節點上。

步驟 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] 來了解裝載 Pod 的 AKS Windows 節點。

步驟 3:連線到 Windows 節點

建立與 AKS 叢集節點的連線。 您可以使用安全殼層 (SSH) 金鑰或遠端桌面通訊協定中的 Windows 系統管理員密碼, (RDP) 連線進行驗證。 這兩種方法都需要您建立中繼連線。 這是因為您目前無法直接連線到 AKS Windows 節點。 無論您是透過 SSH 或 RDP 連線到節點,都必須指定 AKS 節點的使用者名稱。 根據預設,此使用者名稱稱為 azureuser

如果您有 SSH 金鑰, 請建立與 Windows 節點的 SSH 連線。 SSH 金鑰不會儲存在您的 AKS 節點上。 在下列任何動作期間,SSH 金鑰會還原為最初安裝在叢集上的密鑰:

  • 重新啟動
  • 版本升級
  • 節點映射升級

步驟 4:在本機傳輸傾印檔案

容器失敗之後,請識別協助程式Pod,讓您可以在本機複製傾印檔案。 開啟第二個主控台,然後執行 命令以 kubectl get pods 取得 Pod 清單,如下所示:

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

協助程式 Pod 的前置詞為 node-debugger-aks,如第三列所示。 取代 Pod 名稱,然後執行下列安全複製 (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 .

在連線到 Windows 節點之後,您可以列出 C:\k\containerdumps 資料夾來尋找傾印檔案的完整路徑。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群