Freigeben über


Behandeln von Problemen mit Azure Kubernetes-Dienstclustern oder -Knoten in einem fehlerhaften Zustand

In diesem Artikel wird erläutert, wie Sie probleme mit einem Microsoft Azure Kubernetes Service (AKS)-Cluster oder -Knoten beheben, der in einen fehlerhaften Zustand wechselt.

Häufige Ursachen

Dies sind die häufigsten Ursachen für einen fehlerhaften Cluster oder Knotenpool:

Ursache Verweis
Fehler bei der Bereitstellung der vm-Erweiterungserweiterung (Custom Script Extension, CSE) Problembehandlung bei Fehlern vom Typ „Knoten nicht bereit“, die durch CSE-Fehler verursacht werden
Wichtige Azure-Ressourcen nicht verfügbar
VM-Zuordnungsfehler aufgrund der fehlenden Zonal-/Regionalkapazität
Fehler bei der VM-Zuweisung aufgrund eines überschrittenen Kernkontingents Fehler "Quotaexceeded"
Kundeneinschränkungen
Workloadprobleme

Grundlegende Problembehandlung bei häufig auftretenden Fehlern, die dazu führen, dass ein Cluster/Knoten fehlschlägt

In der folgenden Tabelle werden einige häufige Fehler beschrieben, die dazu führen können, dass ein Cluster oder Knoten einen fehlerhaften Zustand eingibt, deren Beschreibungen und grundlegende Methoden zur Problembehandlung, um diese Fehler zu beheben.

Error Beschreibung Problembehandlungsmethode
OutboundConnFailVMExtensionError Dieser Fehler gibt an, dass die VM-Erweiterung aufgrund fehlender ausgehender Konnektivität nicht installiert oder aktualisiert werden kann. Überprüfen Sie die Regeln und Firewalleinstellungen der VM- oder VM-Skalierungsgruppe (Network Security Group, NSG). Stellen Sie sicher, dass der VM- oder VM-Skalierungssatz auf diese Endpunkte zugreifen kann: https://aka.ms/aks/outbound, , https://aka.ms/aks/ssh, , https://aka.ms/aks/agentund https://aka.ms/aks/containerinsights.
Entwässerungsfehler Dieser Fehler weist darauf hin, dass der Knoten vor dem Upgradevorgang nicht entladen werden kann. Überprüfen Sie den Podstatus und die Ereignisse auf dem Knoten mithilfe der Kubectl-Befehle: kubectl get pods --all-namespaces -o wide und kubectl describe pod <pod-name> -n <namespace>. Suchen Sie nach pods, die in einem beendeten oder unbekannten Zustand oder mit Fehlern oder Warnungen in den Ereignissen hängen bleiben. Möglicherweise müssen Sie das Löschen der Pods erzwingen oder den Kubelet-Dienst auf dem Knoten neu starten.
SubscriptionNotRegistered-Fehler Dieser Fehler gibt an, dass das Abonnement nicht für die Verwendung des AKS-Ressourcenanbieters registriert ist. Registrieren Sie das Abonnement mit dem az provider register --namespace Microsoft.ContainerService Befehl.
RequestDisallowedByPolicy-Fehler Dieser Fehler gibt an, dass der Vorgang durch eine Richtlinie blockiert wird, die auf das Abonnement oder die Ressourcengruppe angewendet wird. Überprüfen Sie die Richtliniendetails und Richtlinienzuweisungsbereiche. Um den Vorgang zuzulassen, müssen Sie die Richtlinie möglicherweise ändern oder ausschließen.
QuotaExceeded-Fehler Dieser Fehler gibt an, dass der Vorgang den Kontingentgrenzwert für einen Ressourcentyp oder eine Region überschreitet. Überprüfen Sie die aktuelle Kontingentauslastung und das Kontingentlimit für den Ressourcentyp oder die Region mithilfe der Azure-Portal, azure CLI oder Azure PowerShell. Möglicherweise müssen Sie einige nicht verwendete Ressourcen löschen oder eine Kontingenterhöhung anfordern.
PublicIPCountLimitReached-Fehler Dieser Fehler gibt an, dass der Vorgang die maximale Anzahl von öffentlichen IP-Adressen erreicht, die in einem Abonnement oder einer Region erstellt werden können. Überprüfen Sie die aktuelle Nutzung öffentlicher IP-Adressen und den Grenzwert für das Abonnement oder die Region, indem Sie die Azure-Portal, Azure CLI oder Azure PowerShell verwenden. Möglicherweise müssen Sie einige nicht verwendete öffentliche IP-Adressen löschen oder eine Erhöhung des Grenzwerts für öffentliche IP-Adressen anfordern.
OverconstrainedAllocationRequest-Fehler Dieser Fehler gibt an, dass der Vorgang die angeforderte VM-Größe in einer Region nicht zuweist. Überprüfen Sie die Verfügbarkeit der VM-Größe in der Region mithilfe der Azure-Portal, azure CLI oder Azure PowerShell. Möglicherweise müssen Sie eine andere VM-Größe oder eine andere Region auswählen.
ReadOnlyDisabledSubscription-Fehler Dieser Fehler gibt an, dass das Abonnement derzeit deaktiviert ist und schreibgeschützt festgelegt ist. Überprüfen und anpassen Sie die Abonnementberechtigungen, da das Abonnement aufgrund von Abrechnungsproblemen, abgelaufenen Krediten oder Richtlinienverletzungen möglicherweise ausgesetzt wurde.

