Freigeben über


Problembehandlung bei UpgradeFailed-Fehlern aufgrund von Eviction-Fehlern, die durch PDBs verursacht werden

In diesem Artikel wird erläutert, wie Sie UpgradeFailed-Fehler aufgrund von Eviction-Fehlern identifizieren und beheben, die durch Pod Disruption Budgets (PDBs) verursacht werden, die auftreten, wenn Sie versuchen, einen Azure Kubernetes Service (AKS)-Cluster zu aktualisieren.

Voraussetzungen

Dieser Artikel erfordert Azure CLI Version 2.0.65 oder eine höhere Version. Führen Sie die Ausführung aus az --version, um die Versionsnummer zu finden. Wenn Sie Azure CLI installieren oder aktualisieren müssen, lesen Sie die Installation der Azure CLI.

Ausführlichere Informationen zum Upgradeprozess finden Sie im Abschnitt "Upgrade an AKS Cluster" im Abschnitt "Upgrade an Azure Kubernetes Service (AKS)-Cluster.For more detailed information about the upgrade process, see the "Upgrade an AKS cluster" section in Upgrade an Azure Kubernetes Service (AKS) cluster.

Symptome

Ein AKS-Clusterupgradevorgang schlägt mit der folgenden Fehlermeldung fehl:

Code: UpgradeFailed
Meldung: Fehler beim Entfernen des Knotenknotennamens <> beim Entfernen des Pod-Namens><. Die Eviction ist mit dem Fehler "Zu viele Anforderungen" fehlgeschlagen. Dies wird häufig durch eine restriktive Pod Disruption Budget (PDB)-Richtlinie verursacht. Siehe http://aka.ms/aks/debugdrainfailures. Ursprünglicher Fehler: Fehler beim API-Aufruf von Kubernetes-API-Server.

Ursache

Dieser Fehler kann auftreten, wenn ein Pod durch die Pod Disruption Budget (PDB)-Richtlinie geschützt ist. In dieser Situation widersetzt sich der Pod dem Abfluss.

Führen Sie kubectl get pdb -Azum Testen dieser Situation den Wert "Zulässige Unterbrechung" aus, und überprüfen Sie dann den Wert "Zulässige Unterbrechung" . Der Wert sollte 1 oder größer sein. Weitere Informationen finden Sie unter Plan for availability using pod disruption budgets.

Wenn der Wert "Zulässige Unterbrechung" 0 ist, schlägt der Knotenablauf während des Upgradevorgangs fehl.

Beheben Sie dieses Problem mithilfe einer der folgenden Lösungen.

Lösung 1: Aktivieren der Entwässerung von Pods

  1. Passen Sie den PDB an, um die Pod-Entwässerung zu aktivieren. Im Allgemeinen wird die zulässige Unterbrechung durch den Parameter oder Running pods / Replicas den Min Available / Max unavailable Parameter gesteuert. Sie können den Min Available / Max unavailable Parameter auf PDB-Ebene ändern oder die Anzahl Running pods / Replicas erhöhen, um den Wert "Zulässige Unterbrechung" auf 1 oder höher zu übertragen.
  2. Versuchen Sie es erneut, um den AKS-Cluster auf dieselbe Version zu aktualisieren, auf die Sie zuvor aktualisiert haben. Dieser Prozess löst eine Abstimmung aus.

Lösung 2: Sichern, Löschen und erneutes Bereitstellen der PDB

  1. Erstellen Sie eine Sicherung des PDB kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yaml, und löschen Sie dann den PDB kubectl delete pdb <pdb-name> -n /<pdb-namespace>. Nachdem das Upgrade abgeschlossen ist, können Sie den PDB kubectl apply -f pdb_backup.yamlerneut bereitstellen.
  2. Versuchen Sie es erneut, um den AKS-Cluster auf dieselbe Version zu aktualisieren, auf die Sie zuvor aktualisiert haben. Dieser Prozess löst eine Abstimmung aus.

Lösung 3: Löschen der Pods, die nicht entwässert werden können

  1. Löschen Sie die Pods, die nicht entwässert werden können.

    Notiz

    Wenn die Pods von einer Bereitstellung oder statefulSet erstellt wurden, werden sie von einem ReplicaSet gesteuert. Wenn dies der Fall ist, müssen Sie möglicherweise die Bereitstellung oder StatefulSet löschen. Bevor Sie dies tun, empfehlen wir, eine Sicherung zu erstellen: kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml.

  2. Versuchen Sie es erneut, um den AKS-Cluster auf dieselbe Version zu aktualisieren, auf die Sie zuvor aktualisiert haben. Dieser Prozess löst eine Abstimmung aus.

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.