Share via


Problembehandlung bei Azure Kubernetes Service Clustern oder Knoten in einem fehlerhaften Zustand

In diesem Artikel wird erläutert, wie Sie probleme mit einem Microsoft Azure Kubernetes Service-Cluster (AKS) 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 Referenz
Fehler bei der Bereitstellung der VM-Erweiterung (Custom Script Extension, CSE) Problembehandlung von Knotenfehlern, die durch CSE-Fehler verursacht werden
Wichtige Azure-Ressourcen sind nicht verfügbar
Fehler bei der VM-Zuordnung aufgrund von zonalen/regionalen Kapazitäten
Fehler bei der VM-Zuweisung aufgrund eines überschrittenen Kernkontingents Fehler "Quotaexceededed"
Vom Kunden auferlegte Einschränkungen
Workloadprobleme

Grundlegende Problembehandlung für häufige Fehler, die einen Cluster/Knoten zum Ausfall eines Clusters/Knotens führen

In der folgenden Tabelle sind einige häufige Fehler aufgeführt, die dazu führen können, dass ein Cluster oder Knoten in einen fehlerbehafteten Zustand wechselt, deren Beschreibungen und grundlegende Methoden zur Problembehandlung, um diese Fehler zu beheben.

Fehler 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 für Netzwerksicherheitsgruppen (NSG) und die Firewalleinstellungen des virtuellen Computers oder der VM-Skalierungsgruppe. Stellen Sie sicher, dass die VM oder VM-Skalierungsgruppe auf die folgenden Endpunkte zugreifen kann: https://aka.ms/aks/outbound, https://aka.ms/aks/ssh, https://aka.ms/aks/agentund https://aka.ms/aks/containerinsights.
Fehler beim Ausgleichen Dieser Fehler gibt an, dass der Knoten vor dem Upgradevorgang nicht ausgeglichen werden kann. Überprüfen Sie die Pod-status und -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 mithilfe des az provider register --namespace Microsoft.ContainerService Befehls.
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 das Kontingentlimit für einen Ressourcentyp oder eine Region überschreitet. Überprüfen Sie die aktuelle Kontingentnutzung und das Kontingentlimit für den Ressourcentyp oder die Region mithilfe des Azure-Portal, der 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 öffentlicher IP-Adressen erreicht, die in einem Abonnement oder einer Region erstellt werden können. Überprüfen Sie die aktuelle Nutzung und das Limit für öffentliche IP-Adressen für das Abonnement oder die Region mithilfe des Azure-Portal, der Azure CLI oder Azure PowerShell. 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 zuordnen kann. Überprüfen Sie die Verfügbarkeit der VM-Größe in der Region mithilfe des Azure-Portal, der 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 und auf schreibgeschützt festgelegt ist. Überprüfen und anpassen Sie die Abonnementberechtigungen, da das Abonnement möglicherweise aufgrund von Abrechnungsproblemen, abgelaufenem Guthaben oder Richtlinienverstößen ausgesetzt wurde.

Grundlegende Problembehandlung anderer möglicher Probleme, die einen Cluster/Knoten zum Ausfall eines Clusters/Knotens führen

In dieser Tabelle werden weitere mögliche Probleme beschrieben, die dazu führen können, dass ein Cluster oder Knoten in einen fehlerhaften Zustand wechselt, sowie deren Beschreibungen und Lösungen zum Beheben dieser Probleme.

Problem Beschreibung Lösung
Die Subnetzgröße ist zu klein. Der Vorgang kann den Cluster nicht erstellen oder aktualisieren, da das Subnetz nicht über genügend Speicherplatz für die erforderliche Anzahl von Knoten verfügt. Löschen Sie den Knotenpool, und erstellen Sie einen neuen mit einer größeren Subnetzgröße mithilfe des Azure-Portal, der Azure CLI oder Azure PowerShell.
Das virtuelle Netzwerk ist blockiert. Der Vorgang kann nicht mit dem Cluster-API-Server oder der Kubernetes-Steuerungsebene vergemeinschaften, da die Firewall oder eine benutzerdefinierte DNS-Einstellung (Domain Name System) die ausgehenden Verbindungen von den Knoten blockiert. Lassen Sie den Datenverkehr des Knotens in der Firewall zu, und richten Sie die DNS-Auflösung in Azure mithilfe des Azure-Portal, der Azure CLI oder Azure PowerShell ein.
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 vorübergehend den PDB, stimmen Sie den Cluster ab, und fügen Sie dann den PDB mithilfe des Befehlszeilentools kubectl erneut hinzu.
Infrastrukturprobleme Der Vorgang kann den Cluster aufgrund eines internen Problems mit dem ARM-Dienst (Azure Resource Manager), der Ressourcen in Azure verwaltet, nicht aktualisieren. Führen Sie eine Agentpoolabstimmung 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 geben Sie die relevanten Protokolle und Diagnoseinformationen an. Sie können die Protokolle und Diagnoseinformationen mithilfe des Azure-Portal, der Azure CLI oder Azure PowerShell abrufen.

