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 --version
ermitteln. 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 unterhttp://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
- 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 oderRunning pods / Replicas
gesteuert. Sie können denMin Available / Max unavailable
Parameter auf PDB-Ebene ändern oder die Anzahl vonRunning pods / Replicas
erhöhen, um den Wert für zulässige Unterbrechungen auf 1 oder höher zu pushen. - 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
- 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 PDBkubectl delete pdb <pdb-name> -n /<pdb-namespace>
. Nachdem das Upgrade abgeschlossen ist, können Sie den PDBkubectl apply -f pdb_backup.yaml
erneut bereitstellen. - 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
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
.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.