Felsöka plattformsproblem för Azure Arc-aktiverade Kubernetes-kluster

Det här dokumentet innehåller felsökningsguider för problem med Azure Arc-aktiverade Kubernetes-anslutningar, behörigheter och agenter. Den innehåller även felsökningsguider för Azure GitOps, som kan användas i antingen Azure Arc-aktiverade Kubernetes- eller Azure Kubernetes Service-kluster (AKS).

Hjälp med att felsöka problem som rör tillägg, till exempel GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, finns i Felsöka tilläggsproblem för Azure Arc-aktiverade Kubernetes-kluster.

Azure CLI

Innan du använder az connectedk8s eller az k8s-configuration CLI-kommandon kontrollerar du att Azure CLI är inställt på att fungera mot rätt Azure-prenumeration.

az account set --subscription 'subscriptionId'
az account show

Om du ser ett fel, till exempel cli.azext_connectedk8s.custom: Failed to download and install kubectl, kör az aks install-cli --install-location ~/.azure/kubectl-client/kubectl du innan du försöker köra az connectedk8s connect igen. Det här kommandot installerar kubectl-klienten, vilket krävs för att kommandot ska fungera.

Azure Arc-agenter

Alla agenter för Azure Arc-aktiverade Kubernetes distribueras som poddar i azure-arc namnområdet. Alla poddar ska köras och skicka sina hälsokontroller.

Kontrollera först versionen av Azure Arc Helm Chart:

$ 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

Om Helm Chart-versionen inte hittas eller saknas kan du försöka ansluta klustret till Azure Arc igen.

Om Helm Chart-versionen finns med STATUS: deployedkontrollerar du statusen för agenterna med hjälp kubectlav :

$ 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

Alla poddar ska visas STATUS som Running med antingen 3/3 eller 2/2 under READY kolumnen. Hämta loggar och beskriv poddarna som returnerar en Error eller CrashLoopBackOff. Om några poddar har fastnat i Pending tillståndet kanske det inte finns tillräckligt med resurser på klusternoder. Genom att skala upp klustret kan de här poddarna övergå till Running tillstånd.

Resursetablering misslyckades/Tidsgränsfel för tjänsten

Om du ser dessa fel kontrollerar du Azure-statusen för att se om det finns några aktiva händelser som påverkar statusen för Den Azure Arc-aktiverade Kubernetes-tjänsten. I så fall väntar du tills tjänsthändelsen har lösts och försöker sedan registrera igen när du har raderat den befintliga anslutna klusterresursen. Om det inte finns några tjänsthändelser och du fortsätter att stöta på problem när du registrerar dig öppnar du en supportbegäran så att vi kan undersöka problemet.

Fel vid överförbrukningsanspråk

Om du får ett överförbrukningsanspråk kontrollerar du att tjänstens huvudnamn inte ingår i fler än 200 Microsoft Entra-grupper. Om så är fallet måste du skapa och använda ett annat huvudnamn för tjänsten som inte är medlem i fler än 200 grupper, eller ta bort det ursprungliga tjänstens huvudnamn från vissa av dess grupper och försöka igen.

Ett överförbrukningsanspråk kan också inträffa om du har konfigurerat en utgående proxymiljö utan att tillåta slutpunkten https://<region>.obo.arc.azure.com:8084/ för utgående trafik.

Om inget av dessa gäller öppnar du en supportbegäran så att vi kan undersöka problemet.

Problem vid anslutning av Kubernetes-kluster till Azure Arc

För att ansluta kluster till Azure Arc krävs åtkomst till en Azure-prenumeration och cluster-admin åtkomst till ett målkluster. Om du inte kan nå klustret, eller om du inte har tillräckliga behörigheter, misslyckas anslutningen av klustret till Azure Arc. Kontrollera att du har uppfyllt alla förutsättningar för att ansluta ett kluster.

Dricks

En visuell guide för felsökning av anslutningsproblem finns i Diagnostisera anslutningsproblem för Arc-aktiverade Kubernetes-kluster.

DNS-matchningsfel

Mer information om problem som rör DNS-matchning i klustret finns i Felsöka DNS-matchning.

Problem med utgående nätverksanslutning

Problem med utgående nätverksanslutningar från klustret kan uppstå av olika orsaker. Kontrollera först att alla nätverkskrav har uppfyllts.

Om du stöter på anslutningsproblem och klustret ligger bakom en utgående proxyserver kontrollerar du att du har skickat proxyparametrar under registreringen av klustret och att proxyn är korrekt konfigurerad. Mer information finns i Ansluta med en utgående proxyserver.

Du kan se ett fel som liknar följande:

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

Det här felet uppstår när https://k8connecthelm.azureedge.net slutpunkten blockeras. Se till att nätverket tillåter anslutning till den här slutpunkten och uppfyller alla andra nätverkskrav.

Det går inte att hämta MSI-certifikatet

Problem med att hämta MSI-certifikatet beror vanligtvis på nätverksproblem. Kontrollera att alla nätverkskrav har uppfyllts och försök sedan igen.

Otillräckliga klusterbehörigheter

