Condividi tramite


Risolvere i problemi servizio Azure Kubernetes cluster o nodi in uno stato di errore

Questo articolo illustra come risolvere i problemi relativi a un cluster o a un nodo del servizio Azure Kubernetes di Microsoft servizio Azure Kubernetes che entra in uno stato di errore.

Cause comuni

Ecco le cause comuni di un cluster o di un pool di nodi non riuscito:

Causa Riferimenti
Errore di provisioning dell'estensione dell'estensione CSE (Custom Script Extension) Risolvere i problemi relativi a nodi non pronti causati da errori CSE
Risorse chiave di Azure non disponibili
Errore di allocazione delle macchine virtuali a causa di nessuna capacità di zona/area
Errore di allocazione della macchina virtuale a causa del superamento della quota di core Errore quota superata
Restrizioni imposte dal cliente
Problemi del carico di lavoro

Risoluzione dei problemi di base degli errori comuni che causano l'esito negativo di un cluster o di un nodo

La tabella seguente illustra alcuni errori comuni che possono causare l'immissione di uno stato di errore in un cluster o di un nodo, le relative descrizioni e i metodi di risoluzione dei problemi di base per risolvere questi errori.

Errore Descrizione Metodo di risoluzione dei problemi
OutboundConnFailVMExtensionError Questo errore indica che l'estensione della macchina virtuale non riesce a installare o aggiornare a causa di una 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/sshhttps://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 e gli eventi del pod 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 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 e il limite dell'indirizzo IP pubblico corrente 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, credito scaduto o violazioni dei criteri.

Risoluzione dei problemi di base di altri possibili problemi che causano l'esito negativo di un cluster o di un nodo

Questa tabella descrive altri possibili problemi che possono causare l'immissione di uno stato di errore di un cluster o di un nodo, delle relative descrizioni e delle 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 maggiori della subnet usando la 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 del 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 sul 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 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 PDB, riconciliare il cluster e quindi aggiungere nuovamente il PDB usando lo strumento da riga di comando kubectl.
Problemi di 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.

Note

  • L'operazione indicata 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, incluso lo stato del cluster e gli stati potenzialmente esterni, ad esempio i contenitori in esecuzione per Kubelet o i servizi di bilanciamento del carico per un provider di servizi cloud. È allineato 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 del cluster del servizio Azure Kubernetes eseguendo az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Se esistono differenze tra gli stati effettivi e desiderati, eseguire le azioni necessarie per correggere queste discrepanze.

Controllo dello stato del 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.

Screenshot che mostra l'opzione 'Provisioning State Check'.

Scenario 1: Il cluster si trova in uno stato di errore

Per risolvere questo problema, ottenere l'operazione che causa l'errore e individuare l'errore. Di seguito sono riportati due errori comuni di operazione che possono causare un cluster non riuscito:

  • Creazione del cluster non riuscita
  • Aggiornamento del cluster non riuscito

Se uno stato di errore 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 dei problemi di base degli errori comuni che causano l'esito negativo di un cluster o di un nodo.

  • Usare la funzionalità Diagnostica e risoluzione dei problemi del servizio Azure Kubernetes per risolvere e risolvere i problemi comuni.

    Note

    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 dalla portale di Azure, seguire questa procedura:

  1. Nella portale di Azure passare alla pagina Gruppi di risorse e selezionare il gruppo di risorse che contiene il cluster.

  2. Nella pagina Panoramica selezionare il nome del cluster nell'elenco delle risorse.

  3. Nella pagina del cluster selezionare Log attività dal menu a sinistra.

  4. Nella pagina Log attività è possibile filtrare gli eventi in base allo stato, all'intervallo di tempo, all'evento avviato da e alla categoria Eventi. Ad esempio, è possibile selezionare Non riuscito nell'elenco a discesa Stato per visualizzare solo gli eventi non riusciti.

    Screenshot che mostra come filtrare gli eventi nella pagina

  5. Per controllare i dettagli di un evento, selezionare il nome dell'evento nell'elenco. Viene aperto un nuovo riquadro con il riepilogo eventi, le proprietà e i dati JSON. È anche possibile scaricare i dati JSON come file.

  6. Per controllare il codice di errore e il messaggio associati all'evento, scorrere verso il basso fino alla sezione Stato nel riepilogo eventi. È anche possibile trovare le informazioni sull'errore nelle sezioni proprietà e 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:

  1. Installare l'interfaccia della riga di comando di Azure nel computer e accedere con l'account Azure.

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

  3. Elencare le risorse nel gruppo di risorse usando il az resource list comando con il --resource-group parametro e trovare il nome del cluster.

  4. 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 --statusparametri , --end-time--start-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.

  5. Visualizzare i dettagli di un evento specifico usando il az monitor activity-log show comando con i --resource-groupparametri , --resourcee --event-id . È possibile trovare l'ID evento dall'output del comando precedente. L'output includerà il riepilogo dell'evento, le proprietà e i dati JSON. È anche possibile usare il --output parametro per modificare il formato di output.

  6. 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 proprietà e dati JSON.

    Screenshot che mostra i dati JSON.

