Risolvere i problemi di piattaforma per i cluster Kubernetes abilitati per Azure Arc
Questo documento fornisce indicazioni alla risoluzione dei problemi relativi alla connettività, alle autorizzazioni e agli agenti di Kubernetes abilitati per Azure Arc. Inoltre, fornisce indicazioni alla risoluzione dei problemi per Azure GitOps, che possono essere usate nei cluster Kubernetes abilitati per Azure Arc o nel 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 i comandi az connectedk8s
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
Se viene visualizzato un errore, cli.azext_connectedk8s.custom: Failed to download and install kubectl
ad esempio , eseguire az aks install-cli --install-location ~/.azure/kubectl-client/kubectl
prima di riprovare.az connectedk8s connect
Questo comando installa il client kubectl, necessario per il funzionamento del comando.
Agenti 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 di 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 del grafico di Helm non viene trovata o risulta mancante, provare a connettere il cluster ad Azure Arc nuovamente.
Se la versione del grafico di Helm è presente con STATUS: deployed
, verificare lo stato degli agenti utilizzando 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 visualizzare STATUS
come Running
con 3/3
o 2/2
nella colonna READY
. Recuperare i log e descrivere i pod che restituiscono Error
o CrashLoopBackOff
. Se uno dei pod è bloccato in stato Pending
, potrebbero esserci risorse insufficienti nei nodi del cluster. L'aumento delle prestazioni del cluster può determinare la transizione di questi pod allo stato Running
.
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 venga risolto, quindi provare di nuovo 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 una richiesta 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 sia membro di più di 200 gruppi oppure 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 che si possa esaminare il problema.
Problemi riscontrati quando si connettono i cluster Kubernetes ad Azure con Azure Arc
Per la connessione di cluster ad Azure Arc è necessario accedere a una sottoscrizione di Azure e cluster-admin
accedere a un cluster di destinazione. Se non è possibile raggiungere il cluster o disporre di autorizzazioni insufficienti, la connessione del cluster ad Azure Arc avrà esito negativo. Assicurarsi di aver soddisfatto tutti i prerequisiti per la connessione al 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 sui 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 maggiori informazioni, vedere Connettersi usando un server proxy in uscita.
Potrebbe essere 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.
Non è possibile recuperare i certificati MSI.
I problemi di recupero del certificato MSI sono in genere dovuti a problemi di rete. Verificare prima di tutto che siano stati soddisfatti tutti i requisiti di rete, quindi riprovare nuovamente.
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, verificare che all'utente che connette il cluster ad Azure Arc sia assegnato il ruolo cluster-admin
.
Non è possibile connettere un cluster OpenShift ad Azure Arc
Se si verifica un timeout di az connectedk8s connect
e si riscontra un errore durante la connessione di un cluster OpenShift ad Azure Arc:
accertarsi che il cluster OpenShift soddisfi i prerequisiti per la versione: 4.5.41+ o 4.6.35+ o 4.7.18+.
Prima di eseguire questo comando
az connectedk8s connnect
, eseguire questo comando sul cluster:oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
Timeout di installazione
La connessione di un cluster Kubernetes a Kubernetes con abilitazione di 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 dei timeout dell'interfaccia della riga di comando di Azure.
Errore di timeout di Helm
Può essere 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 i
clusterconnect-agent
o i podconfig-agent
indicanocrashloopbackoff
oppure 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
Se il
azure-identity-certificate
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 comando
az connectedk8s delete
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 siano stati soddisfatti tutti i prerequisiti di rete.Se le
clusterconnect-agent
e i podconfig-agent
sono in esecuzione, ma il podkube-aad-proxy
non è presente, controllare i criteri di sicurezza dei pod. Questo pod usa l'account del servizioazure-arc-kube-aad-proxy-sa
, che non dispone delle autorizzazioni di amministratore, ma richiede l'autorizzazione per montare il percorso host.Se il pod
kube-aad-proxy
è bloccato nello statoContainerCreating
, 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 alla connessione del cluster
Se il cluster si trova a ridosso di un proxy o un firewall in uscita, verificare che le connessioni Websocket siano abilitate per *.servicebus.windows.net
, condizione specificamente necessaria per la funzionalità Cluster Connect. Inoltre, assicurarsi di usare la versione più recente dell'estensione dell'interfaccia della riga di comando di Azure connectedk8s
se si verificano problemi con la connessione del cluster.
Se mancano i pod clusterconnect-agent
e kube-aad-proxy
, è probabile che la funzionalità di connessione del cluster sia disabilitata nel cluster. In tal caso, az connectedk8s proxy
non riesce a 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 usata 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 con l'entità servizio. Usare il valore
<objectId>
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 esistente con abilitazione di Azure Arc, 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 di come diagnosticare i problemi di connessione.
- Visualizzare suggerimenti per la risoluzione dei problemi relativi alle estensioni del cluster.