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/agent und 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ührenaz 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.
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:
Überprüfen Sie das Aktivitätsprotokoll , um die Ursache des Fehlers zu identifizieren.
Sie können das Aktivitätsprotokoll mithilfe der Azure-Portal, azure CLI oder Azure PowerShell anzeigen.
Das Aktivitätsprotokoll kann Ihnen den Fehlercode und die Meldung anzeigen, die dem Fehler zugeordnet ist. Weitere Informationen zu bestimmten Fehlern finden Sie in der grundlegenden Problembehandlung häufig auftretender Fehler, die dazu führen, dass ein Cluster-/Knoten-Abschnitt fehlschlägt .
Verwenden Sie das Feature "AKS Diagnostizieren und Lösen von Problemen" , um häufige Probleme zu beheben und zu beheben.
Notiz
Dieses Feature ist nur in der Azure-Portal und azure CLI verfügbar.
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:
Wechseln Sie in der Azure-Portal zur Seite "Ressourcengruppen", und wählen Sie die Ressourcengruppe aus, die Ihren Cluster enthält.
Wählen Sie auf der Seite "Übersicht" den Clusternamen aus der Ressourcenliste aus.
Wählen Sie auf der Clusterseite im linken Menü "Aktivitätsprotokoll " aus.
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.
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.
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:
Installieren Sie Azure CLI auf Ihrem Computer, und melden Sie sich mit Ihrem Azure-Konto an.
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.Auflisten der Ressourcen in der Ressourcengruppe mithilfe des Befehls mit dem
az resource list
--resource-group
Parameter und Suchen des Namens des Clusters.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--status
Parameter , ,--start-time
,--caller
--end-time
--filter
um Ereignisse nach verschiedenen Kriterien zu filtern. Beispielsweise können Sie nur--status Failed
fehlgeschlagene Ereignisse anzeigen.Zeigen Sie die Details eines bestimmten Ereignisses mithilfe des
az monitor activity-log show
Befehls mit den--resource-group
Parametern--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.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.
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.
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:
- Überprüfen Sie mit dem Befehl
az aks nodepool show
den Status des Knotenpools. Wenn der Bereitstellungsstatus lautetFailed
, wird die Fehlermeldung und der Code in der Ausgabe angezeigt. - Ü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 lautetFailed
, wird die Fehlermeldung und der Code in der Ausgabe angezeigt. - Überprüfen Sie den Status der einzelnen VM im Knotenpool mithilfe des Befehls oder
az vm list
desaz vmss list-instances
Befehls. Wenn sich ein virtueller Computer in einemFailed
oderUnhealthy
einem Zustand befindet, können Sie die Fehlermeldung und den Code in der Ausgabe sehen. - Ü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.
- Ü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. - Überprüfen Sie die Richtlinien- und Rollenzuweisungen des Knotenpools. Sie können die Richtliniendefinitionen
az role
, Zuordnungen, Compliance und Ausnahmen mithilfe deraz policy
Azure-Portal überprüfen. Sie können auch die Rollenzuweisungen und Berechtigungen des Knotenpools mithilfe desaz role assignment
Befehls oder der Azure-Portal überprüfen. - Ü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.
-
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.