Problembehandlung bei Azure Kubernetes Service-Clusterupgradefehlern
Dieser Artikel enthält Anleitungen zur Problembehandlung der häufigsten Fehler, die beim Upgrade eines Azure Kubernetes Service (AKS)-Clusters auftreten.
Bevor Sie beginnen
Überprüfen Sie die Fehlermeldung, die Sie während des Upgradeprozesses erhalten haben, und führen Sie die entsprechenden Schritte im Abschnitt "Lösung" aus.
Dieser Artikel erfordert Azure CLI Version 2.0.65 oder eine höhere Version. Um die Versionsnummer zu finden, führen Sie az --version. Wenn Sie Azure CLI installieren oder aktualisieren müssen, lesen Sie " Installieren von Azure CLI".
Einen detaillierten Upgradeprozess finden Sie unter "Was geschieht während des AKS-Clusterupgrades".
Upgrade schlägt aufgrund von NSG-Regeln fehl
Ursache
Eine NSG-Regel verhindert, dass der Cluster erforderliche Ressourcen herunterlädt.
Lösung
Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:
Führen Sie
az network nsg list -o tableaus, und suchen Sie dann die NSG, die mit Ihrem Cluster verknüpft ist. Die NSG ist in einer Ressourcengruppe mit dem NamenMC_<RG name>_<your AKS cluster name>".Anzeigen der Regeln der NSG:
az network nsg rule list --resource-group <Rg name> --nsg-name <nsg name> --include-default -o tableDie folgende Bildschirmshpt zeigt die Standardregeln:
Wenn Sie über die Standardregeln verfügen, überspringen Sie diesen Schritt. Andernfalls überarbeiten und entfernen Sie die Regeln, die den Internetdatenverkehr blockieren. Versuchen Sie dann, den AKS-Cluster auf die gleiche Version zu aktualisieren, auf die Sie zuvor ein Upgrade versucht haben. Dieser Prozess löst eine Abstimmung aus.
az aks upgrade --resource-group <ResourceGroupName> --name <AKSClusterName> --kubernetes-version <KUBERNETES_VERSION>
Fehlercode: PodDrainFailure
Ursache
Dieser Fehler kann auftreten, wenn ein Pod durch die Pod Disruption Budget (PDB)-Richtlinie geschützt ist. In dieser Situation wird der Pod nicht geleert.
Führen Sie dazu kubelect get pdb -Aden Wert für zulässige Unterbrechungen aus, und überprüfen Sie ihn. Der Wert sollte 1 oder höher sein. Weitere Informationen finden Sie unter Planen der Verfügbarkeit mithilfe von Pod-Unterbrechungsbudgets.
Wenn der Wert für zulässige Unterbrechungen 0 ist, schlägt der Knotenabfluss während des Upgradeprozesses fehl.
Problemumgehung
Wenden Sie eine der folgenden Methoden an, um dieses Problem zu umgehen:
- Passen Sie den PDB an, um pods draining zu aktivieren. Im Allgemeinen ist die zulässige Unterbrechung das Ergebnis von
Min Available / Max unavailableoderRunning pods / Replicas. Sie können denMin Available / Max unavailableParameter auf PDB-Ebene ändern oder die Anzahl derRunning pods / ReplicasWerte für zulässige Unterbrechungen auf 1 oder höher erhöhen. - 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>. Nach Abschluss des Upgrades können Sie den PDBkubectl apply -f pdb_backup.yamlerneut bereitstellen. - Löschen Sie die Pods, die nicht ausgeglichen werden können. Beachten Sie, dass, wenn die Pods von einer Bereitstellung oder statefulSet erstellt wurden, sie von einem ReplicaSet gesteuert werden. Daher müssen Sie möglicherweise die Bereitstellung oder StatefulSet löschen. Bevor Sie dies tun, wird empfohlen, dass Sie eine Sicherung
kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yamlerstellen.
Nachdem Sie eine dieser Methoden angewendet haben, initiieren Sie den Upgradevorgang für den AKS-Cluster erneut auf die gleiche Version, die Sie zuvor aktualisiert haben. Dieser Prozess löst eine Abstimmung aus, die versucht, die AKS-Knoten erneut zu aktualisieren.
Fehlercode: PublicIPCountLimitReached
Ursache
Der Fehler tritt auf, wenn Sie die maximale Anzahl öffentlicher IP-Adressen erreicht haben, die für Ihr Abonnement zulässig sind.
Lösung
Um das Limit oder Kontingent für Ihr Abonnement zu erhöhen, wechseln Sie zum Azure-Portal, geben Sie ein Supportticket für Dienst- und Abonnementbeschränkungen (Kontingente) ein, und legen Sie den Kontingenttyp auf "Netzwerk" fest.
Nachdem die Kontingentänderung wirksam wurde, versuchen Sie, den Cluster auf die gleiche Version zu aktualisieren, auf die Sie zuvor ein Upgrade versucht haben. Dieser Prozess löst eine Abstimmung aus.
az aks upgrade --resource-group <ResourceGroupName> --name <AKSClusterName> --kubernetes-version <KUBERNETES_VERSION>
Fehlercode: Quotaexceeded
Ursache
Das Problem tritt auf, wenn das Kontingent erreicht ist. Ihr Abonnement verfügt nicht über verfügbare Ressourcen, die für ein Upgrade erforderlich sind.
Lösung
Um den Grenzwert oder das Kontingent für Ihr Abonnement zu erhöhen, wechseln Sie zum Azure-Portal, melden Sie ein Supportticket für Dienst- und Abonnementbeschränkungen (Kontingente) an.
Es folgt ein Beispiel für die Fehlermeldung:
Der Vorgang führt zu einer Überschreitung der Kontingentgrenzen von Core. Maximal zulässig: X, aktuell verwendet: X, zusätzliche angefordert: X
In diesem Fall müssen Sie ein Supportticket übermitteln, um das Angebot für Compute-Kerne zu erhöhen.
Fehlercode: Subnetisfull
Fehlermeldung
Knotenpool <AGENT POOL NAME>' im Kubernetes-Dienst konnte nicht skaliert werden.<NAME>' Fehler: VMSSAgentPoolReconciler retry failed: Code='SubnetIsFull' Message='<SUBNET NAME>\ with address prefix <PREFIX>\ doesn't have enough capacity for XXX IP addresses.' Details=[]
Ursache
Dieser Fehler tritt auf, wenn Ihr Cluster nicht über genügend IP-Adressen verfügt, um einen neuen Knoten zu erstellen.
Wenn Sie einen Upgrade- oder Skalierungsvorgang durchführen möchten, sollte die Anzahl der erforderlichen IP-Adressen berücksichtigt werden. Wenn der ip-Adressbereich, den Sie im Cluster konfiguriert haben, nur eine feste Anzahl von Knoten unterstützt, schlägt der Upgrade- oder Skalierungsvorgang fehl. Weitere Informationen finden Sie unter Planen der IP-Adressierung für den Cluster.
Problemumgehung
Um das Problem zu umgehen, reduzieren Sie die Clusterknoten, um IP-Adressen für das Upgrade zu reservieren.
Wenn das Herunterskalieren keine Option ist und ihr virtuelles Netzwerk-CIDR über genügend IP-Adressen verfügt, versuchen Sie, einen Knotenpool hinzuzufügen, der über ein eindeutiges Subnetz verfügt:
- Fügen Sie einen neuen Benutzerknotenpool im virtuellen Netzwerk in einem größeren Subnetz hinzu.
- Wechseln Sie den ursprünglichen Knotenpool zu einem Typsystem.
- Skalieren des Benutzerknotenpools.
- Skalieren Sie den ursprünglichen Knotenpool nach unten.