Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come identificare e risolvere l'errore "UnsatisfiablePDB" che può verificarsi quando si tenta di aggiornare un cluster del servizio Azure Kubernetes.
Prerequisiti
Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.53.0 o successiva. Eseguire az --version per trovare la versione installata. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Come installare l'interfaccia della riga di comando di Azure.
Sintomi
Un'operazione di aggiornamento del cluster AKS non riesce con il seguente messaggio di errore:
Codice: UnsatisfiablePDB
Messaggio: 1 errore:
* PDB <pdb-namespace>/<pdb-name> ha massimo non disponibile == 0, non può procedere con l'operazione di inserimento
Motivo
Prima di avviare un'operazione di aggiornamento, AKS controlla il cluster per eventuali budget di interruzione dei pod (PDB) esistenti con il maxUnavailable parametro impostato su 0. È probabile che tali PDB blocchino le operazioni di svuotamento dei nodi. Se le operazioni di svuotamento dei nodi sono bloccate, l'operazione di aggiornamento del cluster non può essere completata correttamente. Ciò potrebbe potenzialmente causare un errore del cluster.
Dopo aver ricevuto l'errore "UnsatisfiablePDB", è possibile confermare lo stato del PDB eseguendo il comando seguente:
$ kubectl get pdb <pdb-name> -n <pdb-namespace>
L'output di questo comando dovrebbe essere simile al seguente:
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE
<pdb-name> N/A 0 0 49s
Se il valore di MAX UNAVAILABLE è 0, lo svuotamento del nodo non riesce durante il processo di aggiornamento.
Per risolvere questo problema, usare una delle soluzioni seguenti.
Soluzione 1: Modificare il parametro "maxUnavailable" del database PDB
Annotazioni
Usare questa soluzione se è possibile modificare direttamente la risorsa PDB.
- Impostare il parametro
maxUnavailabledel database PDB su1o un valore maggiore. Per ulteriori informazioni, vedere Specificare un PodDisruptionBudget. - Ripetere l'operazione di aggiornamento del cluster AKS.
Soluzione 2: Eseguire il backup, eliminare e ridistribuire il database PDB
Annotazioni
Usare questa soluzione se la modifica diretta della risorsa PDB non è fattibile.
Eseguire il backup del database PDB usando il comando seguente:
$ kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yamlEliminare il PDB usando il comando seguente:
$ kubectl delete pdb <pdb-name> -n <pdb-namespace>Ripetere l'operazione di aggiornamento del cluster AKS.
Se l'operazione di aggiornamento del cluster AKS ha esito positivo, ri-deploy il PDB usando il comando seguente:
$ kubectl apply -f pdb_backup.yaml
Contattaci per ricevere assistenza
In caso di domande, è possibile porre domande al supporto della community di Azure. È anche possibile inviare commenti e suggerimenti sul prodotto alla community di commenti e suggerimenti di Azure.