Freigeben über


Erfassen einer Windows-Containerabbilddatei von einem Windows-Knoten in einem AKS-Cluster

Wenn ein Windows-Container in einem AKS-Cluster (Microsoft Azure Kubernetes Service) fehlschlägt, müssen Sie möglicherweise die Windows-Containerabbilddatei untersuchen, um die Grundursache zu untersuchen. Dieser Artikel enthält Schritte zum Erfassen einer Windows-Containerabbilddatei von einem Windows-Knoten in einem AKS-Cluster. Es enthält auch Anweisungen zum Herunterladen der Speicherabbilddatei auf Ihren lokalen Computer zur weiteren Analyse.

Voraussetzungen

  • Ein AKS-Cluster. Wenn Sie nicht über einen AKS-Cluster verfügen, erstellen Sie einen Cluster mithilfe der Azure CLI oder über den Azure-Portal.

  • Windows-Agent-Pools, die nach 3/13/2024 oder einem Knotenimage erstellt werden, das auf eine AKS-Windows-Imageversion 20240316 oder eine höhere Version aktualisiert wurde. Alternativ können Sie überprüfen, ob die WindowsCSEScriptsPackage-Version v0.0.39 oder höher ist, die sich in C:\AzureData\CustomDataSetupScript.log auf den Windows-Knoten befinden kann.

Schritt 1: Hinzufügen von Anmerkungsmetadaten zu Ihrer Bereitstellung

Binden Sie einen Hostordner in den Container ein, und fügen Sie die Anmerkungsmetadaten hinzu, um anzufordern, dass der Windows-Container die Speicherabbilddatei in einem bestimmten Ordner speichert:

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

Schritt 2: Reproduzieren des Problems

Stellen Sie Ihre Bereitstellung erneut bereit, und warten Sie, bis der Windows-Container fehlschlägt. Sie können verwenden kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] , um zu erfahren, auf welchem AKS-Windows-Knoten der Pod gehostet wird.

Schritt 3: Herstellen einer Verbindung mit dem Windows-Knoten

Stellen Sie eine Verbindung mit dem AKS-Clusterknoten her. Sie authentifizieren sich entweder mithilfe eines SSH-Schlüssels (Secure Shell) oder des Windows-Administratorkennworts in einer RDP-Verbindung (Remotedesktopprotokoll). Für beide Methoden müssen Sie eine Zwischenverbindung erstellen. Dies liegt daran, dass Sie derzeit keine direkte Verbindung mit dem AKS-Windows-Knoten herstellen können. Unabhängig davon, ob Sie über SSH oder RDP eine Verbindung mit einem Knoten herstellen, müssen Sie den Benutzernamen für die AKS-Knoten angeben. Standardmäßig lautet azureuserdieser Benutzername .

Wenn Sie über einen SSH-Schlüssel verfügen, erstellen Sie eine SSH-Verbindung mit dem Windows-Knoten. Der SSH-Schlüssel bleibt auf Ihren AKS-Knoten nicht erhalten. Der SSH-Schlüssel wird während einer der folgenden Aktionen auf das zurückgesetzt, was ursprünglich im Cluster installiert wurde:

  • Neustart
  • Versionsupgrade
  • Upgrade des Knotenimages

Schritt 4: Lokales Übertragen der Sicherungsdatei

Nachdem der Container fehlschlägt, identifizieren Sie den Hilfspod, damit Sie die Speicherabbilddatei lokal kopieren können. Öffnen Sie eine zweite Konsole, und rufen Sie dann eine Liste der Pods ab, indem Sie den kubectl get pods Befehl wie folgt ausführen:

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

Der Hilfspod hat das Präfix , node-debugger-akswie in der dritten Zeile gezeigt. Ersetzen Sie den Podnamen, und führen Sie dann die folgenden scp-Befehle (Secure Copy) aus, um die Sicherungsdateien (.dmp) abzurufen, die gespeichert werden, wenn der Container ausfällt:

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 .

Sie können den C:\k\containerdumps Ordner auflisten, um den vollständigen Pfad der Sicherungsdateien zu finden, nachdem die Verbindung mit dem Windows-Knoten hergestellt wurde.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.