Sdílet prostřednictvím


Řešení potíží s platformou pro clustery Kubernetes s podporou Azure Arc

Tento dokument obsahuje průvodce odstraňováním potíží s připojením, oprávněními a agenty Kubernetes s podporou Azure Arc. Poskytuje také průvodce odstraňováním potíží pro Azure GitOps, který je možné použít v clusterech Kubernetes s podporou Azure Arc nebo Azure Kubernetes Service (AKS).

Nápovědu k řešení potíží souvisejících s rozšířeními, jako jsou GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, najdete v tématu Řešení potíží s rozšířeními pro clustery Kubernetes s podporou Služby Azure Arc.

Azure CLI

Před použitím az connectedk8s příkazů nebo az k8s-configuration příkazů rozhraní příkazového řádku se ujistěte, že je azure CLI nastavené tak, aby fungovalo se správným předplatným Azure.

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

Pokud se zobrazí například chyba cli.azext_connectedk8s.custom: Failed to download and install kubectl, spusťte az aks install-cli --install-location ~/.azure/kubectl-client/kubectl před opětovným pokusem o spuštění az connectedk8s connect . Tento příkaz nainstaluje klienta kubectl, který je nutný k tomu, aby příkaz fungoval.

Agenti Azure Arc

Všichni agenti pro Kubernetes s podporou Azure Arc se nasazují jako pody v azure-arc oboru názvů. Všechny pody by měly být spuštěné a předávat jejich kontroly stavu.

Nejprve ověřte verzi Chartu Helm služby 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

Pokud se verze Chart Helmu nenašla nebo chybí, zkuste cluster znovu připojit ke službě Azure Arc .

Pokud je k dispozici STATUS: deployedverze Helm Chartu, zkontrolujte stav agentů pomocí 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

Všechny pody by se měly zobrazit STATUS jako Running u 3/3 sloupce nebo 2/2 pod sloupcem READY . Načtěte protokoly a popište pody, které vrací znak nebo Error CrashLoopBackOff. Pokud jsou nějaké pody zablokované ve Pending stavu, může na uzlech clusteru existovat nedostatek prostředků. Vertikální navýšení kapacity clusteru může tyto pody získat pro přechod do Running stavu.

Zřizování prostředků selhalo nebo došlo k chybě vypršení časového limitu služby

Pokud se zobrazí tyto chyby, zkontrolujte stav Azure a zjistěte, jestli neexistují nějaké aktivní události, které mají vliv na stav služby Kubernetes s podporou Azure Arc. Pokud ano, počkejte na vyřešení události služby a po odstranění existujícího připojeného prostředku clusteru zkuste onboarding provést znovu. Pokud nedojde k žádným událostem služby a při onboardingu budete dál řešit problémy, otevřete žádost o podporu, abychom mohli problém prošetřit.

Chyba deklarací nadlimitního využití

Pokud obdržíte žádost o nadlimitní využití, ujistěte se, že váš instanční objekt není součástí více než 200 skupin Microsoft Entra. V takovém případě musíte vytvořit a použít jiný instanční objekt, který není členem více než 200 skupin, nebo odebrat původní instanční objekt z některých jeho skupin a zkusit to znovu.

K deklaraci nadlimitního využití může dojít také v případě, že jste nakonfigurovali odchozí proxy prostředí bez povolení koncového bodu https://<region>.obo.arc.azure.com:8084/ pro odchozí provoz.

Pokud žádná z těchto možností neplatí, otevřete žádost o podporu, abychom se mohli podívat na problém.

Problémy s připojením clusterů Kubernetes ke službě Azure Arc

Připojení clusterů k Azure Arc vyžaduje přístup k předplatnému Azure a cluster-admin přístup k cílovému clusteru. Pokud se nemůžete připojit ke clusteru nebo pokud máte nedostatečná oprávnění, připojení clusteru ke službě Azure Arc selže. Ujistěte se, že jste splnili všechny požadavky pro připojení clusteru.

Tip

Vizuální průvodce odstraňováním potíží s připojením najdete v tématu Diagnostika problémů s připojením pro clustery Kubernetes s podporou Arc.

Problémy s překladem DNS

Nápovědu k problémům souvisejícím s překladem DNS v clusteru najdete v tématu Ladění překladu DNS.

Problémy s odchozím připojením k síti

K problémům s odchozím síťovým připojením z clusteru může dojít z různých důvodů. Nejprve se ujistěte, že byly splněny všechny požadavky na síť.

Pokud narazíte na problémy s připojením a váš cluster je za odchozím proxy serverem, ujistěte se, že jste během onboardingu clusteru předali parametry proxy serveru a že je proxy server správně nakonfigurovaný. Další informace najdete v tématu Připojení pomocí odchozího proxy serveru.

Může se zobrazit chyba podobná následující:

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

K této chybě dochází, když https://k8connecthelm.azureedge.net je koncový bod zablokovaný. Ujistěte se, že vaše síť umožňuje připojení k tomuto koncovému bodu a splňuje všechny ostatní požadavky na síť.

Nejde načíst certifikát MSI

Problémy s načtením certifikátu MSI jsou obvykle způsobené problémy se sítí. Zkontrolujte, jestli jsou splněné všechny požadavky na síť, a zkuste to znovu.

Nedostatečná oprávnění ke clusteru