Usare la funzionalità Diagnostica e risoluzione dei problemi del servizio Azure Kubernetes per un cluster non riuscito

Nella portale di Azure passare alla risorsa cluster del servizio Azure Kubernetes e selezionare Diagnostica e risoluzione dei problemi dal menu a sinistra. Verrà visualizzato un elenco di categorie e scenari che è possibile selezionare per eseguire i 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 i dati di diagnostica dai nodi del cluster. È anche possibile usare i --storage-account parametri e --sas-token per specificare un account 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 Diagnostica e risoluzione dei problemi è possibile selezionare Problemi del cluster come categoria. Se vengono rilevati problemi, verrà visualizzato un elenco delle possibili soluzioni che è possibile seguire per risolverli.

Screenshot che mostra le possibili soluzioni nel portale

Scenario 2: Il nodo si trova in uno stato di errore

In rari casi, un'operazione di scollegamento del disco di Azure potrebbe non riuscire parzialmente, 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: il pool di nodi è in uno stato di errore

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 delle risorse o altri fattori che impediscono l'allocazione o la configurazione corretta della macchina virtuale.

Per risolvere questo problema, effettuare le seguenti operazioni:

  1. Controllare lo stato del pool di nodi usando il comando az aks nodepool show. Se lo stato del provisioning è Failed, è possibile visualizzare il messaggio di errore e il codice nell'output.
  2. Controllare lo stato del set di scalabilità di macchine virtuali o del set di disponibilità usando il az vmss show comando o az vm availability-set show . Se lo stato del provisioning è Failed, è possibile visualizzare il messaggio di errore e il codice nell'output.
  3. Controllare lo stato della singola macchina virtuale nel pool di nodi usando il az vmss list-instances comando o az vm list . Se una macchina virtuale è in uno Failed stato o Unhealthy , è possibile visualizzare il messaggio di errore e il codice nell'output.
  4. Controllare il log attività e l'impostazione di diagnostica del set di scalabilità di macchine virtuali o del set di disponibilità per verificare se gli eventi o gli avvisi che indicano la causa dell'errore. È possibile usare l'API portale di Azure, l'interfaccia della riga di comando di Azure o Monitoraggio di Azure per accedere al log attività e all'impostazione di diagnostica.
  5. 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.
  6. Controllare i criteri e le assegnazioni di ruolo del pool di nodi. È possibile usare i az policy comandi e az 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 il az role assignment comando o il portale di Azure.
  7. 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. Se necessario, è anche possibile eliminare o aggiornare il blocco.

Altri strumenti di registrazione e diagnostica

Se i metodi di risoluzione dei problemi precedenti non risolvono 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 le metriche e i log dai cluster del servizio Azure Kubernetes e dai nodi. Monitoraggio di Azure per contenitori può monitorare l'integrità, le prestazioni e la disponibilità dei nodi e del cluster. È anche possibile usarlo per visualizzare i log dei contenitori, i log kubelet e i log di diagnostica di avvio del nodo.

  • Servizio Azure Kubernetes Periscope

    Questo strumento raccoglie i log dei nodi e dei 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 allegati.

  • Diagnostica del servizio Azure Kubernetes

    Questo strumento esegue una serie di controlli nei cluster del servizio Azure Kubernetes e nei nodi e fornisce raccomandazioni e procedure di correzione per i problemi comuni. Questo strumento consente di risolvere i problemi relativi alla creazione del cluster, all'aggiornamento, al ridimensionamento, alla rete, all'archiviazione e alla sicurezza. È anche possibile usarlo per generare una richiesta di supporto con i risultati di diagnostica associati.

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.