Risolvere i problemi relativi al codice di errore ZonalAllocationFailed, AllocationFailed o OverconstrainedAllocationRequest

Sommario

Questo articolo descrive come identificare e risolvere l'errore ZonalAllocationFailed, AllocationFailedo OverconstrainedAllocationRequest che può verificarsi quando si tenta di creare, distribuire o aggiornare un cluster del servizio Microsoft Azure Kubernetes.

Prerequisiti

  • Interfaccia della riga di comando di Azure (facoltativa), versione 2.0.59 o successiva. Se l'interfaccia della riga di comando di Azure è già installata, è possibile trovare il numero di versione usando az --version.

  • Azure PowerShell (facoltativo).

Sintomi

Quando si tenta di creare, aggiornare o aumentare le prestazioni di un cluster, viene visualizzato uno dei messaggi di errore seguenti:

Codice: ZonalAllocationFailed

Messaggio: Allocation failed. We do not have sufficient capacity for the requested VM size in this zone. Read more about improving likelihood of allocation success at https://aka.ms/allocation-guidance. Please note that allocation failures can also arise if a proximity placement group is associated with this VMSS. See https://dotnet.territoriali.olinfo.it/troubleshoot/azure/azure-kubernetes/error-code-zonalallocationfailed-allocationfailed for more details. This is not AKS controlled behavior, please ask help to VMSS team for allocation failure. If the error is due to capacity constrain, consider upgrade with maxUnavailable instead of maxSurge, details: aka.ms/aks/maxUnavailable.

Codice: AllocationFailed

Messaggio: The VM allocation failed due to an internal error. Please retry later or try deploying to a different location. Please note that allocation failures can also arise if a proximity placement group is associated with this VMSS. See https://dotnet.territoriali.olinfo.it/troubleshoot/azure/azure-kubernetes/error-code-zonalallocationfailed-allocationfailed for more details. This is not AKS controlled behavior, please ask help to VMSS team for allocation failure.

Codice: OverconstrainedAllocationRequest

Messaggio: Create or update VMSS failed. Allocation failed. VM(s) with the following constraints cannot be allocated, because the condition is too restrictive. Please remove some constraints and try again. Constraints applied are: - Differencing (Ephemeral) Disks - Networking Constraints (such as Accelerated Networking or IPv6) - VM Size

Causa 1: Disponibilità limitata di zone in un SKU

Si sta provando a distribuire, aggiornare o aumentare le prestazioni di un cluster in una zona con disponibilità limitata per lo SKU specifico.

Soluzione 1: Usare uno SKU, una zona o un'area diversi

Provare uno o più dei metodi seguenti:

  • Ridistribuire il cluster nella stessa area usando uno SKU diverso.
  • Ridistribuire il cluster in una zona diversa in quella regione.
  • Ridistribuire il cluster in un'area diversa.
  • Creare un nuovo pool di nodi in una zona diversa o usare uno SKU diverso.

Per altre informazioni su come risolvere questo errore, vedere Risolvere gli errori per lo SKU non disponibile.

Soluzione 2: ridimensionare dinamicamente con il provisioning automatico dei nodi

Il provisioning automatico dei nodi consente di effettuare automaticamente il provisioning degli SKU delle macchine virtuali in base alle esigenze del carico di lavoro. Se uno SKU non è disponibile a causa di vincoli di capacità, il provisioning automatico del nodo seleziona un altro tipo di SKU in base alle specifiche specificate nelle definizioni delle risorse del cliente (CRD) come NodePool e AKSNodeClass. Ciò può essere utile per gli scenari di ridimensionamento quando una determinata capacità dello SKU diventa limitata. Per altre informazioni sulla configurazione del cluster nap, vedere Configurare i pool di nodi per il provisioning automatico dei nodi nel servizio Azure Kubernetes e Configurare le risorse AKSNodeClass per il provisioning automatico dei nodi nel servizio Azure Kubernetes.

Soluzione 3: Eseguire l'aggiornamento tramite MaxUnavailable

Se non sono necessari nodi con picchi durante gli aggiornamenti, vedere Personalizzare i nodi non disponibili per informazioni su come eseguire l'aggiornamento con la capacità esistente. Impostare MaxUnavailable su un valore maggiore di zero (0) e impostare MaxSurge uguale a zero (0). I nodi esistenti vengono quindi delimitati e svuotati uno alla volta e i pod vengono rimossi nei nodi rimanenti. Non viene creato alcun nodo del buffer.