Grundlegende Problembehandlung anderer möglicher Probleme, die dazu führen, dass ein Cluster/Knoten fehlschlägt

In dieser Tabelle werden andere mögliche Probleme beschrieben, die dazu führen können, dass ein Cluster oder Knoten einen fehlerhaften Zustand, seine Beschreibungen und Lösungen zur Behebung dieser Probleme eingibt.

Problem Beschreibung Lösung
Die Subnetzgröße ist zu klein. Der Vorgang kann den Cluster nicht erstellen oder aktualisieren, da das Subnetz nicht genügend Speicherplatz für die erforderliche Anzahl von Knoten aufweist. Löschen Sie den Knotenpool, und erstellen Sie mithilfe der Azure-Portal, azure CLI oder Azure PowerShell eine neue mit einer größeren Subnetzgröße.
Das virtuelle Netzwerk ist blockiert. Der Vorgang kann nicht mit dem Cluster-API-Server oder der Kubernetes-Steuerungsebene kommunizieren, da die Firewall oder eine benutzerdefinierte DNS-Einstellung (Domain Name System) die ausgehenden Verbindungen von den Knoten blockiert. Zulassen des Datenverkehrs des Knotens in der Firewall und Einrichten der DNS-Auflösung für Azure mithilfe der Azure-Portal, Azure CLI oder Azure PowerShell.
PDB-Probleme Der Vorgang kann den Cluster nicht aktualisieren, da ein PDB das Entfernen eines oder mehrerer Pods beendet hat. Ein PDB ist eine Ressource, die einschränkt, wie viele Pods während eines bestimmten Zeitraums freiwillig beendet werden können. Entfernen Sie den PDB vorübergehend, versöhnen Sie den Cluster, und fügen Sie dann den PDB erneut mit dem Befehlszeilentool kubectl hinzu.
Infrastrukturprobleme Der Vorgang kann den Cluster aufgrund eines internen Problems mit dem Azure Resource Manager (ARM)-Dienst, der Ressourcen in Azure verwaltet, nicht aktualisieren. Führen Sie eine Agentpools-Abstimmung für jeden Knotenpool und eine Abstimmung für den verwalteten Cluster mithilfe der Azure CLI oder Azure PowerShell durch.
API-Serverfehler Der Vorgang kann den Cluster-API-Server oder die Kubernetes-Steuerungsebene aufgrund eines Ausfalls oder eines Fehlers nicht erreichen. Melden Sie es dem AKS-Supportteam, und stellen Sie die relevanten Protokolle und Diagnoseinformationen bereit. Sie können die Protokolle und Diagnoseinformationen mithilfe der Azure-Portal, azure CLI oder Azure PowerShell abrufen.

