Risoluzione dei problemi di base relativi all'avvio del cluster del servizio Azure Kubernetes

Questo articolo descrive i metodi di risoluzione dei problemi di base da usare se non è possibile avviare correttamente un cluster di Microsoft servizio Azure Kubernetes (servizio Azure Kubernetes).

Prerequisiti

Visualizzare gli errori dall'interfaccia della riga di comando di Azure

Quando si avviano cluster usando l'interfaccia della riga di comando di Azure, gli errori vengono registrati come output se l'operazione ha esito negativo. Ecco come un comando, l'input dell'utente e l'output dell'operazione possono essere visualizzati in una Bash console:

$ az aks start --resource-group myResourceGroup --name MyManagedCluster

(VMExtensionProvisioningError) Unable to establish outbound connection from agents, please see https://video2.skills-academy.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.  
Details: instance 3 has extension error details : {vmssCSE error messages : {vmssCSE exit status=50, output=AGE_SHA=sha-16fd35

Questi errori contengono spesso descrizioni dettagliate degli errori nell'operazione di avvio del cluster e forniscono collegamenti ad articoli che contengono altri dettagli. Inoltre, è possibile usare gli articoli sulla risoluzione dei problemi come riferimento in base all'errore generato da un'operazione dell'interfaccia della riga di comando di Azure.

Visualizzare i dettagli dell'errore nel portale di Azure

Per visualizzare i dettagli sugli errori nel portale di Azure, esaminare il log attività di Azure. Per trovare l'elenco dei log attività nel portale di Azure, eseguire la ricerca nel log attività. In alternativa, selezionare Notifiche (l'icona a forma di campana) e quindi selezionare Altri eventi nel log attività.

L'elenco dei log nella pagina Log attività contiene una voce di riga in cui il valore della colonna Nome operazione è denominato Start Managed Cluster. L'evento corrispondente avviato dal valore della colonna è impostato sul nome dell'account aziendale o dell'istituto di istruzione. Se l'operazione ha esito positivo, il valore della colonna Stato viene visualizzato Accettato.

Screenshot di un pannello del log attività del cluster del servizio Azure Kubernetes che mostra un'operazione di avvio non riuscita.

Cosa succede se invece si è verificato un errore? In tal caso, il campo Start Managed Cluster operation Status (Avvia stato operazione cluster gestito) mostra Failed (Non riuscito). A differenza delle operazioni per creare componenti del cluster, è necessario espandere la voce dell'operazione non riuscita per esaminare le voci di sottooperazione. I nomi di sottooperazione tipici sono azioni di criteri, ad esempio l'azione criteri 'audit' e l'azione 'auditIfNotExists' Policy. Alcune sottooperazioni continueranno a mostrare che hanno avuto esito positivo.

Per analizzare ulteriormente, è possibile selezionare una delle sottooperazioni non riuscite. Verrà aperto un riquadro laterale in modo da poter esaminare altre informazioni sulla sottooperazione. È possibile risolvere i problemi relativi ai valori per campi come Riepilogo, JSON e Cronologia modifiche. Il campo JSON contiene il testo di output per l'errore in formato JSON e in genere fornisce le informazioni più utili.

Screenshot di un riquadro lato sottooperazione di un log attività del cluster del servizio Azure Kubernetes che mostra il motivo per cui un'operazione di avvio non è riuscita.

Visualizzare informazioni dettagliate sul cluster

È anche possibile generare informazioni dettagliate sul cluster per risolvere i problemi tramite il pannello Diagnosticare e risolvere i problemi nel portale di Azure. Per accedere a questa funzionalità, seguire questa procedura:

  1. Nel portale di Azure cercare e selezionare Servizi Kubernetes.

  2. Selezionare il nome del cluster del servizio Azure Kubernetes.

  3. Nel riquadro di spostamento della pagina del cluster del servizio Azure Kubernetes selezionare Diagnosticare e risolvere i problemi.

  4. Nella pagina Diagnosticare e risolvere i problemi selezionare il collegamento Informazioni dettagliate cluster . Lo strumento informazioni dettagliate sul cluster analizza il cluster e quindi fornisce un elenco dei risultati nella sezione Osservazioni e soluzioni della pagina Cluster Insights .

  5. Selezionare uno dei risultati per visualizzare altre informazioni su un problema e le relative possibili soluzioni.

Visualizzare le risorse nel portale di Azure

Nel portale di Azure è possibile visualizzare le risorse create durante la compilazione del cluster. In genere, queste risorse si trovano in un gruppo di risorse che inizia con MC_. Il gruppo di risorse cluster gestito potrebbe avere un nome, ad esempio MC_MyResourceGroup_MyManagedCluster_<location-code>. Tuttavia, il nome potrebbe essere diverso se il cluster è stato creato usando un gruppo di risorse cluster gestito personalizzato.

Per trovare il gruppo di risorse, cercare e selezionare Gruppi di risorse nel portale di Azure e quindi selezionare il gruppo di risorse in cui è stato creato il cluster. L'elenco delle risorse viene visualizzato nella pagina Panoramica del gruppo di risorse.

Avviso

È consigliabile non modificare le risorse nel gruppo di risorse MC_ . Questa azione potrebbe causare effetti indesiderati sul cluster del servizio Azure Kubernetes.

Per esaminare lo stato di un set di scalabilità di macchine virtuali, è possibile selezionare il nome del set di scalabilità nell'elenco delle risorse del gruppo di risorse. Potrebbe avere un nome simile a aks-nodepool1-12345678-vmss e un valore Type di Set di scalabilità di macchine virtuali. Lo stato del set di scalabilità viene visualizzato nella parte superiore della pagina Panoramica del pool di nodi e altri dettagli vengono visualizzati nell'intestazione Essentials. Se la distribuzione non è riuscita, lo stato visualizzato è Non riuscito.

Per tutte le risorse, è possibile esaminare i dettagli per comprendere meglio il motivo per cui la distribuzione non è riuscita. Per un set di scalabilità, è possibile selezionare il testo Stato non riuscito per visualizzare i dettagli sull'errore. I dettagli si trovano in una riga che contiene le colonne Stato, Livello e Codice . Nell'esempio seguente viene illustrata una riga di valori di colonna.

Colonna Valore di esempio
Stato Provisioning non riuscito
Livello Errore
Codice ProvisioningState/failed/VMExtensionProvisioningError

Selezionare la riga per visualizzare il campo Messaggio . Questo contiene ancora più informazioni su tale errore. Ad esempio, il campo Messaggio per la riga di esempio inizia con il testo seguente:

La macchina virtuale ha segnalato un errore durante l'elaborazione dell'estensione 'vmssCSE'. Messaggio di errore: "Enable failed: failed to execute command: command terminated with exit status=50 [stdout] [stderr] 0 0 0 --: Armed with this information, you can conclude che le macchine virtuali nel set di scalabilità non sono riuscite e ha generato lo stato di uscita 50.

Usare i comandi Kubectl

Per un'altra opzione che consente di risolvere gli errori nel cluster, immettere i comandi kubectl per ottenere informazioni dettagliate sulle risorse distribuite nel cluster. Per usare kubectl, accedere prima al cluster del servizio Azure Kubernetes:

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

A seconda del tipo di errore e quando si è verificato, potrebbe non essere possibile accedere al cluster per ottenere altri dettagli. In generale, tuttavia, se il cluster è stato creato e visualizzato nel portale di Azure, dovrebbe essere possibile accedere ed eseguire i comandi kubectl.

Visualizzare i nodi del cluster (nodi kubectl get)

Per ottenere altri dettagli per determinare lo stato dei nodi, visualizzare i nodi del cluster immettendo il comando kubectl get nodes. In questo esempio nessun nodo segnala nel cluster:

$ kubectl get nodes

No resources found

Visualizzare i pod nello spazio dei nomi di sistema (kubectl get pods)

Anche la visualizzazione dei pod nello spazio dei nomi kube-system è un buon modo per risolvere il problema. Questo metodo consente di visualizzare lo stato dei pod di sistema Kubernetes. In questo esempio viene immesso il kubectl get pods comando :

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

Descrivere lo stato di un pod (kubectl describe pod)

Descrivendo lo stato dei pod, è possibile visualizzare i dettagli di configurazione e tutti gli eventi che si sono verificati nei pod. Eseguire il comando kubectl describe pod:

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

Nell'output del comando è possibile notare che il pod non può essere distribuito in un nodo perché non sono disponibili nodi.

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.