Risolvere i problemi relativi a servizio Azure Kubernetes cluster o nodi in uno stato non riuscito
Questo articolo illustra come risolvere i problemi di un cluster o di un nodo di Microsoft servizio Azure Kubernetes (AKS) che entra in uno stato di errore.
Cause comuni
Di seguito sono riportate le cause comuni di un cluster o di un pool di nodi non riuscito:
Causa | Riferimento |
---|---|
Errore di provisioning dell'estensione cse (Custom Script Extension) della macchina virtuale (VM) | Risolvere gli errori del nodo non pronti causati da errori cse |
Risorse di Azure principali non disponibili | |
Errore di allocazione della macchina virtuale a causa della mancanza di capacità a livello di area/area | |
Errore di allocazione della macchina virtuale a causa del superamento della quota core | Errore quotaexceeded |
Restrizioni imposte dal cliente | |
Problemi del carico di lavoro |
Risoluzione di base degli errori comuni che causano l'esito negativo di un cluster/nodo
La tabella seguente descrive alcuni errori comuni che possono causare l'immissione di uno stato di errore in un cluster o in un nodo, le relative descrizioni e i metodi di risoluzione dei problemi di base per risolvere questi errori.
Error | Descrizione | Metodo di risoluzione dei problemi |
---|---|---|
OutboundConnFailVMExtensionError | Questo errore indica che l'installazione o l'aggiornamento dell'estensione della macchina virtuale non riesce a causa della mancanza di connettività in uscita. | Controllare le regole del gruppo di sicurezza di rete e le impostazioni del firewall della macchina virtuale o del set di scalabilità di macchine virtuali. Assicurarsi che la macchina virtuale o il set di scalabilità di macchine virtuali possa accedere a questi endpoint: https://aka.ms/aks/outbound , https://aka.ms/aks/ssh , https://aka.ms/aks/agent e https://aka.ms/aks/containerinsights . |
Errore di svuotamento | Questo errore indica che il nodo non riesce a svuotarsi prima dell'operazione di aggiornamento. | Controllare lo stato del pod e gli eventi nel nodo usando i comandi kubectl: kubectl get pods --all-namespaces -o wide e kubectl describe pod <pod-name> -n <namespace> . Cercare eventuali pod bloccati in uno stato terminato o sconosciuto o con eventuali errori o avvisi negli eventi. Potrebbe essere necessario forzare l'eliminazione dei pod o riavviare il servizio kubelet nel nodo. |
Errore SubscriptionNotRegistered | Questo errore indica che la sottoscrizione non è registrata per l'uso del provider di risorse del servizio Azure Kubernetes. | Registrare la sottoscrizione usando il az provider register --namespace Microsoft.ContainerService comando . |
Errore RequestDisallowedByPolicy | Questo errore indica che l'operazione è bloccata da un criterio applicato alla sottoscrizione o al gruppo di risorse. | Esaminare i dettagli dei criteri e gli ambiti di assegnazione dei criteri. Per consentire l'operazione, potrebbe essere necessario modificare o escludere i criteri. |
Errore quotaExceeded | Questo errore indica che l'operazione supera il limite di quota per un tipo di risorsa o un'area. | Controllare l'utilizzo della quota e il limite di quota correnti per il tipo di risorsa o l'area usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. Potrebbe essere necessario eliminare alcune risorse inutilizzate o richiedere un aumento della quota. |
Errore PublicIPCountLimitReached | Questo errore indica che l'operazione raggiunge il numero massimo di indirizzi IP pubblici che possono essere creati in una sottoscrizione o in un'area. | Controllare l'utilizzo dell'indirizzo IP pubblico corrente e il limite per la sottoscrizione o l'area usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. Potrebbe essere necessario eliminare alcuni indirizzi IP pubblici inutilizzati o richiedere un aumento del limite di indirizzi IP pubblici. |
Errore overconstrainedAllocationRequest | Questo errore indica che l'operazione non riesce ad allocare le dimensioni della macchina virtuale richieste in un'area. | Controllare la disponibilità delle dimensioni della macchina virtuale nell'area usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. Potrebbe essere necessario scegliere una dimensione di macchina virtuale diversa o un'area diversa. |
Errore ReadOnlyDisabledSubscription | Questo errore indica che la sottoscrizione è attualmente disabilitata e impostata su sola lettura. | Esaminare e modificare le autorizzazioni di sottoscrizione perché la sottoscrizione potrebbe essere stata sospesa a causa di problemi di fatturazione, di credito scaduto o di violazioni dei criteri. |
Risoluzione di base di altri possibili problemi che causano l'esito negativo di un cluster/nodo
Questa tabella descrive altri possibili problemi che possono causare l'immissione di uno stato di errore in un cluster o in un nodo, le relative descrizioni e soluzioni per risolvere questi problemi.
Problema | Descrizione | Soluzione |
---|---|---|
Le dimensioni della subnet sono troppo piccole | L'operazione non può creare o aggiornare il cluster perché la subnet non dispone di spazio sufficiente per il numero di nodi richiesto. | Eliminare il pool di nodi e crearne uno nuovo con dimensioni di subnet maggiori usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. |
La rete virtuale è bloccata | L'operazione non può comunicare con il server API cluster o il piano di controllo Kubernetes perché il firewall o un'impostazione DNS (Domain Name System) personalizzata blocca le connessioni in uscita dai nodi. | Consentire il traffico del nodo nel firewall e configurare la risoluzione DNS in Azure usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. |
Problemi di PDB | L'operazione non può aggiornare il cluster perché un file PDB ha arrestato la rimozione di uno o più pod. Un PDB è una risorsa che limita il numero di pod che possono essere terminati volontariamente durante un periodo specifico. | Rimuovere temporaneamente il file PDB, riconciliare il cluster e quindi aggiungere nuovamente il file PDB usando lo strumento da riga di comando kubectl. |
Problemi dell'infrastruttura | L'operazione non può aggiornare il cluster a causa di un problema interno con il servizio Azure Resource Manager (ARM) che gestisce le risorse in Azure. | Eseguire una riconciliazione del pool di agenti per ogni pool di nodi e una riconciliazione per il cluster gestito usando l'interfaccia della riga di comando di Azure o Azure PowerShell. |
Errori del server API | L'operazione non può raggiungere il server API del cluster o il piano di controllo Kubernetes a causa di un'interruzione o di un bug. | Segnalarlo al team di supporto del servizio Azure Kubernetes e fornire i log e le informazioni di diagnostica pertinenti. È possibile ottenere i log e le informazioni di diagnostica usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. |
Nota
- L'operazione menzionata nella tabella precedente fa riferimento a qualsiasi operazione di aggiornamento (
PUT
) attivata dal lato cliente. - In Kubernetes è presente un componente all'interno di un controller. Garantisce lo stato effettivo del mondo, inclusi lo stato del cluster e gli stati potenzialmente esterni, ad esempio l'esecuzione di contenitori per Kubelet o i servizi di bilanciamento del carico per un provider di servizi cloud. Si allinea allo stato desiderato specificato in un oggetto . Questo processo di allineamento è una funzione chiave del controller. Per il servizio Azure Kubernetes, questo componente garantisce che lo stato del cluster del servizio Azure Kubernetes sia allineato alla configurazione desiderata. Per attivarlo manualmente, eseguire
az resource update --ids <AKS cluster id>
. È possibile ottenere l'ID cluster del servizio Azure Kubernetes eseguendoaz aks show -n <cluster name> -g <cluster resource group> -o json --query id
. Se esistono differenze tra gli stati effettivi e desiderati, intraprendere le azioni necessarie per correggere queste discrepanze.
Controllo dello stato di provisioning
Per controllare lo stato del cluster, selezionare Controllo stato provisioning. Viene quindi visualizzato lo stato di provisioning del cluster e del pool di agenti.
Scenario 1: lo stato del cluster non è riuscito
Per risolvere questo problema, ottenere l'operazione che causa l'errore e individuare l'errore. Di seguito sono riportati due errori di operazione comuni che possono causare un cluster non riuscito:
- Creazione del cluster non riuscita
- Aggiornamento del cluster non riuscito
Se lo stato di un cluster creato o aggiornato di recente non è riuscito, usare i metodi seguenti per risolvere l'errore:
Esaminare il log attività per identificare la causa radice dell'errore.
È possibile visualizzare il log attività usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
Il log attività può visualizzare il codice di errore e il messaggio associati all'errore. Per altre informazioni sugli errori specifici, vedere la sezione Risoluzione di base degli errori comuni che causano errori in un cluster/nodo .
Usare la funzionalità Diagnostica e risoluzione dei problemi del servizio Azure Kubernetes per risolvere i problemi comuni.
Nota
Questa funzionalità è disponibile solo nella portale di Azure e nell'interfaccia della riga di comando di Azure.
Visualizzare il log attività per un cluster non riuscito usando il portale di Azure
Per visualizzare i log attività per un cluster non riuscito dal portale di Azure, seguire questa procedura:
Nella portale di Azure passare alla pagina Gruppi di risorse e selezionare il gruppo di risorse che contiene il cluster.
Nella pagina Panoramica selezionare il nome del cluster nell'elenco delle risorse.
Nella pagina del cluster selezionare Log attività dal menu a sinistra.
Nella pagina Log attività è possibile filtrare gli eventi in base a Stato, Intervallo di tempo, Evento avviato da e Categoria di eventi. Ad esempio, è possibile selezionare Non riuscito dall'elenco a discesa Stato per visualizzare solo gli eventi non riusciti.
Per controllare i dettagli di un evento, selezionare il nome dell'evento dall'elenco. Verrà aperto un nuovo riquadro con il riepilogo eventi, le proprietà e i dati JSON. È anche possibile scaricare i dati JSON come file.
Per controllare il codice di errore e il messaggio associati all'evento, scorrere verso il basso fino alla sezione Stato nel riepilogo dell'evento. È anche possibile trovare le informazioni sull'errore nelle sezioni relative alle proprietà e ai dati JSON.
Visualizzare il log attività per un cluster non riuscito usando l'interfaccia della riga di comando di Azure
Se si preferisce usare l'interfaccia della riga di comando di Azure per visualizzare il log attività per un cluster non riuscito, seguire questa procedura:
Installare l'interfaccia della riga di comando di Azure nel computer e accedere con l'account Azure.
Elencare i gruppi di risorse nella sottoscrizione usando il
az group list
comando e trovare il nome del gruppo di risorse che contiene il cluster.Elencare le risorse nel gruppo di risorse usando il
az resource list
comando con il--resource-group
parametro e trovare il nome del cluster.Elencare il log attività del cluster usando il
az monitor activity-log list
comando con i--resource-group
parametri e--resource
. È anche possibile usare i--status
parametri ,--start-time
,--end-time
,--caller
e--filter
per filtrare gli eventi in base a criteri diversi. Ad esempio, è possibile usare--status Failed
per visualizzare solo gli eventi non riusciti.Visualizzare i dettagli di un evento specifico usando il
az monitor activity-log show
comando con i--resource-group
parametri ,--resource
e--event-id
. È possibile trovare l'ID evento dall'output del comando precedente. L'output includerà il riepilogo eventi, le proprietà e i dati JSON. È anche possibile usare il--output
parametro per modificare il formato di output.Per visualizzare il codice di errore e il messaggio associati all'evento, cercare il
statusMessage
campo nell'output del comando. È anche possibile trovare le informazioni sull'errore nelle sezioni relative alle proprietà e ai dati JSON.
Usare la funzionalità Diagnostica e risoluzione dei problemi del servizio Azure Kubernetes per un cluster non riuscito
Nel portale di Azure passare alla risorsa cluster del servizio Azure Kubernetes e selezionare Diagnosticare e risolvere i problemi dal menu a sinistra. Verrà visualizzato un elenco di categorie e scenari che è possibile selezionare per eseguire controlli di diagnostica e ottenere soluzioni consigliate.
Nell'interfaccia della riga di comando di Azure usare il az aks collect
comando con i --name
parametri e --resource-group
per raccogliere dati di diagnostica dai nodi del cluster. È anche possibile usare i --storage-account
parametri e --sas-token
per specificare un account di archiviazione di Azure in cui verranno caricati i dati. L'output includerà un collegamento al pannello Diagnostica e risoluzione dei problemi in cui è possibile visualizzare i risultati e le azioni suggerite.
Nel pannello Diagnosticare e risolvere i problemi è possibile selezionare Problemi del cluster come categoria. Se vengono rilevati problemi, verrà visualizzato un elenco di possibili soluzioni che è possibile seguire per risolverli.
Scenario 2: lo stato del nodo non è riuscito
In rari casi, un'operazione di scollegamento del disco di Azure potrebbe avere esito negativo, lasciando la macchina virtuale del nodo in uno stato di errore.
Per risolvere questo problema, aggiornare manualmente lo stato della macchina virtuale usando uno dei metodi seguenti:
Per un cluster basato su un set di disponibilità, eseguire il comando az vm update seguente:
az vm update --resource-group <resource-group-name> --name <vm-name>
Per un cluster basato su un set di scalabilità di macchine virtuali, eseguire il comando az vmss update-instances seguente:
az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
Scenario 3: Lo stato del pool di nodi non è riuscito
Questo problema può verificarsi quando il set di scalabilità di macchine virtuali o il set di disponibilità che esegue il backup del pool di nodi rileva un errore durante il provisioning, il ridimensionamento o l'aggiornamento. Questo problema può essere dovuto a capacità insufficiente, limiti di quota, problemi di rete, violazioni dei criteri, blocchi di risorse o altri fattori che impediscono l'allocazione o la configurazione corretta della macchina virtuale.
Per risolvere il problema, procedere come segue:
- Controllare lo stato del pool di nodi usando il
az aks nodepool show
comando . Se lo stato di provisioning èFailed
, è possibile visualizzare il messaggio di errore e il codice nell'output. - Controllare lo stato del set di scalabilità di macchine virtuali o del set di disponibilità usando il
az vmss show
comando oaz vm availability-set show
. Se lo stato di provisioning èFailed
, è possibile visualizzare il messaggio di errore e il codice nell'output. - Controllare lo stato della singola macchina virtuale nel pool di nodi usando il
az vmss list-instances
comando oaz vm list
. Se una macchina virtuale è in unoFailed
stato oUnhealthy
, è possibile visualizzare il messaggio di errore e il codice nell'output. - Controllare il log attività e l'impostazione di diagnostica del set di scalabilità di macchine virtuali o del set di disponibilità per verificare se sono presenti eventi o avvisi che indicano la causa dell'errore. È possibile usare il portale di Azure, l'interfaccia della riga di comando di Azure o l'API di Monitoraggio di Azure per accedere al log attività e all'impostazione di diagnostica.
- Controllare la quota e la capacità dell'area e della sottoscrizione in cui viene distribuito il pool di nodi. È possibile usare il
az vm list-usage
comando o il portale di Azure per controllare la quota e la capacità. Se viene raggiunto il limite di quota o capacità, è possibile richiedere un aumento o eliminare alcune risorse inutilizzate. - Controllare le assegnazioni di criteri e ruoli del pool di nodi. È possibile usare i
az policy
comandi eaz role
o il portale di Azure per controllare le definizioni, le assegnazioni, la conformità e le esenzioni dei criteri. È anche possibile controllare le assegnazioni di ruolo e le autorizzazioni del pool di nodi usando ilaz role assignment
comando o il portale di Azure. - Controllare i blocchi delle risorse del pool di nodi. È possibile usare il
az lock
comando o il portale di Azure per controllare il livello di blocco, l'ambito e le note. È anche possibile eliminare o aggiornare il blocco, se necessario.
Altri strumenti di registrazione e diagnostica
Se i metodi di risoluzione dei problemi precedenti non consentono di risolvere il problema, è possibile usare gli strumenti di registrazione e diagnostica seguenti per raccogliere altre informazioni e identificare la causa radice:
Monitoraggio di Azure per i contenitori:
Questo servizio raccoglie e analizza metriche e log dai cluster del servizio Azure Kubernetes e dai nodi. Monitoraggio di Azure per i contenitori può monitorare l'integrità, le prestazioni e la disponibilità del cluster e dei nodi. È anche possibile usarlo per visualizzare i log dei contenitori, i log kubelet e i log di diagnostica di avvio dei nodi.
Periscopio del servizio Azure Kubernetes
Questo strumento raccoglie i log di nodi e pod, le informazioni di rete e la configurazione del cluster da un cluster del servizio Azure Kubernetes e li carica in un account di archiviazione di Azure. Questo strumento consente di risolvere i problemi comuni del cluster, ad esempio la risoluzione DNS, la connettività di rete e lo stato del nodo. È anche possibile usarlo per generare una richiesta di supporto con i log raccolti collegati.
Diagnostica del servizio Azure Kubernetes
Questo strumento esegue una serie di controlli sui cluster del servizio Azure Kubernetes e sui nodi e fornisce raccomandazioni e passaggi di correzione per i problemi comuni. Questo strumento consente di risolvere i problemi relativi alla creazione, all'aggiornamento, al ridimensionamento, alla rete, all'archiviazione e alla sicurezza del cluster. È anche possibile usarlo per generare una richiesta di supporto con i risultati della diagnostica collegati.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per