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.
Sommario
Questo articolo descrive come identificare e risolvere gli ZonalAllocationFailederrori , AllocationFailedo OverconstrainedAllocationRequest che possono verificarsi quando si tenta di creare, distribuire o aggiornare un cluster Servizio Azure Kubernetes (AKS).
Prerequisiti
Per risolvere questi errori, è consigliabile disporre dei prerequisiti seguenti:
-
interfaccia della riga di comando di Azure (facoltativo), versione 2.86.0 o successiva. Se interfaccia della riga di comando di Azure è già installato, usare
az --versionper controllare il numero di versione. - 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://learn.microsoft.com/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://learn.microsoft.com/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 un pool di nodi sul posto quando la creazione o il ridimensionamento è bloccato a causa della disponibilità richiesta delle dimensioni della macchina virtuale
Se un'altra dimensione di VM compatibile dispone di capacità, ridimensiona i set di scalabilità di macchine virtuali (VMSS) esistenti o il pool di nodi di macchine virtuali (VM) esistente in modo che usi tale dimensione. Il servizio Azure Kubernetes sostituisce i nodi tramite un'operazione in sequenza, quindi non è necessario creare un nuovo pool di nodi ed eseguire manualmente la migrazione dei carichi di lavoro. Questa funzionalità è attualmente in anteprima e richiede un aumento della capacità per le dimensioni della macchina virtuale di destinazione. Per informazioni su prerequisiti, limitazioni e istruzioni, vedere Ridimensionare direttamente un pool di nodi di un set di scalabilità di macchine virtuali (anteprima).
Soluzione 3: Usare il posizionamento automatico della zona quando la creazione o il ridimensionamento è bloccato da una limitazione di zona specifica
Per i carichi di lavoro distribuiti su più zone, creare o aggiornare il pool di nodi con posizionamento automatico nelle zone. AKS seleziona le zone di disponibilità che dispongono della capacità necessaria per lo SKU di VM richiesto e rivaluta la disponibilità delle zone nelle successive operazioni di scalabilità orizzontale. Questa funzionalità è attualmente in anteprima e un'allocazione può comunque non riuscire se Azure non può allocare i nodi richiesti rispettando il limite per zona. Per i prerequisiti, le limitazioni e le istruzioni, vedere Posizionamento automatico della zona in servizio Azure Kubernetes (anteprima).
Soluzione 4: ridimensionamento dinamico 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 5: Eseguire l'aggiornamento sul posto usando 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 e impostare MaxSurge su zero. Il processo di aggiornamento cordona e drena i nodi esistenti uno alla volta, sfrattando i pod verso i nodi rimanenti. Il processo non crea un nodo buffer.
Soluzione 6: 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 7: Usare espansori con priorità con scalabilità automatica del cluster
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.
Limitations
Le limitazioni seguenti si applicano all'espansore di priorità:
- 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 Azure non può allocare una nuova macchina virtuale 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, 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. La crescente popolarità dei servizi di Azure sottolinea la necessità di aumentare ulteriormente l'infrastruttura. Tenendo presente questo obiettivo, 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
- Risoluzione generale delle problematiche di creazione del cluster AKS
- Set di scalabilità di macchine virtuali: cosa aspettarsi quando si usano gruppi di posizionamento di prossimità
- Correzione di un errore AllocationFailed o ZonalAllocationFailed durante la creazione, il riavvio o il ridimensionamento dei set di scalabilità di macchine virtuali in Azure