Risolvere i problemi della piattaforma per i cluster Kubernetes abilitati per Azure Arc
Questo documento fornisce guide alla risoluzione dei problemi relativi alla connettività, alle autorizzazioni e agli agenti di Kubernetes abilitati per Azure Arc. Fornisce anche guide alla risoluzione dei problemi per Azure GitOps, che possono essere usate nei cluster Kubernetes abilitati per Azure Arc o servizio Azure Kubernetes (AKS).
Per informazioni sulla risoluzione dei problemi relativi alle estensioni, ad esempio GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, vedere Risolvere i problemi di estensione per i cluster Kubernetes abilitati per Azure Arc.
Interfaccia della riga di comando di Azure
Prima di usare az connectedk8s
i comandi o az k8s-configuration
dell'interfaccia della riga di comando, assicurarsi che l'interfaccia della riga di comando di Azure sia impostata per funzionare con la sottoscrizione di Azure corretta.
az account set --subscription 'subscriptionId'
az account show
Agenti di Azure Arc
Tutti gli agenti per Kubernetes abilitati per Azure Arc vengono distribuiti come pod nello spazio dei azure-arc
nomi . Tutti i pod devono essere in esecuzione e superare i controlli di integrità.
Prima di tutto, verificare la versione del grafico Helm di Azure Arc:
$ helm --namespace default status azure-arc
NAME: azure-arc
LAST DEPLOYED: Fri Apr 3 11:13:10 2020
NAMESPACE: default
STATUS: deployed
REVISION: 5
TEST SUITE: None
Se la versione helm chart non viene trovata o mancante, provare a connettere di nuovo il cluster ad Azure Arc .
Se la versione di Helm Chart è presente con STATUS: deployed
, controllare lo stato degli agenti usando kubectl
:
$ kubectl -n azure-arc get deployments,pods
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/cluster-metadata-operator 1/1 1 1 3d19h
deployment.apps/clusterconnect-agent 1/1 1 1 3d19h
deployment.apps/clusteridentityoperator 1/1 1 1 3d19h
deployment.apps/config-agent 1/1 1 1 3d19h
deployment.apps/controller-manager 1/1 1 1 3d19h
deployment.apps/extension-events-collector 1/1 1 1 3d19h
deployment.apps/extension-manager 1/1 1 1 3d19h
deployment.apps/flux-logs-agent 1/1 1 1 3d19h
deployment.apps/kube-aad-proxy 1/1 1 1 3d19h
deployment.apps/metrics-agent 1/1 1 1 3d19h
deployment.apps/resource-sync-agent 1/1 1 1 3d19h
NAME READY STATUS RESTARTS AGE
pod/cluster-metadata-operator-74747b975-9phtz 2/2 Running 0 3d19h
pod/clusterconnect-agent-cf4c7849c-88fmf 3/3 Running 0 3d19h
pod/clusteridentityoperator-79bdfd945f-pt2rv 2/2 Running 0 3d19h
pod/config-agent-67bcb94b7c-d67t8 1/2 Running 0 3d19h
pod/controller-manager-559dd48b64-v6rmk 2/2 Running 0 3d19h
pod/extension-events-collector-85f4fbff69-55zmt 2/2 Running 0 3d19h
pod/extension-manager-7c7668446b-69gps 3/3 Running 0 3d19h
pod/flux-logs-agent-fc7c6c959-vgqvm 1/1 Running 0 3d19h
pod/kube-aad-proxy-84d668c44b-j457m 2/2 Running 0 3d19h
pod/metrics-agent-58fb8554df-5ll67 2/2 Running 0 3d19h
pod/resource-sync-agent-dbf5db848-c9lg8 2/2 Running 0 3d19h
Tutti i pod devono essere visualizzati STATUS
come Running
con 3/3
o 2/2
sotto la READY
colonna. Recuperare i log e descrivere i pod che restituiscono un Error
oggetto o CrashLoopBackOff
. Se uno stato dei pod è bloccato Pending
, potrebbero esserci risorse insufficienti nei nodi del cluster. La scalabilità verticale del cluster può ottenere questi pod per passare allo Running
stato.
Errore di timeout del servizio/errore di provisioning delle risorse
Se vengono visualizzati questi errori, controllare lo stato di Azure per verificare se sono presenti eventi attivi che influiscono sullo stato del servizio Kubernetes abilitato per Azure Arc. In tal caso, attendere che l'evento del servizio sia stato risolto, quindi riprovare a eseguire l'onboarding dopo l'eliminazione della risorsa cluster connessa esistente. Se non sono presenti eventi di servizio e si continuano a riscontrare problemi durante l'onboarding, aprire un ticket di supporto in modo da poter analizzare il problema.
Errore di attestazioni di eccedenza
Se si riceve un'attestazione di eccedenza, assicurarsi che l'entità servizio non faccia parte di più di 200 gruppi di Microsoft Entra. In questo caso, è necessario creare e usare un'altra entità servizio che non è membro di più di 200 gruppi o rimuovere l'entità servizio originale da alcuni dei relativi gruppi e riprovare.
Un'attestazione di eccedenza può verificarsi anche se è stato configurato un ambiente proxy in uscita senza consentire l'endpoint https://<region>.obo.arc.azure.com:8084/
per il traffico in uscita.
Se nessuno di questi si applica, aprire una richiesta di supporto in modo da poter esaminare il problema.
Problemi durante la connessione dei cluster Kubernetes ad Azure Arc
Connessione i cluster ad Azure Arc richiedono l'accesso a una sottoscrizione di Azure e cluster-admin
l'accesso a un cluster di destinazione. Se non è possibile raggiungere il cluster o se si dispone di autorizzazioni insufficienti, la connessione del cluster ad Azure Arc avrà esito negativo. Assicurarsi di aver soddisfatto tutti i prerequisiti per la connessione di un cluster.
Suggerimento
Per una guida visiva alla risoluzione dei problemi di connessione, vedere Diagnosticare i problemi di connessione per i cluster Kubernetes abilitati per Arc.
Problemi di risoluzione DNS
Per informazioni sulla risoluzione dei problemi relativi alla risoluzione DNS nel cluster, vedere Debug della risoluzione DNS.
Problemi di connettività di rete in uscita
I problemi di connettività di rete in uscita dal cluster possono verificarsi per diversi motivi. Verificare prima di tutto che siano stati soddisfatti tutti i requisiti di rete.
Se si verificano problemi di connettività e il cluster si trova dietro un server proxy in uscita, assicurarsi di aver passato i parametri proxy durante l'onboarding del cluster e che il proxy sia configurato correttamente. Per altre informazioni, vedere Connessione uso di un server proxy in uscita.
È possibile che venga visualizzato un errore simile al seguente:
An exception has occurred while trying to execute the cluster diagnostic checks in the cluster. Exception: Unable to pull cluster-diagnostic-checks helm chart from the registry 'mcr.microsoft.com/azurearck8s/helmchart/stable/clusterdiagnosticchecks:0.1.2': Error: failed to do request: Head "https://mcr.microsoft.com/v2/azurearck8s/helmchart/stable/clusterdiagnosticchecks/manifests/0.1.2": dial tcp xx.xx.xx.219:443: i/o timeout
Questo errore si verifica quando l'endpoint https://k8connecthelm.azureedge.net
è bloccato. Assicurarsi che la rete consenta la connettività a questo endpoint e soddisfi tutti gli altri requisiti di rete.
Impossibile recuperare il certificato MSI
I problemi di recupero del certificato MSI sono in genere dovuti a problemi di rete. Verificare che tutti i requisiti di rete siano stati soddisfatti, quindi riprovare.
Autorizzazioni cluster insufficienti
Se il file kubeconfig fornito non dispone di autorizzazioni sufficienti per installare gli agenti di Azure Arc, il comando dell'interfaccia della riga di comando di Azure restituisce un errore: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope
Per risolvere questo problema, assicurarsi che all'utente che si connette il cluster ad Azure Arc sia assegnato il cluster-admin
ruolo.
Non è possibile connettere un cluster OpenShift ad Azure Arc
Se az connectedk8s connect
si verifica un timeout e si verifica un errore durante la connessione di un cluster OpenShift ad Azure Arc:
Assicurarsi che il cluster OpenShift soddisfi i prerequisiti della versione: 4.5.41+ o 4.6.35+ o 4.7.18+.
Prima di eseguire
az connectedk8s connnect
, eseguire questo comando nel cluster:oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
Timeout di installazione
Connessione un cluster Kubernetes con Kubernetes abilitato per Azure Arc richiede l'installazione degli agenti di Azure Arc nel cluster. Se il cluster è in esecuzione su una connessione Internet lenta, il pull dell'immagine del contenitore per gli agenti potrebbe richiedere più tempo rispetto ai timeout dell'interfaccia della riga di comando di Azure.
Errore di timeout Helm
È possibile che venga visualizzato l'errore Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition
. Per risolvere questo problema, tentare di procedere come segue:
Esegui questo comando:
kubectl get pods -n azure-arc
Controllare se o
clusterconnect-agent
iconfig-agent
pod mostranocrashloopbackoff
o se non tutti i contenitori sono in esecuzione:NAME READY STATUS RESTARTS AGE cluster-metadata-operator-664bc5f4d-chgkl 2/2 Running 0 4m14s clusterconnect-agent-7cb8b565c7-wklsh 2/3 CrashLoopBackOff 0 1m15s clusteridentityoperator-76d645d8bf-5qx5c 2/2 Running 0 4m15s config-agent-65d5df564f-lffqm 1/2 CrashLoopBackOff 0 1m14s
azure-identity-certificate
Se non è presente, l'identità gestita assegnata dal sistema non è stata installata.kubectl get secret -n azure-arc -o yaml | grep name:
name: azure-identity-certificate
Per risolvere questo problema, provare a eliminare la distribuzione Arc eseguendo il
az connectedk8s delete
comando e reinstallandolo. Se il problema persiste, potrebbe trattarsi di un problema con le impostazioni proxy. In tal caso, provare a connettere il cluster ad Azure Arc tramite un proxy per connettere il cluster ad Arc tramite un proxy. Verificare anche che tutti i prerequisiti di rete siano stati soddisfatti.clusterconnect-agent
Se e iconfig-agent
pod sono in esecuzione, ma ilkube-aad-proxy
pod è mancante, controllare i criteri di sicurezza dei pod. Questo pod usa l'account delazure-arc-kube-aad-proxy-sa
servizio, che non dispone delle autorizzazioni di amministratore, ma richiede l'autorizzazione per montare il percorso host.Se lo stato del
kube-aad-proxy
pod è bloccatoContainerCreating
, verificare se il certificato kube-aad-proxy è stato scaricato nel cluster.kubectl get secret -n azure-arc -o yaml | grep name:
name: kube-aad-proxy-certificate
Se il certificato non è presente, eliminare la distribuzione e riprovare a eseguire l'onboarding usando un nome diverso per il cluster. Se il problema persiste, aprire una richiesta di supporto.
Errore del modulo CryptoHash
Quando si tenta di eseguire l'onboarding dei cluster Kubernetes nella piattaforma Azure Arc, l'ambiente locale (ad esempio, la console client) potrebbe restituire il messaggio di errore seguente:
Cannot load native module 'Crypto.Hash._MD5'
In alcuni casi, i moduli dipendenti non vengono scaricati correttamente quando si aggiungono le estensioni connectedk8s
e k8s-configuration
tramite l'interfaccia della riga di comando di Azure o Azure PowerShell. Per risolvere il problema, rimuovere manualmente e quindi aggiungere le estensioni nell'ambiente locale.
Per rimuovere le estensioni, usare:
az extension remove --name connectedk8s
az extension remove --name k8s-configuration
Per aggiungere le estensioni, usare:
az extension add --name connectedk8s
az extension add --name k8s-configuration
Problemi di connessione del cluster
Se il cluster si trova dietro un proxy o un firewall in uscita, verificare che le connessioni Websocket siano abilitate per *.servicebus.windows.net
, che è necessario specificamente per la funzionalità Cluster Connessione. Assicurarsi inoltre di usare la versione più recente dell'estensione dell'interfaccia della connectedk8s
riga di comando di Azure se si verificano problemi con la connessione del cluster.
Se mancano i clusterconnect-agent
pod e kube-aad-proxy
, è probabile che la funzionalità di connessione del cluster sia disabilitata nel cluster. In questo caso, az connectedk8s proxy
non sarà possibile stabilire una sessione con il cluster e potrebbe essere visualizzato un errore durante la lettura Cannot connect to the hybrid connection because no agent is connected in the target arc resource.
Per risolvere questo errore, abilitare la funzionalità di connessione del cluster nel cluster:
az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP
Per altre informazioni, vedere Usare la connessione al cluster per connettersi in modo sicuro ai cluster Kubernetes abilitati per Azure Arc.
Abilitare percorsi personalizzati usando l'entità servizio
Quando si connette il cluster ad Azure Arc o si abilitano percorsi personalizzati in un cluster esistente, è possibile che venga visualizzato l'avviso seguente:
Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.
Questo avviso si verifica quando si usa un'entità servizio per accedere ad Azure e l'entità servizio non dispone delle autorizzazioni necessarie. Per evitare questo errore, seguire questa procedura:
Accedere all'interfaccia della riga di comando di Azure usando l'account utente. Recuperare l'ID oggetto dell'applicazione Microsoft Entra usato dal servizio Azure Arc:
az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
Accedere all'interfaccia della riga di comando di Azure usando l'entità servizio. Usare il
<objectId>
valore del passaggio precedente per abilitare percorsi personalizzati nel cluster:- Per abilitare percorsi personalizzati durante la connessione del cluster ad Arc, eseguire
az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
- Per abilitare percorsi personalizzati in un cluster Kubernetes abilitato per Azure Arc esistente, eseguire
az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations
- Per abilitare percorsi personalizzati durante la connessione del cluster ad Arc, eseguire
Passaggi successivi
- Ottenere una procedura dettagliata visiva su come diagnosticare i problemi di connessione.
- Visualizzare i suggerimenti per la risoluzione dei problemi relativi alle estensioni del cluster.