Freigeben über


Problembehandlung bei UpgradeFailed-Fehlern aufgrund von Entfernungsfehlern durch PDBs

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

Voraussetzungen

Für diesen Artikel ist Die Azure CLI-Version 2.0.65 oder eine höhere Version erforderlich. Führen Sie aus, um die Versionsnummer zu az --versionermitteln. Wenn Sie die Azure CLI installieren oder aktualisieren müssen, lesen Sie Installieren der Azure CLI.

Ausführlichere Informationen zum Upgradeprozess finden Sie im Abschnitt "Upgraden eines AKS-Clusters" unter Upgraden eines Azure Kubernetes Service (AKS)-Clusters.

Problembeschreibung

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

Code: UpgradeFailed
Meldung: Fehler beim Leeren des Knotenknotennamens <> beim Entfernen des Podpodnamens<>. Fehler beim Entfernen: Fehler "Zu viele Anforderungen". Dies wird häufig durch eine restriktive PdB-Richtlinie (Pod Disruption Budget) verursacht. Weitere Informationen finden Sie unter http://aka.ms/aks/debugdrainfailures. Ursprünglicher Fehler: Fehler beim API-Aufruf des Kubernetes-API-Servers.

Ursache

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

Um diese Situation zu testen, führen Sie aus kubectl get pdb -A, und überprüfen Sie dann den Wert Zulässige Unterbrechung . Der Wert sollte mindestens 1 sein. Weitere Informationen finden Sie unter Planen der Verfügbarkeit mithilfe von Budgets für Die Unterbrechung von Pods.

Wenn der Wert Zulässige Unterbrechung0 ist, schlägt die Knotenentwässerung während des Upgradevorgangs fehl.

Verwenden Sie eine der folgenden Lösungen, um dieses Problem zu beheben.

Lösung 1: Aktivieren des Ausgleichs von Pods

  1. Passen Sie die PDB an, um die Podentwässerung zu aktivieren. Im Allgemeinen wird die zulässige Unterbrechung durch den Min Available / Max unavailable Parameter oder Running pods / Replicas gesteuert. Sie können den Min Available / Max unavailable Parameter auf PDB-Ebene ändern oder die Anzahl von Running pods / Replicas erhöhen, um den Wert für zulässige Unterbrechungen auf 1 oder höher zu pushen.
  2. Versuchen Sie erneut, den AKS-Cluster auf dieselbe Version zu aktualisieren, auf die Sie zuvor ein Upgrade versucht haben. Dieser Prozess löst eine Abstimmung aus.

Lösung 2: Sichern, Löschen und erneutes Bereitstellen des 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 erneut, den AKS-Cluster auf dieselbe Version zu aktualisieren, auf die Sie zuvor ein Upgrade versucht haben. Dieser Prozess löst eine Abstimmung aus.

Lösung 3: Löschen der Pods, die nicht gelöscht werden können

  1. Löschen Sie die Pods, die nicht gelöscht werden können.

    Hinweis

    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, wird empfohlen, eine Sicherung zu erstellen: kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml.

  2. Versuchen Sie erneut, den AKS-Cluster auf dieselbe Version zu aktualisieren, auf die Sie zuvor ein Upgrade versucht 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.