Platformproblemen oplossen voor Kubernetes-clusters met Azure Arc

Dit document bevat handleidingen voor het oplossen van problemen met Kubernetes-connectiviteit, machtigingen en agents met Azure Arc. Het bevat ook handleidingen voor probleemoplossing voor Azure GitOps, die kunnen worden gebruikt in Azure Arc-kubernetes- of Azure Kubernetes Service-clusters (AKS).

Voor hulp bij het oplossen van problemen met betrekking tot extensies, zoals GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, raadpleegt u Extensieproblemen oplossen voor Kubernetes-clusters met Azure Arc.

Azure-CLI

Voordat u az connectedk8s cli- of az k8s-configuration CLI-opdrachten gebruikt, moet u ervoor zorgen dat Azure CLI is ingesteld om te werken met het juiste Azure-abonnement.

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

Azure Arc-agents

Alle agents voor Kubernetes met Azure Arc worden geïmplementeerd als pods in de azure-arc naamruimte. Alle pods moeten worden uitgevoerd en hun statuscontroles worden doorgegeven.

Controleer eerst de azure Arc Helm Chart-release:

$ 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

Als de Helm-grafiekrelease niet wordt gevonden of ontbreekt, probeert u het cluster opnieuw te verbinden met Azure Arc .

Als de Helm-grafiekrelease aanwezig is, STATUS: deployedcontroleert u de status van de agents met behulp van 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

Alle pods moeten worden weergegeven STATUS als Running bij 3/3 of 2/2 onder de READY kolom. Haal logboeken op en beschrijf de pods die een Error of CrashLoopBackOff. Als er pods vastzitten in Pending de status, zijn er mogelijk onvoldoende resources op clusterknooppunten. Als u uw cluster omhoog schaalt, kunnen deze pods worden overgestapt op Running status.

Resource-inrichting mislukt/time-outfout voor service

Als u deze fouten ziet, controleert u de Azure-status om te zien of er actieve gebeurtenissen zijn die van invloed zijn op de status van de Kubernetes-service met Azure Arc. Als dat het geval is, wacht u totdat de servicegebeurtenis is opgelost en probeert u opnieuw te onboarden nadat u de bestaande verbonden clusterresource hebt verwijderd. Als er geen service-gebeurtenissen zijn en u problemen blijft ondervinden tijdens het onboarden, opent u een ondersteuningsticket zodat we het probleem kunnen onderzoeken.

Fout over overschrijdingsclaims

Als u een overschrijdingsclaim ontvangt, moet u ervoor zorgen dat uw service-principal geen deel uitmaakt van meer dan 200 Microsoft Entra-groepen. Als dit het geval is, moet u een andere service-principal maken en gebruiken die geen lid is van meer dan 200 groepen, of de oorspronkelijke service-principal uit sommige groepen verwijderen en het opnieuw proberen.

Er kan ook een overschrijdingsclaim optreden als u een uitgaande proxyomgeving hebt geconfigureerd zonder het eindpunt https://<region>.obo.arc.azure.com:8084/ voor uitgaand verkeer toe te staan.

Als geen van deze aanvragen van toepassing is, opent u een ondersteuningsaanvraag zodat we het probleem kunnen onderzoeken.

Problemen bij het verbinden van Kubernetes-clusters met Azure Arc

Verbinding maken clusters naar Azure Arc moeten toegang hebben tot een Azure-abonnement en cluster-admin toegang tot een doelcluster. Als u het cluster niet kunt bereiken of als u onvoldoende machtigingen hebt, mislukt het verbinden van het cluster met Azure Arc. Zorg ervoor dat u aan alle vereisten hebt voldaan om een cluster te verbinden.

Tip

Zie Verbindingsproblemen vaststellen voor Kubernetes-clusters met Arc voor een visuele handleiding voor het oplossen van verbindingsproblemen.

Problemen met DNS-resolutie

Ga naar Foutopsporing van DNS-resolutie voor hulp bij het oplossen van problemen met DNS-omzetting in uw cluster.

Problemen met uitgaande netwerkconnectiviteit

Problemen met uitgaande netwerkconnectiviteit van het cluster kunnen om verschillende redenen optreden. Controleer eerst of aan alle netwerkvereisten is voldaan.

Als u verbindingsproblemen ondervindt en uw cluster zich achter een uitgaande proxyserver bevindt, controleert u of u proxyparameters hebt doorgegeven tijdens de onboarding van uw cluster en of de proxy correct is geconfigureerd. Zie Verbinding maken een uitgaande proxyserver gebruiken voor meer informatie.

Mogelijk ziet u een fout die vergelijkbaar is met de volgende:

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

Deze fout treedt op wanneer het https://k8connecthelm.azureedge.net eindpunt wordt geblokkeerd. Zorg ervoor dat uw netwerk connectiviteit met dit eindpunt toestaat en voldoet aan alle andere netwerkvereisten.

Kan MSI-certificaat niet ophalen

Problemen met het ophalen van het MSI-certificaat worden meestal veroorzaakt door netwerkproblemen. Controleer of aan alle netwerkvereisten is voldaan en probeer het opnieuw.

Onvoldoende clustermachtigingen

Als het opgegeven kubeconfig-bestand niet over voldoende machtigingen beschikt om de Azure Arc-agents te installeren, retourneert de Azure CLI-opdracht een fout: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

U kunt dit probleem oplossen door ervoor te zorgen dat de gebruiker die het cluster verbindt met Azure Arc de cluster-admin rol heeft toegewezen.

