Condividi tramite


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 kubectlad 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:

  1. accertarsi che il cluster OpenShift soddisfi i prerequisiti per la versione: 4.5.41+ o 4.6.35+ o 4.7.18+.

  2. 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:

  1. Esegui questo comando:

    kubectl get pods -n azure-arc
    
  2. Controllare se i clusterconnect-agent o i pod config-agent indicano crashloopbackoff 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
    
  3. 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.

  4. Se le clusterconnect-agent e i pod config-agent sono in esecuzione, ma il pod kube-aad-proxy non è presente, controllare i criteri di sicurezza dei pod. Questo pod usa l'account del servizio azure-arc-kube-aad-proxy-sa, che non dispone delle autorizzazioni di amministratore, ma richiede l'autorizzazione per montare il percorso host.

  5. Se il pod kube-aad-proxy è bloccato nello stato ContainerCreating, 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:

  1. 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
    
  2. 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.

Passaggi successivi