Pokud zadaný soubor kubeconfig nemá dostatečná oprávnění k instalaci agentů Azure Arc, příkaz Azure CLI vrátí chybu: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

Pokud chcete tento problém vyřešit, ujistěte se, že má uživatel připojující cluster ke službě Azure Arc přiřazenou cluster-admin roli.

Cluster OpenShift nejde připojit ke službě Azure Arc

Pokud az connectedk8s connect dochází k vypršení časového limitu a při připojování clusteru OpenShift ke službě Azure Arc dochází k selhání:

  1. Ujistěte se, že cluster OpenShift splňuje požadavky na verzi: 4.5.41 nebo 4.6.35 nebo 4.7.18+.

  2. Před spuštěním az connectedk8s connnectspusťte tento příkaz v clusteru:

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

Časové limity instalace

Připojení clusteru Kubernetes ke Kubernetes s podporou Azure Arc vyžaduje instalaci agentů Azure Arc v clusteru. Pokud cluster běží přes pomalé připojení k internetu, může vyžádání image kontejneru pro agenty trvat déle než vypršení časového limitu Azure CLI.

Chyba vypršení časového limitu Helmu

Může se zobrazit chyba Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. K vyřešení problému proveďte následující kroky:

  1. Spusťte následující příkaz:

    kubectl get pods -n azure-arc
    
  2. Zkontrolujte, jestli clusterconnect-agent se zobrazují crashloopbackoffpody config-agent nebo jestli nejsou spuštěné všechny kontejnery:

    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 Pokud není k dispozici, spravovaná identita přiřazená systémem se nenainstalovala.

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

    Pokud chcete tento problém vyřešit, zkuste nasazení Arc odstranit spuštěním az connectedk8s delete příkazu a přeinstalací. Pokud problém přetrvává, může se jednat o problém s nastavením proxy serveru. V takovém případě zkuste připojit cluster ke službě Azure Arc přes proxy server , abyste cluster připojili ke službě Arc přes proxy server. Ověřte také splnění všech požadavků na síť.

  4. clusterconnect-agent Pokud jsou pody spuštěnéconfig-agent, ale kube-aad-proxy pod chybí, zkontrolujte zásady zabezpečení podů. Tento pod používá azure-arc-kube-aad-proxy-sa účet služby, který nemá oprávnění správce, ale vyžaduje oprávnění k připojení cesty hostitele.

  5. kube-aad-proxy Pokud je pod zablokovaný ve ContainerCreating stavu, zkontrolujte, jestli se do clusteru stáhl certifikát kube-aad-proxy.

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

    Pokud certifikát chybí, odstraňte nasazení a zkuste nasazení připojit znovu s použitím jiného názvu clusteru. Pokud problém přetrvává, otevřete žádost o podporu.

Chyba modulu CryptoHash

Při pokusu o připojení clusterů Kubernetes k platformě Azure Arc může místní prostředí (například konzola klienta) vrátit následující chybovou zprávu:

Cannot load native module 'Crypto.Hash._MD5'

Někdy se závislé moduly nepodaří úspěšně stáhnout při přidávání rozšíření connectedk8s a k8s-configuration prostřednictvím Azure CLI nebo Azure PowerShellu. Chcete-li tento problém vyřešit, ručně odeberte a potom přidejte rozšíření v místním prostředí.

Pokud chcete rozšíření odebrat, použijte:

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

Pokud chcete přidat rozšíření, použijte:

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

Problémy s připojením ke clusteru

Pokud je váš cluster za odchozím proxy serverem nebo bránou firewall, ověřte, že jsou povolená *.servicebus.windows.netpřipojení protokolu WebSocket, která se vyžaduje speciálně pro funkci Připojení ke clusteru. Kromě toho se ujistěte, že používáte nejnovější verzi connectedk8s rozšíření Azure CLI, pokud máte problémy s připojením ke clusteru.

Pokud chybí clusterconnect-agent pody kube-aad-proxy , funkce připojení ke clusteru je pravděpodobně v clusteru zakázaná. Pokud ano, az connectedk8s proxy nepodaří se navázat relaci s clusterem a může se zobrazit chyba při čtení. Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

Pokud chcete tuto chybu vyřešit, povolte ve svém clusteru funkci připojení ke clusteru:

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

Další informace najdete v tématu Použití připojení clusteru k zabezpečenému připojení ke clusterům Kubernetes s podporou Azure Arc.

Povolení vlastních umístění pomocí instančního objektu

Při připojování clusteru ke službě Azure Arc nebo povolení vlastních umístění v existujícím clusteru se může zobrazit následující upozornění:

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

K tomuto upozornění dochází, když k přihlášení do Azure použijete instanční objekt a instanční objekt nemá potřebná oprávnění. Chcete-li se této chybě vyhnout, postupujte takto:

  1. Přihlaste se k Azure CLI pomocí uživatelského účtu. Načtení ID objektu aplikace Microsoft Entra používané službou Azure Arc:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. Přihlaste se k Azure CLI pomocí instančního objektu. <objectId> Pomocí hodnoty z předchozího kroku povolte vlastní umístění v clusteru:

    • Pokud chcete povolit vlastní umístění při připojování clusteru ke službě Arc, spusťte příkaz az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • Pokud chcete povolit vlastní umístění v existujícím clusteru Kubernetes s podporou Služby Azure Arc, spusťte příkaz . az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

Další kroky