Notiz

  • Der in der vorherigen Tabelle erwähnte Vorgang bezieht sich auf alle Aktualisierungsvorgänge (PUT), die von der Kundenseite ausgelöst werden.
  • In Kubernetes gibt es eine Komponente innerhalb eines Controllers. Sie stellt den tatsächlichen Zustand der Welt sicher, einschließlich des Clusterzustands und potenziell externer Zustände wie das Ausführen von Containern für Kubelet oder Lastenausgleichsgeräte für einen Cloudanbieter. Er richtet sich an den gewünschten Zustand, der in einem Objekt angegeben ist. Dieser Ausrichtungsprozess ist eine schlüsselfunktion des Controllers. Bei AKS stellt diese Komponente sicher, dass der Status des AKS-Clusters mit der gewünschten Konfiguration übereinstimmt. Führen Sie zum manuellen Auslösen dieses Vorgangs aus az resource update --ids <AKS cluster id>. Sie können die AKS-Cluster-ID abrufen, indem Sie diese ausführen az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Wenn es Unterschiede zwischen den tatsächlichen und den gewünschten Zuständen gibt, ergreifen Sie die erforderlichen Maßnahmen, um diese Abweichungen zu korrigieren.

Überprüfung des Bereitstellungsstatus

Um den Clusterstatus zu überprüfen, wählen Sie die Überprüfung des Bereitstellungsstatus aus. Anschließend wird der Bereitstellungsstatus des Clusters und des Agentpools angezeigt.

Screenshot der Option

Szenario 1: Der Cluster befindet sich in einem fehlgeschlagenen Zustand.

Um dieses Problem zu beheben, rufen Sie den Vorgang ab, der den Fehler verursacht, und ermitteln Sie den Fehler. Hier sind zwei häufige Vorgangsfehler, die zu einem fehlerhaften Cluster führen können:

  • Clustererstellung fehlgeschlagen
  • Clusterupgrade fehlgeschlagen

Wenn sich ein kürzlich erstellter oder aktualisierter Cluster in einem fehlerhaften Zustand befindet, verwenden Sie die folgenden Methoden, um den Fehler zu beheben:

Anzeigen des Aktivitätsprotokolls für einen fehlgeschlagenen Cluster mithilfe des Azure-Portal

Führen Sie die folgenden Schritte aus, um die Aktivitätsprotokolle für einen fehlgeschlagenen Cluster aus dem Azure-Portal anzuzeigen:

  1. Wechseln Sie in der Azure-Portal zur Seite "Ressourcengruppen", und wählen Sie die Ressourcengruppe aus, die Ihren Cluster enthält.

  2. Wählen Sie auf der Seite "Übersicht" den Clusternamen aus der Ressourcenliste aus.

  3. Wählen Sie auf der Clusterseite im linken Menü "Aktivitätsprotokoll " aus.

  4. Auf der Seite "Aktivitätsprotokoll " können Sie Ereignisse nach Status, Timespan, Event initiated by, and Event category filtern. Sie können beispielsweise in der Dropdownliste "Status" die Option "Fehlgeschlagen" auswählen, um nur fehlgeschlagene Ereignisse anzuzeigen.

    Screenshot, der zeigt, wie Ereignisse auf der Seite

  5. Um die Details eines Ereignisses zu überprüfen, wählen Sie den Ereignisnamen aus der Liste aus. Ein neuer Bereich wird mit den Ereigniszusammenfassungs-, Eigenschaften- und JSON-Daten geöffnet. Sie können die JSON-Daten auch als Datei herunterladen.

  6. Um den Fehlercode und die dem Ereignis zugeordnete Meldung zu überprüfen, scrollen Sie nach unten zum Abschnitt "Status " in der Ereigniszusammenfassung. Sie können auch die Fehlerinformationen in den Eigenschaften und JSON-Datenabschnitten finden.

Anzeigen des Aktivitätsprotokolls für einen fehlgeschlagenen Cluster mithilfe der Azure CLI