Soluzione 4: Usare il consiglio di distribuzione nel portale per la creazione di un nuovo cluster

Durante la creazione di un cluster del servizio Azure Kubernetes nel portale di Azure, se lo SKU del pool di nodi selezionato non è disponibile nell'area e nelle zone selezionate, lo strumento di raccomandazione per la distribuzione consiglia una combinazione alternativa di SKU, zone e aree con disponibilità.

Soluzione 5: Utilizzare amplificatori di priorità con cluster-autoscaler

Il priority expander dell'autoscaler del cluster consente di definire un elenco ordinato di pool di nodi per tentare il ridimensionamento in sequenza. Ad esempio: pool spot prima (ottimizzazione dei costi), quindi pool su richiesta (fallback di disponibilità). L'accesso condizionale tenta di implementare prima il pool con priorità più alta. Se il ridimensionamento non riesce , ad esempio a causa di un errore di allocazione, prova il pool successivo.

Limitazioni

  • L'accesso condizionale non crea nuovi pool di nodi. Funziona solo con i pool esistenti. Se si desidera eseguire il provisioning di SKU dinamici, utilizzare NAP, che può creare pool basati sulla disponibilità di SKU.

  • L'espansore di priorità funziona a livello di pool di nodi, non a livello di SKU. È necessario precreare i pool per ogni famiglia di SKU che si vuole usare.

Causa 2: Troppi vincoli per una macchina virtuale da ospitare

Se viene visualizzato un OverconstrainedAllocationRequest codice di errore, la piattaforma di calcolo di Azure non può allocare una nuova macchina virtuale (VM) per soddisfare i vincoli necessari. Questi vincoli in genere (ma non sempre) includono gli elementi seguenti:

  • Dimensioni macchina virtuale
  • SKU di VM
  • Rete accelerata
  • Zona di disponibilità
  • Disco effimero
  • Gruppo di posizionamento di prossimità (PPG)

Soluzione: non associare un gruppo di posizionamento di prossimità al pool di nodi

Se viene visualizzato un OverconstrainedAllocationRequest codice di errore, è possibile provare a creare un nuovo pool di nodi non associato a un gruppo di posizionamento di prossimità.

Causa 3: Mancanza di host dedicati o domini di errore

Si sta cercando di distribuire un pool di nodi in un gruppo di host dedicato che ha capacità limitata o non soddisfa il vincolo del dominio di errore.

Soluzione: assicurarsi di disporre di un numero sufficiente di host dedicati per i nodi del servizio Azure Kubernetes (AKS)/VMSS

In base a Planning for ADH Capacity on AKS, sei responsabile di pianificare un numero sufficiente di host dedicati per coprire tutti i domini di errore richiesti dal tuo set di scalabilità di macchine virtuali AKS. Ad esempio, se il set di scalabilità di macchine virtuali AKS viene creato con FaultDomainCount=2, sono necessari almeno due host dedicati in domini di errore diversi (FaultDomain 0 e FaultDomain 1).

Maggiori informazioni

Garantire la capacità per gli utenti è una priorità assoluta per Microsoft e stiamo lavorando tutto il giorno per raggiungere questo obiettivo. La crescente popolarità dei servizi di Azure sottolinea la necessità di aumentare ulteriormente l'infrastruttura. Tenendo presente questo aspetto, stiamo accelerando le espansioni e migliorando il processo di distribuzione delle risorse per rispondere a una forte domanda dei clienti. Viene aggiunta anche una grande quantità di infrastruttura di elaborazione mensile.

Sono stati identificati diversi metodi per migliorare il bilanciamento del carico in una situazione di utilizzo elevato delle risorse e come attivare la distribuzione tempestiva delle risorse necessarie. Inoltre, stiamo aumentando significativamente la nostra capacità e continuiamo a pianificare una forte domanda in tutte le aree geografiche. Per altre informazioni sui miglioramenti apportati alla fornitura di una supply chain cloud resiliente, vedere Migliorare l'affidabilità tramite una supply chain cloud resiliente.

Riferimenti