UpgradeFailed-fouten oplossen vanwege verwijderingsfouten die worden veroorzaakt door PDBs
In dit artikel wordt beschreven hoe u UpgradeFailed-fouten kunt identificeren en oplossen vanwege verwijderingsfouten die worden veroorzaakt door POD-onderbrekingsbudgetten (PDBs) die optreden wanneer u probeert een Azure Kubernetes Service-cluster (AKS) bij te werken.
Voorwaarden
Voor dit artikel is Azure CLI versie 2.0.65 of een nieuwere versie vereist. Voer het versienummer uit az --version
om het versienummer te vinden. Als u Azure CLI moet installeren of upgraden, raadpleegt u De Azure CLI installeren.
Zie de sectie Een AKS-cluster upgraden in een AKS-cluster (Azure Kubernetes Service) voor meer gedetailleerde informatie over het upgradeproces.
Symptomen
Een upgradebewerking voor een AKS-cluster mislukt met het volgende foutbericht:
Code: UpgradeFailed
Bericht: Knooppuntnaam <> leegmaken is mislukt bij het verwijderen van pod-naam<>. Verwijderen is mislukt met de fout Te veel aanvragen. Dit wordt vaak veroorzaakt door een beperkend PDB-beleid (Pod Disruption Budget). Ziehttp://aka.ms/aks/debugdrainfailures
. Oorspronkelijke fout: API-aanroep naar Kubernetes API Server is mislukt.
Oorzaak
Deze fout kan optreden als een pod wordt beveiligd door het PDB-beleid (Pod Disruption Budget). In deze situatie verzet de pod zich tegen leegmaken.
Als u deze situatie wilt testen, voert u deze uit kubectl get pdb -A
en controleert u de waarde voor toegestane onderbrekingen . De waarde moet 1 of hoger zijn. Zie Beschikbaarheid plannen met behulp van budgetten voor podonderbrekingen voor meer informatie.
Als de waarde voor toegestane onderbreking 0 is, mislukt de knooppuntafvoer tijdens het upgradeproces.
Gebruik een van de volgende oplossingen om dit probleem op te lossen.
Oplossing 1: Pods inschakelen om af te voeren
- Pas de PDB aan om podafvoer mogelijk te maken. Over het algemeen wordt de toegestane onderbreking beheerd door de
Min Available / Max unavailable
ofRunning pods / Replicas
parameter. U kunt deMin Available / Max unavailable
parameter op PDB-niveau wijzigen of het aantal verhogen omRunning pods / Replicas
de waarde toegestane onderbreking naar 1 of hoger te pushen. - Probeer het AKS-cluster opnieuw te upgraden naar dezelfde versie die u eerder hebt geprobeerd te upgraden. Dit proces activeert een afstemming.
Oplossing 2: Een back-up maken, verwijderen en de PDB opnieuw implementeren
- Maak een back-up van de PDB
kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yaml
en verwijder vervolgens de PDBkubectl delete pdb <pdb-name> -n /<pdb-namespace>
. Nadat de upgrade is voltooid, kunt u de PDBkubectl apply -f pdb_backup.yaml
opnieuw implementeren. - Probeer het AKS-cluster opnieuw te upgraden naar dezelfde versie die u eerder hebt geprobeerd te upgraden. Dit proces activeert een afstemming.
Oplossing 3: Verwijder de pods die niet kunnen worden verwijderd
Verwijder de pods die niet kunnen worden leeggezogen.
Notitie
Als de pods zijn gemaakt door een implementatie of StatefulSet, worden deze beheerd door een ReplicaSet. Als dat het geval is, moet u mogelijk de implementatie of StatefulSet verwijderen. Voordat u dat doet, raden we u aan een back-up te maken:
kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml
.Probeer het AKS-cluster opnieuw te upgraden naar dezelfde versie die u eerder hebt geprobeerd te upgraden. Dit proces activeert een afstemming.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.