Share via


Problemen met UpgradeFailed oplossen vanwege verwijderingsfouten veroorzaakt door PGB's

In dit artikel wordt beschreven hoe u UpgradeFailed-fouten kunt identificeren en oplossen vanwege verwijderingsfouten die worden veroorzaakt door PGB's (Pod Disruption Budgets) die optreden wanneer u een AKS-cluster (Azure Kubernetes Service) probeert te upgraden.

Vereisten

Voor dit artikel is Azure CLI versie 2.0.65 of een latere versie vereist. Voer az --versionuit 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 Azure Kubernetes Service (AKS)-cluster upgraden voor meer informatie over het upgradeproces.

Symptomen

Een upgradebewerking van het AKS-cluster mislukt met het volgende foutbericht:

Code: UpgradeFailed
Bericht: De knooppuntnaam van het knooppunt <leegmaken is mislukt bij het verwijderen van pod-naam<>.> Verwijdering is mislukt met de fout Te veel aanvragen. Dit wordt vaak veroorzaakt door een restrictief PDB-beleid (Pod Disruption Budget). Zie http://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 beleid Pod Disruption Budget (PDB). In deze situatie kan de pod niet worden afgetapt.

Als u deze situatie wilt testen, voert u uit kubectl get pdb -Aen controleert u vervolgens de waarde Toegestane onderbreking . De waarde moet 1 of hoger zijn. Zie Beschikbaarheid plannen met podonderbrekingsbudgetten voor meer informatie.

Als de waarde voor toegestane onderbreking0 is, mislukt de knooppuntafvoer tijdens het upgradeproces.

Gebruik een van de volgende oplossingen om dit probleem op te lossen.

Oplossing 1: Ervoor zorgen dat pods kunnen worden afgetapt

  1. Pas de PDB aan om het leegmaken van pods in te schakelen. Over het algemeen wordt de toegestane onderbreking bepaald door de Min Available / Max unavailable parameter of Running pods / Replicas . U kunt de Min Available / Max unavailable parameter op PDB-niveau wijzigen of het aantal verhogen Running pods / Replicas om de waarde toegestane onderbreking naar 1 of hoger te pushen.
  2. Probeer opnieuw om het AKS-cluster te upgraden naar dezelfde versie die u eerder hebt geprobeerd te upgraden. Dit proces activeert een afstemming.

Oplossing 2: Maak een back-up van de PDB, verwijder en implementeer deze opnieuw

  1. Maak een back-up van de PDB kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yamlen verwijder vervolgens de PDB kubectl delete pdb <pdb-name> -n /<pdb-namespace>. Nadat de upgrade is voltooid, kunt u de PDB kubectl apply -f pdb_backup.yamlopnieuw implementeren.
  2. Probeer opnieuw om het AKS-cluster 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 afgetapt

  1. Verwijder de pods die niet kunnen worden afgetapt.

    Opmerking

    Als de pods zijn gemaakt door een implementatie of StatefulSet, worden ze beheerd door een ReplicaSet. Als dat het geval is, moet u mogelijk de implementatie of StatefulSet verwijderen. Voordat u dit doet, raden we u aan een back-up te maken: kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml.

  2. Probeer opnieuw om het AKS-cluster 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 Feedback-community van Azure.