Freigeben über


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

Wenn ein Windows-Container auf einem Microsoft Azure Kubernetes Service (AKS)-Cluster fehlschlägt, müssen Sie möglicherweise die Windows-Containerabbilddatei untersuchen, um die Ursache zu untersuchen. Dieser Artikel enthält Schritte zum Erfassen einer Windows-Containerabbilddatei aus 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 mit Azure CLI oder über die Azure-Portal.

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

Schritt 1: Hinzufügen von Anmerkungsmetadaten zu Ihrer Bereitstellung

Stellen Sie einen Hostordner im Container bereit, 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 Die Bereitstellung erneut bereit, und warten Sie, bis der Windows-Container fehlschlägt. Sie können lernen kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] , welcher AKS Windows-Knoten den Pod hosten soll.

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 (Remote Desktop Protocol). Beide Methoden erfordern, dass 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 eine Verbindung mit einem Knoten über SSH oder RDP 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 wird auf Ihren AKS-Knoten nicht beibehalten. Der SSH-Schlüssel wird während einer der folgenden Aktionen wieder auf dem Cluster installiert:

  • Neu starten
  • Versionsupgrade
  • Node-Image-Upgrade

Schritt 4: Lokales Übertragen der Dumpdatei

Nachdem der Container fehlschlägt, identifizieren Sie den Hilfs-Pod, damit Sie die Speicherabbilddatei lokal kopieren können. Öffnen Sie eine zweite Konsole, und rufen Sie dann eine Liste von 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 Hilfs pod hat ein Präfix von node-debugger-aks, wie in der dritten Zeile dargestellt. Ersetzen Sie den Podnamen, und führen Sie dann die folgenden Befehle für sichere Kopie (scp) aus, um die Speicherabbilddateien (.dmp) abzurufen, die gespeichert werden, wenn der Container fehlschlägt:

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 Dumpdateien 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.