Om den angivna kubeconfig-filen inte har tillräcklig behörighet för att installera Azure Arc-agenterna returnerar Azure CLI-kommandot ett fel: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

Lös problemet genom att se till att användaren som ansluter klustret till Azure Arc har tilldelats cluster-admin rollen.

Det går inte att ansluta ett OpenShift-kluster till Azure Arc

Om az connectedk8s connect tidsgränsen är ute och misslyckas när ett OpenShift-kluster ansluts till Azure Arc:

  1. Kontrollera att OpenShift-klustret uppfyller kraven för versionen: 4.5.41+ eller 4.6.35+ eller 4.7.18+.

  2. Innan du kör az connectedk8s connnectkör du det här kommandot i klustret:

    oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
    

Tidsgränser för installation

För att ansluta ett Kubernetes-kluster till Azure Arc-aktiverade Kubernetes krävs installation av Azure Arc-agenter i klustret. Om klustret körs via en långsam Internetanslutning kan containeravbildningshämtningen för agenter ta längre tid än Azure CLI-tidsgränserna.

Helm-timeoutfel

Du kan se felet Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. Lös problemet genom att pröva följande steg:

  1. Kör följande kommando:

    kubectl get pods -n azure-arc
    
  2. Kontrollera om clusterconnect-agent poddarna eller config-agent visar crashloopbackoff, eller om inte alla containrar körs:

    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. Om den azure-identity-certificate inte finns har den systemtilldelade hanterade identiteten inte installerats.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: azure-identity-certificate
    

    Lös problemet genom att prova att ta bort Arc-distributionen genom att köra az connectedk8s delete kommandot och installera om det. Om problemet kvarstår kan det vara ett problem med proxyinställningarna. I så fall kan du prova att ansluta klustret till Azure Arc via en proxy för att ansluta klustret till Arc via en proxy. Kontrollera också att alla nätverkskrav har uppfyllts .

  4. clusterconnect-agent Om poddarna och config-agent körs, men kube-aad-proxy podden saknas, kontrollerar du poddsäkerhetsprinciperna. Den här podden använder azure-arc-kube-aad-proxy-sa tjänstkontot, som inte har administratörsbehörighet men som kräver behörighet att montera värdsökvägen.

  5. kube-aad-proxy Om podden har fastnat i ContainerCreating tillståndet kontrollerar du om kube-aad-proxy-certifikatet har laddats ned till klustret.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: kube-aad-proxy-certificate
    

    Om certifikatet saknas tar du bort distributionen och försöker registrera igen med ett annat namn för klustret. Om problemet kvarstår öppnar du en supportbegäran.

CryptoHash-modulfel

När du försöker registrera Kubernetes-kluster till Azure Arc-plattformen kan den lokala miljön (till exempel klientkonsolen) returnera följande felmeddelande:

Cannot load native module 'Crypto.Hash._MD5'

Ibland kan beroende moduler inte laddas ned när tilläggen connectedk8s läggs till och k8s-configuration via Azure CLI eller Azure PowerShell. Åtgärda problemet genom att manuellt ta bort och sedan lägga till tilläggen i den lokala miljön.

Om du vill ta bort tilläggen använder du:

az extension remove --name connectedk8s
az extension remove --name k8s-configuration

Om du vill lägga till tilläggen använder du:

az extension add --name connectedk8s
az extension add --name k8s-configuration

Problem med klusteranslutning

Om klustret finns bakom en utgående proxy eller brandvägg kontrollerar du att websocket-anslutningar är aktiverade för *.servicebus.windows.net, vilket krävs specifikt för funktionen Klusteranslutning . Se dessutom till att du använder den senaste versionen av connectedk8s Azure CLI-tillägget om du har problem med att använda klusteranslutning.

clusterconnect-agent Om poddarna och kube-aad-proxy saknas är funktionen för klusteranslutning troligen inaktiverad i klustret. I så fall az connectedk8s proxy misslyckas det med att upprätta en session med klustret, och du kan se ett fel vid läsning Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

Lös det här felet genom att aktivera funktionen för klusteranslutning i klustret:

az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP

Mer information finns i Använda klusteranslutning för att ansluta på ett säkert sätt till Azure Arc-aktiverade Kubernetes-kluster.

Aktivera anpassade platser med tjänstens huvudnamn

När du ansluter klustret till Azure Arc eller aktiverar anpassade platser i ett befintligt kluster kan följande varning visas:

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

Den här varningen inträffar när du använder ett huvudnamn för tjänsten för att logga in på Azure och tjänstens huvudnamn inte har de behörigheter som krävs. Följ dessa steg för att undvika det här felet:

  1. Logga in på Azure CLI med ditt användarkonto. Hämta objekt-ID:t för Microsoft Entra-programmet som används av Azure Arc-tjänsten:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. Logga in på Azure CLI med tjänstens huvudnamn. <objectId> Använd värdet från föregående steg för att aktivera anpassade platser i klustret:

    • Om du vill aktivera anpassade platser när du ansluter klustret till Arc kör du az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • Om du vill aktivera anpassade platser i ett befintligt Azure Arc-aktiverat Kubernetes-kluster kör du az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

Nästa steg