Wenn Sie azure CLI verwenden möchten, um das Aktivitätsprotokoll für einen fehlgeschlagenen Cluster anzuzeigen, führen Sie die folgenden Schritte aus:

  1. Installieren Sie Azure CLI auf Ihrem Computer, und melden Sie sich mit Ihrem Azure-Konto an.

  2. Listen Sie die Ressourcengruppen in Ihrem Abonnement mithilfe des az group list Befehls auf, und suchen Sie den Namen der Ressourcengruppe, die Ihren Cluster enthält.

  3. Auflisten der Ressourcen in der Ressourcengruppe mithilfe des Befehls mit dem az resource list --resource-group Parameter und Suchen des Namens des Clusters.

  4. Auflisten des Aktivitätsprotokolls des Clusters mit dem az monitor activity-log list Befehl und --resource den --resource-group Parametern. Sie können auch die --statusParameter , , --start-time, --caller--end-time--filter um Ereignisse nach verschiedenen Kriterien zu filtern. Beispielsweise können Sie nur --status Failed fehlgeschlagene Ereignisse anzeigen.

  5. Zeigen Sie die Details eines bestimmten Ereignisses mithilfe des az monitor activity-log show Befehls mit den --resource-groupParametern --resource, und --event-id Sie finden die Ereignis-ID aus der Ausgabe des vorherigen Befehls. Die Ausgabe enthält die Ereigniszusammenfassung, Eigenschaften und JSON-Daten. Sie können den --output Parameter auch verwenden, um das Ausgabeformat zu ändern.

  6. Um den Fehlercode und die dem Ereignis zugeordnete Meldung anzuzeigen, suchen Sie in der Befehlsausgabe nach dem statusMessage Feld. Sie können auch die Fehlerinformationen in den Eigenschaften und JSON-Datenabschnitten finden.

    Screenshot, der JSON-Daten zeigt.

Verwenden des Features "AKS Diagnose and Solve Problems" für einen fehlgeschlagenen Cluster

Navigieren Sie in der Azure-Portal zu Ihrer AKS-Clusterressource, und wählen Sie im linken Menü "Diagnostizieren und Lösen von Problemen" aus. Es wird eine Liste der Kategorien und Szenarien angezeigt, die Sie auswählen können, um Diagnoseprüfungen auszuführen und empfohlene Lösungen zu erhalten.

Verwenden Sie in der Azure CLI den az aks collect Befehl mit den --name Parametern, --resource-group um Diagnosedaten von Ihren Clusterknoten zu sammeln. Sie können auch die --storage-account Parameter verwenden, --sas-token um ein Azure Storage-Konto anzugeben, in das die Daten hochgeladen werden. Die Ausgabe enthält einen Link zum Blatt "Diagnose" und "Probleme lösen", auf dem Sie die Ergebnisse und vorgeschlagenen Aktionen anzeigen können.

Im Blatt "Diagnose und Lösung von Problemen" können Sie "Clusterprobleme" als Kategorie auswählen. Wenn Probleme erkannt werden, wird eine Liste möglicher Lösungen angezeigt, denen Sie folgen können, um sie zu beheben.

Screenshot, der mögliche Lösungen im Portal

Szenario 2: Knoten befindet sich in einem fehlgeschlagenen Zustand

In seltenen Fällen kann ein Azure Disk-Ablösevorgang teilweise fehlschlagen, wodurch der Knoten-VM in einem fehlerhaften Zustand verbleibt.

Um dieses Problem zu beheben, aktualisieren Sie den VM-Status mithilfe einer der folgenden Methoden manuell:

  • Führen Sie für einen Cluster, der auf einem Verfügbarkeitssatz basiert, den folgenden Az VM-Updatebefehl aus:

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • Führen Sie für einen Cluster, der auf einem VM-Skalierungssatz basiert, den folgenden Befehl "az vmss update-instances" aus:

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

Szenario 3: Der Knotenpool befindet sich in einem fehlerhaften Zustand.

