Risoluzione dei problemi di base della 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
Interfaccia della riga di comando di Azure (versione 2.0.59 o successiva).
Lo strumento kubectl kubernetes. Per installare kubectl usando l'interfaccia della riga di comando di Azure, eseguire il comando az aks install-cli .
Visualizzare gli errori dall'interfaccia della riga di comando di Azure
Se l'operazione non riesce quando si tenta di creare cluster usando l'interfaccia della riga di comando di Azure, l'output visualizza le informazioni sull'errore. Ecco un esempio di comando e output dell'interfaccia della riga di comando di Azure:
# Create a cluster specifying subnet
az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS
Esempio di output:
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
È possibile identificare il codice di errore e il messaggio di errore dall'output. In questo caso, sono:
- Codice errore:
ControlPlaneAddOnsNotReady
- Messaggio di errore:
Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj
.
Queste descrizioni contengono spesso dettagli su ciò che è andato storto nella creazione del cluster e si collegano ad articoli che contengono ancora più dettagli. È anche possibile usare gli articoli sulla risoluzione dei problemi come riferimento, in base agli errori generati dall'operazione dell'interfaccia della riga di comando di Azure.
Visualizzare i dettagli dell'errore nel portale di Azure
Per analizzare gli errori di creazione del cluster del servizio Azure Kubernetes nel portale di Azure, aprire il log attività. È possibile filtrare i risultati in base alle proprie esigenze. A tale scopo, selezionare Aggiungi filtro per aggiungere altre proprietà al filtro.
Nella pagina Log attività individuare le voci di log in cui la colonna Nome operazione mostra Crea o Aggiorna cluster gestito.
La colonna Evento avviato da mostra l'utente che ha eseguito l'operazione, che può essere un account aziendale, un account dell'istituto di istruzione o un'identità gestita di Azure.
Se l'operazione ha esito positivo, il valore della colonna Stato è Accettato. Verranno visualizzate anche le voci di sottooperazione per la creazione dei componenti del cluster, ad esempio i nomi delle operazioni seguenti:
- Creare o aggiornare la tabella di route
- Creare o aggiornare un gruppo di sicurezza di rete
- Aggiornare la creazione dell'identità assegnata dall'utente
- Creare o aggiornare il servizio di bilanciamento del carico
- Creare o aggiornare l'indirizzo IP pubblico
- Creare un'assegnazione di ruolo
- Aggiornare il gruppo di risorse
In queste voci di sottooperazione il valore Di stato è Succeeded e il campo Event avviato da è impostato su AzureContainerService.
Cosa accade se invece si è verificato un errore? In tal caso, il valore status è Failed. A differenza delle operazioni per creare componenti del cluster, è necessario espandere le voci di sottooperazione non riuscite per esaminarle. I nomi di sottooperazione tipici sono azioni dei criteri, ad esempio l'azione dei criteri 'audit' e 'auditIfNotExists'. Non tutte le sottooperazioni hanno necessariamente esito negativo insieme. Ci si può aspettare di vedere alcuni di loro successo.
Selezionare una delle sottooperazioni non riuscite per esaminarla ulteriormente. Selezionare le schede Riepilogo, JSON e Cronologia modifiche per risolvere il problema. La scheda JSON contiene il testo di output per l'errore in formato JSON e in genere fornisce le informazioni più utili.
Ecco un esempio del log dettagliato in formato JSON:
{
"status": {
"value": "Failed",
"localizedValue": "Failed"
},
"subStatus": {
"value": "",
"localizedValue": ""
},
"submissionTimestamp": "2024-08-30T10:06:07Z",
"subscriptionId": "<subscriptionId>",
"tenantId": "<tenantId>",
"properties": {
"statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}
Visualizzare le informazioni dettagliate del cluster
Il cluster è stato creato nella portale di Azure ed è visibile? In questo caso, è possibile generare informazioni dettagliate sul cluster che consentiranno di risolvere i problemi. Per accedere a questa funzionalità, seguire questa procedura:
Nella portale di Azure cercare e selezionare Servizi Kubernetes.
Selezionare il nome del cluster del servizio Azure Kubernetes.
Nel riquadro di spostamento della pagina del cluster del servizio Azure Kubernetes selezionare Diagnostica e risoluzione dei problemi.
Nella pagina Diagnostica e risoluzione dei problemi selezionare il collegamento Informazioni dettagliate cluster. Lo strumento informazioni dettagliate cluster analizza il cluster e quindi fornisce un elenco dei risultati nella sezione Osservazioni e soluzioni della pagina Informazioni dettagliate cluster.
Selezionare uno dei risultati per visualizzare altre informazioni su un problema e le possibili soluzioni.
Visualizzare le risorse nel portale di Azure
Nella portale di Azure potrebbe essere necessario visualizzare le risorse create al momento della compilazione del cluster. In genere, queste risorse si trovano in un gruppo di risorse il cui nome inizia in MC_. Il gruppo di risorse del cluster gestito potrebbe avere un nome, ad esempio MC_MyResourceGroup_MyManagedCluster_<codice> di percorso. Tuttavia, il nome può essere diverso se il cluster è stato compilato usando un gruppo di risorse cluster gestito personalizzato.
Per trovare il gruppo di risorse, cercare e selezionare Gruppi di risorse nella 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 influire negativamente 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 per il gruppo di risorse. Potrebbe avere un valore Name simile a aks-nodepool1-12345678-vmss e un valore Type del 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 sono visualizzati nell'intestazione Informazioni di base. 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 contenente le colonne Status, Level e Code . 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 . Contiene altre informazioni sull'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 terminate 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 hanno generato lo stato di uscita 50.
Note
Se la distribuzione del cluster non ha raggiunto il punto in cui queste risorse sarebbero state create, potrebbe non essere possibile esaminare il gruppo di risorse del cluster gestito nella portale di Azure.
Usare i comandi Kubectl
Per un'altra opzione per risolvere gli errori nel cluster, usare i comandi kubectl per ottenere informazioni dettagliate sulle risorse distribuite nel cluster. A tale scopo, accedere prima al cluster del servizio Azure Kubernetes:
az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster
A seconda del tipo di errore e del momento in cui si è verificato, potrebbe non essere possibile accedere al cluster per ottenere altri dettagli. Tuttavia, se il cluster è stato creato e visualizzato nella portale di Azure, dovrebbe essere possibile accedere ed eseguire i comandi kubectl.
Visualizzare i nodi del cluster (kubectl get nodes)
Per determinare lo stato dei nodi del cluster, visualizzare i nodi eseguendo il kubectl get nodes
comando . In questo esempio non viene segnalato alcun nodo nel cluster:
$ kubectl get nodes
No resources found
Visualizzare i pod nello spazio dei nomi di sistema (kubectl get pods)
La visualizzazione dei pod nello spazio dei nomi kube-system è anche un buon modo per risolvere il problema. Questo metodo consente di visualizzare lo stato dei pod di sistema Kubernetes. In questo esempio si immette 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 gli eventi che si sono verificati nei pod. Eseguire il comando kubectl describe pods
:
$ 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.