Delen via


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 --versionom 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). 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 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 -Aen 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

  1. Pas de PDB aan om podafvoer mogelijk te maken. Over het algemeen wordt de toegestane onderbreking beheerd door de Min Available / Max unavailable of Running pods / Replicas parameter. U kunt de Min Available / Max unavailable parameter op PDB-niveau wijzigen of het aantal verhogen om Running pods / Replicas de waarde toegestane onderbreking naar 1 of hoger te pushen.
  2. 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

  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 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

  1. 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.

  2. 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.