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:

  1. Assicurarsi che il cluster OpenShift soddisfi i prerequisiti della versione: 4.5.41+ o 4.6.35+ o 4.7.18+.

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

  1. Esegui questo comando:

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

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

  5. Se lo stato del kube-aad-proxy pod è bloccato 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 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:

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

Passaggi successivi