Dieses Problem kann auftreten, wenn der VM-Skalierungssatz oder -verfügbarkeitssatz, der den Knotenpool zurückgibt, während der Bereitstellung, Skalierung oder Aktualisierung einen Fehler auftritt. Dieses Problem kann auf unzureichende Kapazität, Kontingentbeschränkungen, Netzwerkprobleme, Richtlinienverletzungen, Ressourcensperren oder andere Faktoren zurückzuführen sein, die verhindern, dass der virtuelle Computer zugewiesen oder ordnungsgemäß konfiguriert wird.

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Überprüfen Sie mit dem Befehl az aks nodepool show den Status des Knotenpools. Wenn der Bereitstellungsstatus lautet Failed, wird die Fehlermeldung und der Code in der Ausgabe angezeigt.
  2. Überprüfen Sie den Status des VM-Skalierungssatzes oder der Verfügbarkeitsgruppe mithilfe des Befehls oder az vm availability-set show Befehlsaz vmss show. Wenn der Bereitstellungsstatus lautet Failed, wird die Fehlermeldung und der Code in der Ausgabe angezeigt.
  3. Überprüfen Sie den Status der einzelnen VM im Knotenpool mithilfe des Befehls oder az vm list des az vmss list-instances Befehls. Wenn sich ein virtueller Computer in einem Failed oder Unhealthy einem Zustand befindet, können Sie die Fehlermeldung und den Code in der Ausgabe sehen.
  4. Überprüfen Sie das Aktivitätsprotokoll und die Diagnoseeinstellung des VM-Skalierungssatzes oder der Verfügbarkeit, um festzustellen, ob Ereignisse oder Warnungen, die die Ursache des Fehlers angeben. Sie können die Azure-Portal-, Azure CLI- oder Azure Monitor-API verwenden, um auf die Aktivitätsprotokoll- und Diagnoseeinstellung zuzugreifen.
  5. Überprüfen Sie das Kontingent und die Kapazität der Region und des Abonnements, in dem der Knotenpool bereitgestellt wird. Sie können den az vm list-usage Befehl oder die Azure-Portal verwenden, um das Kontingent und die Kapazität zu überprüfen. Wenn das Kontingent oder die Kapazitätsgrenze erreicht ist, können Sie eine Erhöhung anfordern oder einige nicht verwendete Ressourcen löschen.
  6. Überprüfen Sie die Richtlinien- und Rollenzuweisungen des Knotenpools. Sie können die Richtliniendefinitionenaz role, Zuordnungen, Compliance und Ausnahmen mithilfe der az policy Azure-Portal überprüfen. Sie können auch die Rollenzuweisungen und Berechtigungen des Knotenpools mithilfe des az role assignment Befehls oder der Azure-Portal überprüfen.
  7. Überprüfen Sie die Ressourcensperren des Knotenpools. Sie können den az lock Befehl oder die Azure-Portal verwenden, um die Sperrebene, den Bereich und die Notizen zu überprüfen. Sie können die Sperre bei Bedarf auch löschen oder aktualisieren.

Andere Protokollierungs- und Diagnosetools

Wenn das Problem mit den vorherigen Problembehandlungsmethoden nicht behoben wird, können Sie die folgenden Protokollierungs- und Diagnosetools verwenden, um weitere Informationen zu sammeln und die Ursache zu identifizieren:

  • Azure Monitor für Container:

    Dieser Dienst sammelt und analysiert Metriken und Protokolle von AKS-Clustern und den Knoten. Azure Monitor für Container kann Cluster- und Knotenintegrität, Leistung und Verfügbarkeit überwachen. Sie können es auch verwenden, um Containerprotokolle, Kubelet-Protokolle und Knotenstartdiagnoseprotokolle anzuzeigen.

  • AKS Periscope

    Dieses Tool sammelt Knoten- und Podprotokolle, Netzwerkinformationen und Clusterkonfiguration aus einem AKS-Cluster und lädt sie in ein Azure-Speicherkonto hoch. Mit diesem Tool können Sie häufig auftretende Clusterprobleme wie DNS-Auflösung, Netzwerkkonnektivität und Knotenstatus beheben. Sie können sie auch verwenden, um eine Supportanfrage mit den gesammelten Protokollen zu generieren.

  • AKS-Diagnose

    Dieses Tool führt eine Reihe von Prüfungen auf AKS-Clustern und den Knoten aus und stellt Empfehlungen und Korrekturschritte für häufige Probleme bereit. Dieses Tool kann Ihnen bei der Behandlung von Problemen im Zusammenhang mit der Clustererstellung, dem Upgrade, der Skalierung, dem Netzwerk, dem Speicher und der Sicherheit helfen. Sie können sie auch verwenden, um eine Supportanfrage mit den angefügten Diagnoseergebnissen zu generieren.

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.