Kan OpenShift-cluster niet verbinden met Azure Arc

Als az connectedk8s connect er een time-out optreedt en mislukt bij het verbinden van een OpenShift-cluster met Azure Arc:

  1. Zorg ervoor dat het OpenShift-cluster voldoet aan de versievereisten: 4.5.41+ of 4.6.35+ of 4.7.18+.

  2. Voordat u deze opdracht uitvoert az connectedk8s connnect, voert u deze opdracht uit op het cluster:

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

Time-outs voor installatie

Verbinding maken een Kubernetes-cluster naar Kubernetes met Azure Arc vereist installatie van Azure Arc-agents in het cluster. Als het cluster wordt uitgevoerd via een trage internetverbinding, kan het ophalen van de containerinstallatiekopie voor agents langer duren dan de Time-outs van de Azure CLI.

Helm-time-outfout

Mogelijk ziet u de fout Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. Volg deze stappen om dit probleem op te lossen:

  1. Voer de volgende opdracht uit:

    kubectl get pods -n azure-arc
    
  2. Controleer of de clusterconnect-agentconfig-agent pods worden weergegeven crashloopbackoffof als niet alle containers worden uitgevoerd:

    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. Als de azure-identity-certificate identiteit niet aanwezig is, is de door het systeem toegewezen beheerde identiteit niet geïnstalleerd.

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

    U kunt dit probleem oplossen door de Arc-implementatie te verwijderen door de az connectedk8s delete opdracht uit te voeren en opnieuw te installeren. Als het probleem zich blijft voordoen, kan het een probleem zijn met uw proxy-instellingen. Probeer in dat geval uw cluster te verbinden met Azure Arc via een proxy om uw cluster te verbinden met Arc via een proxy. Controleer ook of aan alle netwerkvereisten is voldaan.

  4. Als de clusterconnect-agentconfig-agent pods actief zijn, maar de kube-aad-proxy pod ontbreekt, controleert u het beveiligingsbeleid voor uw pods. Deze pod maakt gebruik van het azure-arc-kube-aad-proxy-sa serviceaccount, dat geen beheerdersmachtigingen heeft, maar vereist wel de machtiging om het hostpad te koppelen.

  5. Als de kube-aad-proxy pod de status vastloopt ContainerCreating , controleert u of het kube-aad-proxycertificaat is gedownload naar het cluster.

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

    Als het certificaat ontbreekt, verwijdert u de implementatie en probeert u opnieuw te onboarden met een andere naam voor het cluster. Als het probleem zich blijft voordoen, opent u een ondersteuningsaanvraag.

Fout in cryptoHash-module

Wanneer u Kubernetes-clusters probeert te onboarden naar het Azure Arc-platform, kan de lokale omgeving (bijvoorbeeld uw clientconsole) het volgende foutbericht retourneren:

Cannot load native module 'Crypto.Hash._MD5'

Soms kunnen afhankelijke modules niet worden gedownload bij het toevoegen van de extensies connectedk8s en k8s-configuration via Azure CLI of Azure PowerShell. U kunt dit probleem oplossen door de extensies handmatig te verwijderen en vervolgens toe te voegen in de lokale omgeving.

Als u de extensies wilt verwijderen, gebruikt u:

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

Als u de extensies wilt toevoegen, gebruikt u:

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

Problemen met clusterverbinding

Als uw cluster zich achter een uitgaande proxy of firewall bevindt, controleert u of websocket-verbindingen zijn ingeschakeld*.servicebus.windows.net. Dit is specifiek vereist voor de functie Cluster Verbinding maken. Zorg er bovendien voor dat u de nieuwste versie van de connectedk8s Azure CLI-extensie gebruikt als u problemen ondervindt met het gebruik van clusterverbinding.

Als de clusterconnect-agent pods kube-aad-proxy ontbreken, is de functie voor clusterverbinding waarschijnlijk uitgeschakeld op het cluster. Als dit het probleem is, az connectedk8s proxy mislukt het tot stand brengen van een sessie met het cluster en wordt er mogelijk een fout gelezen Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

U kunt deze fout oplossen door de functie voor clusterverbinding in te schakelen op uw cluster:

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

Zie Clusterverbinding gebruiken om veilig verbinding te maken met Kubernetes-clusters met Azure Arc voor meer informatie.

Aangepaste locaties inschakelen met behulp van service-principal

Wanneer u uw cluster verbindt met Azure Arc of aangepaste locaties inschakelt op een bestaand cluster, ziet u mogelijk de volgende waarschuwing:

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

Deze waarschuwing treedt op wanneer u een service-principal gebruikt om u aan te melden bij Azure en de service-principal niet over de benodigde machtigingen beschikt. Volg deze stappen om deze fout te voorkomen:

  1. Meld u aan bij Azure CLI met uw gebruikersaccount. Haal de object-id op van de Microsoft Entra-toepassing die wordt gebruikt door de Azure Arc-service:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. Meld u aan bij Azure CLI met behulp van de service-principal. Gebruik de <objectId> waarde uit de vorige stap om aangepaste locaties op het cluster in te schakelen:

    • Als u aangepaste locaties wilt inschakelen bij het verbinden van het cluster met Arc, voert u de opdracht uit az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • Als u aangepaste locaties wilt inschakelen op een bestaand Kubernetes-cluster met Azure Arc, voert u az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

Volgende stappen