Risoluzione dei problemi di base relativi alla creazione del cluster del servizio Azure Kubernetes

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

Prerequisiti

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

Quando si creano 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 console Bash:

$ az aks create --resource-group myResourceGroup \
> --name MyManagedCluster \
> --load-balancer-sku standard \
> --vnet-subnet-id /subscriptions/01234567-89ab-cdef-0123-456789abcdef/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS

It is highly recommended to use USER assigned identity (option --assign-identity) when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y

(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Code: ControlPlaneAddOnsNotReady

Message: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Questi errori contengono spesso descrizioni dettagliate degli errori durante la creazione 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 Crea o Aggiorna cluster gestito. 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. Verranno inoltre visualizzate voci di sottooperazione per la creazione dei componenti del cluster, ad esempio i nomi delle operazioni seguenti:

  • Creare o aggiornare una tabella di route
  • Creare o aggiornare un gruppo di sicurezza di rete
  • Aggiornare la creazione di identità assegnate dall'utente
  • Creare o aggiornare Load Balancer
  • Creare o aggiornare l'indirizzo IP pubblico
  • Creare un'assegnazione di ruolo
  • Aggiornare il gruppo di risorse

In queste voci di sottooperazione il valore Status è Succeeded e il campo Event initiated by è impostato su AzureContainerService.

Cosa succede se invece si è verificato un errore? In tal caso, il campo Stato dell'operazione Crea o Aggiorna cluster gestito mostra 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 delle 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.

Visualizzare informazioni dettagliate sul cluster

Il cluster è stato creato nel portale di Azure ed è visibile? Se questo è vero, è possibile generare informazioni dettagliate sul cluster che consentono di risolvere i problemi. 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 in 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 di 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à all'interno dell'elenco di risorse per il gruppo di risorse. Potrebbe avere un nome simile a aks-nodepool1-12345678-vmss e avrebbe 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 nel 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 --:

Con queste informazioni, è possibile concludere che le macchine virtuali nel set di scalabilità non sono riuscite e lo stato di uscita è stato generato 50.

Nota

Se la distribuzione del cluster non ha raggiunto il punto in cui sono state create queste risorse, potrebbe non essere possibile esaminare il gruppo di risorse cluster gestito nel portale di Azure.

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.