Hinweis

  • Der in der vorherigen Tabelle erwähnte Vorgang bezieht sich auf jeden Updatevorgang (PUT), der auf Kundenseite ausgelöst wird.
  • In Kubernetes gibt es eine Komponente in einem Controller. Es stellt den tatsächlichen Zustand der Welt sicher, einschließlich des Clusterzustands und potenziell externer Zustände wie ausführende Container für Kubelet oder Lastenausgleichsmodule für einen Cloudanbieter. Es wird am gewünschten Zustand ausgerichtet, der in einem -Objekt angegeben ist. Dieser Ausrichtungsprozess ist eine Schlüsselfunktion des Controllers. Für AKS stellt diese Komponente sicher, dass der Zustand des AKS-Clusters an der gewünschten Konfiguration ausgerichtet ist. Führen az resource update --ids <AKS cluster id>Sie aus, um sie manuell auszulösen. Sie können die AKS-Cluster-ID abrufen, indem Sie ausführen az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Wenn es Unterschiede zwischen dem tatsächlichen und dem gewünschten Zustand gibt, ergreifen Sie die erforderlichen Maßnahmen, um diese Diskrepanzen zu beheben.

Überprüfung des Bereitstellungsstatus

Wählen Sie zum Überprüfen der cluster-status Bereitstellungsstatusüberprüfung aus. Anschließend wird der Bereitstellungsstatus des Clusters und des Agentpools angezeigt.

Screenshot: Option

Szenario 1: Cluster befindet sich in einem fehlerhaften 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 aufgeführt, die zu einem Clusterfehler führen können:

  • Fehler bei der Clustererstellung
  • Fehler beim Clusterupgrade

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 fehlerhaften Cluster mithilfe des Azure-Portal

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

  1. Navigieren Sie im 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, Zeitraum, Ereignis initiiert von und Ereigniskategorie filtern. Beispielsweise können Sie in der Dropdownliste Statusdie Option Fehler auswählen, um nur fehlerhafte Ereignisse anzuzeigen.

    Screenshot: Filtern von Ereignissen auf der Seite

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

  6. Um den Fehlercode und die Meldung zu überprüfen, die dem Ereignis zugeordnet sind, scrollen Sie nach unten zum Abschnitt Status in der Ereigniszusammenfassung. Sie finden die Fehlerinformationen auch in den Abschnitten eigenschaften und JSON-Daten.

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

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

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

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

  3. Listen Sie die Ressourcen in der Ressourcengruppe mithilfe des az resource list Befehls mit dem --resource-group Parameter auf, und suchen Sie den Namen des Clusters.

  4. Listen Sie das Aktivitätsprotokoll des Clusters mithilfe des az monitor activity-log list Befehls mit den --resource-group Parametern und --resource auf. Sie können auch die --statusParameter , --start-time, --end-time, --callerund --filter verwenden, um Ereignisse nach verschiedenen Kriterien zu filtern. Sie können beispielsweise verwenden --status Failed , um nur fehlerhafte Ereignisse anzuzeigen.

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

  6. Um den Fehlercode und die Meldung anzuzeigen, die dem Ereignis zugeordnet sind, suchen Sie in der Befehlsausgabe nach dem statusMessage Feld. Sie finden die Fehlerinformationen auch in den Abschnitten eigenschaften und JSON-Daten.

    Screenshot: JSON-Daten

Verwenden des AKS-Features "Diagnose und Problembehandlung" für einen fehlerhaften Cluster

Navigieren Sie im Azure-Portal zu Ihrer AKS-Clusterressource, und wählen Sie im linken Menü Diagnose und Problembehandlung aus. Es wird eine Liste von 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 und --resource-group , um Diagnosedaten von Ihren Clusterknoten zu sammeln. Sie können auch die --storage-account Parameter und --sas-token verwenden, um ein Azure Storage-Konto anzugeben, in das die Daten hochgeladen werden. Die Ausgabe enthält einen Link zum Blatt Probleme diagnostizieren und lösen , auf dem Sie die Ergebnisse und vorgeschlagenen Aktionen anzeigen können.

Auf dem Blatt Probleme diagnostizieren und lösen können Sie Clusterprobleme als Kategorie auswählen. Wenn Probleme erkannt werden, wird eine Liste möglicher Lösungen angezeigt, die Sie befolgen können, um sie zu beheben.

Screenshot: Mögliche Lösungen im Portal

Szenario 2: Knoten befindet sich in einem fehlerhaften Zustand

In seltenen Fällen kann ein Azure Disk Detach-Vorgang teilweise fehlschlagen, sodass die Knoten-VM in einem fehlerhaften Zustand verbleibt.

Um dieses Problem zu beheben, aktualisieren Sie die VM-status manuell mit einer der folgenden Methoden:

  • Führen Sie für einen Cluster, der auf einer Verfügbarkeitsgruppe basiert, den folgenden Befehl az vm update aus:

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • Führen Sie für einen Cluster, der auf einer VM-Skalierungsgruppe 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: Knotenpool befindet sich in einem fehlerhaften Zustand

Dieses Problem kann auftreten, wenn bei der VM-Skalierungsgruppe oder Verfügbarkeitsgruppe, die den Knotenpool unterstützt, bei der Bereitstellung, Skalierung oder Aktualisierung ein Fehler auftritt. Dieses Problem kann auf unzureichende Kapazität, Kontingentgrenzwerte, Netzwerkprobleme, Richtlinienverstöße, Ressourcensperren oder andere Faktoren zurückzuführen sein, die verhindern, dass die VM ordnungsgemäß zugeordnet oder konfiguriert wird.

Führen Sie zum Behandeln dieses Problems die folgenden Schritte aus:

  1. Überprüfen Sie die status des Knotenpools mithilfe des az aks nodepool show Befehls. Wenn der Bereitstellungsstatus lautet Failed, werden die Fehlermeldung und der Code in der Ausgabe angezeigt.
  2. Überprüfen Sie die status der VM-Skalierungsgruppe oder Verfügbarkeitsgruppe mithilfe des az vmss show Befehls oder az vm availability-set show . Wenn der Bereitstellungsstatus lautet Failed, werden die Fehlermeldung und der Code in der Ausgabe angezeigt.
  3. Überprüfen Sie die status der einzelnen VM im Knotenpool mit dem az vmss list-instances Befehl oder az vm list . Wenn sich eine Failed VM im Zustand oder Unhealthy befindet, werden die Fehlermeldung und der Code in der Ausgabe angezeigt.
  4. Überprüfen Sie das Aktivitätsprotokoll und die Diagnoseeinstellung der VM-Skalierungsgruppe oder Verfügbarkeitsgruppe, um festzustellen, ob Ereignisse oder Warnungen vorhanden sind, die die Ursache des Fehlers angeben. Sie können die Azure-Portal, die Azure CLI oder die Azure Monitor-API verwenden, um auf das Aktivitätsprotokoll und die Diagnoseeinstellung zuzugreifen.
  5. Überprüfen Sie das Kontingent und die Kapazität der Region und des Abonnements, in der der Knotenpool bereitgestellt wird. Sie können den az vm list-usage Befehl oder den 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 az policy Befehle und oder az role die Azure-Portal verwenden, um die Richtliniendefinitionen, Zuweisungen, Konformität und Ausnahmen zu überprüfen. Sie können die Rollenzuweisungen und Berechtigungen des Knotenpools auch mit dem az role assignment Befehl oder dem Azure-Portal überprüfen.
  7. Überprüfen Sie die Ressourcensperren des Knotenpools. Sie können den az lock Befehl oder den 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 Methoden zur Problembehandlung nicht behoben wird, können Sie die folgenden Protokollierungs- und Diagnosetools verwenden, um weitere Informationen zu sammeln und die Grundursache zu ermitteln:

  • 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 die Integrität, Leistung und Verfügbarkeit von Clustern und Knoten überwachen. Sie können es auch zum Anzeigen von Containerprotokollen, Kubelet-Protokollen und Knotenstartdiagnoseprotokollen verwenden.

  • AKS Periscope

    Dieses Tool sammelt Knoten- und Podprotokolle, Netzwerkinformationen und Clusterkonfigurationen aus einem AKS-Cluster und lädt sie in ein Azure-Speicherkonto hoch. Dieses Tool kann Ihnen helfen, häufige Clusterprobleme wie DNS-Auflösung, Netzwerkkonnektivität und Knoten-status zu beheben. Sie können es auch verwenden, um eine Supportanfrage mit den gesammelten Protokollen zu generieren.

  • AKS-Diagnose

    Dieses Tool führt eine Reihe von Überprüfungen für AKS-Cluster und die Knoten aus und bietet Empfehlungen und Korrekturschritte für häufige Probleme. Dieses Tool kann Ihnen helfen, Probleme im Zusammenhang mit der Erstellung, dem Upgrade, der Skalierung, dem Netzwerk, dem Speicher und der Sicherheit von Clustern zu beheben. Sie können es 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.