Rozwiązywanie problemów z platformą dla klastrów Kubernetes z obsługą usługi Azure Arc

Ten dokument zawiera przewodniki rozwiązywania problemów z łącznością, uprawnieniami i agentami platformy Kubernetes z włączoną usługą Azure Arc. Zawiera również przewodniki rozwiązywania problemów dotyczące usługi Azure GitOps, które mogą być używane w klastrach Kubernetes z obsługą usługi Azure Arc lub Azure Kubernetes Service (AKS).

Aby uzyskać pomoc dotyczącą rozwiązywania problemów związanych z rozszerzeniami, takimi jak GitOps (Flux v2), Azure Monitor Container Szczegółowe informacje, Open Service Mesh, zobacz Rozwiązywanie problemów z rozszerzeniem dla klastrów Kubernetes z obsługą usługi Azure Arc.

Interfejs wiersza polecenia platformy Azure

Przed użyciem az connectedk8s poleceń interfejsu wiersza polecenia platformy az k8s-configuration Azure upewnij się, że interfejs wiersza polecenia platformy Azure działa zgodnie z poprawną subskrypcją platformy Azure.

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

Agenci usługi Azure Arc

Wszyscy agenci platformy Kubernetes z obsługą azure-arc usługi Azure Arc są wdrażani jako zasobniki w przestrzeni nazw. Wszystkie zasobniki powinny być uruchomione i przechodzić testy kondycji.

Najpierw sprawdź wersję pakietu Helm usługi 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

Jeśli wersja pakietu Helm Chart nie zostanie znaleziona lub brakuje jej, spróbuj ponownie połączyć klaster z usługą Azure Arc .

Jeśli wersja pakietu Helm Chart jest obecna z STATUS: deployedprogramem , sprawdź stan agentów przy użyciu polecenia 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

Wszystkie zasobniki powinny być wyświetlane STATUS tak, jak Running w 3/3 kolumnie lub 2/2 pod kolumną READY . Pobierz dzienniki i opisz zasobniki zwracające element Error lub CrashLoopBackOff. Jeśli jakiekolwiek zasobniki są zablokowane w Pending stanie, w węzłach klastra może być niewystarczająca ilość zasobów. Skalowanie w górę klastra może uzyskać te zasobniki, aby przejść do Running stanu.

Niepowodzenie aprowizacji zasobów/błąd przekroczenia limitu czasu usługi

Jeśli widzisz te błędy, sprawdź stan platformy Azure, aby sprawdzić, czy istnieją jakiekolwiek aktywne zdarzenia wpływające na stan usługi Kubernetes z włączoną usługą Azure Arc. Jeśli tak, poczekaj na rozwiązanie zdarzenia usługi, a następnie spróbuj ponownie dołączyć po usunięciu istniejącego połączonego zasobu klastra. Jeśli nie ma zdarzeń usługi i nadal napotykasz problemy podczas dołączania, otwórz bilet pomocy technicznej, abyśmy mogli zbadać problem.

Błąd oświadczeń nadwyżkowych

Jeśli otrzymasz oświadczenie nadwyżkowe, upewnij się, że jednostka usługi nie jest częścią ponad 200 grup firmy Microsoft Entra. Jeśli tak jest, musisz utworzyć i użyć innej jednostki usługi, która nie jest członkiem więcej niż 200 grup, lub usunąć oryginalną jednostkę usługi z niektórych jej grup i spróbować ponownie.

Oświadczenie nadwyżkowe może również wystąpić, jeśli skonfigurowano środowisko serwera proxy ruchu wychodzącego bez zezwolenia na ruch https://<region>.obo.arc.azure.com:8084/ wychodzący.

Jeśli żaden z tych elementów nie ma zastosowania, otwórz wniosek o pomoc techniczną, abyśmy mogli przyjrzeć się problemowi.

Problemy podczas łączenia klastrów Kubernetes z usługą Azure Arc

Połączenie klastrów do usługi Azure Arc wymaga dostępu do subskrypcji platformy Azure i cluster-admin dostępu do klastra docelowego. Jeśli nie możesz nawiązać połączenia z klastrem lub jeśli masz niewystarczające uprawnienia, połączenie klastra z usługą Azure Arc zakończy się niepowodzeniem. Upewnij się, że zostały spełnione wszystkie wymagania wstępne dotyczące łączenia klastra.

Napiwek

Aby zapoznać się z wizualnym przewodnikiem rozwiązywania problemów z połączeniem, zobacz Diagnozowanie problemów z połączeniem dla klastrów Kubernetes z obsługą usługi Arc.

Problemy z rozpoznawaniem nazw DNS

Odwiedź stronę Debugowanie rozpoznawania nazw DNS, aby uzyskać pomoc w rozwiązywaniu problemów z rozpoznawaniem nazw DNS w klastrze.

Problemy z łącznością sieciową dla ruchu wychodzącego

Problemy z wychodzącą łącznością sieciową z klastra mogą wystąpić z różnych powodów. Najpierw upewnij się, że zostały spełnione wszystkie wymagania dotyczące sieci.

Jeśli wystąpią problemy z łącznością, a klaster znajduje się za serwerem proxy ruchu wychodzącego, upewnij się, że parametry serwera proxy zostały przekazane podczas dołączania klastra i że serwer proxy jest poprawnie skonfigurowany. Aby uzyskać więcej informacji, zobacz Połączenie przy użyciu serwera proxy ruchu wychodzącego.

Może zostać wyświetlony błąd podobny do następującego:

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

Ten błąd występuje, gdy https://k8connecthelm.azureedge.net punkt końcowy jest zablokowany. Upewnij się, że sieć zezwala na łączność z tym punktem końcowym i spełnia wszystkie inne wymagania dotyczące sieci.

Nie można pobrać certyfikatu MSI

Problemy z pobieraniem certyfikatu MSI są zwykle spowodowane problemami z siecią. Upewnij się, że zostały spełnione wszystkie wymagania dotyczące sieci, a następnie spróbuj ponownie.

Niewystarczające uprawnienia dotyczące klastra

Jeśli podany plik kubeconfig nie ma wystarczających uprawnień do instalowania agentów usługi Azure Arc, polecenie interfejsu wiersza polecenia platformy Azure zwraca błąd: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

Aby rozwiązać ten problem, upewnij się, że użytkownik łączący klaster z usługą Azure Arc ma przypisaną cluster-admin rolę.

Nie można połączyć klastra usługi OpenShift z usługą Azure Arc

Jeśli az connectedk8s connect występuje limit czasu i niepowodzenie podczas nawiązywania połączenia klastra OpenShift z usługą Azure Arc:

  1. Upewnij się, że klaster OpenShift spełnia wymagania wstępne dotyczące wersji: 4.5.41+ lub 4.6.35+ lub 4.7.18+.

  2. Przed uruchomieniem az connectedk8s connnectpolecenia uruchom następujące polecenie w klastrze:

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

Przekroczenia limitu czasu instalacji

Połączenie klastra Kubernetes do platformy Kubernetes z włączoną usługą Azure Arc wymaga zainstalowania agentów usługi Azure Arc w klastrze. Jeśli klaster działa przez wolne połączenie internetowe, ściąganie obrazu kontenera dla agentów może trwać dłużej niż limity czasu interfejsu wiersza polecenia platformy Azure.

Błąd przekroczenia limitu czasu programu Helm

Może zostać wyświetlony błąd Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. Aby rozwiązać ten problem, spróbuj wykonać następujące kroki:

  1. Uruchom następujące polecenie:

    kubectl get pods -n azure-arc
    
  2. Sprawdź, czy clusterconnect-agent zasobniki lub config-agent są wyświetlane crashloopbackoff, lub jeśli nie wszystkie kontenery są uruchomione:

    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 Jeśli element nie jest obecny, tożsamość zarządzana przypisana przez system nie została zainstalowana.

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

    Aby rozwiązać ten problem, spróbuj usunąć wdrożenie usługi Arc, uruchamiając az connectedk8s delete polecenie i ponownie go instalując. Jeśli problem nadal występuje, może to być problem z ustawieniami serwera proxy. W takim przypadku spróbuj połączyć klaster z usługą Azure Arc za pośrednictwem serwera proxy, aby połączyć klaster z usługą Arc za pośrednictwem serwera proxy. Sprawdź również, czy zostały spełnione wszystkie wymagania wstępne dotyczące sieci.

  4. Jeśli zasobniki clusterconnect-agent i config-agent są uruchomione, ale kube-aad-proxy brakuje zasobnika, sprawdź zasady zabezpieczeń zasobnika. Ten zasobnik używa azure-arc-kube-aad-proxy-sa konta usługi, które nie ma uprawnień administratora, ale wymaga uprawnień do instalacji ścieżki hosta.

  5. kube-aad-proxy Jeśli zasobnik jest zablokowany w ContainerCreating stanie, sprawdź, czy certyfikat kube-aad-proxy został pobrany do klastra.

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

    Jeśli brakuje certyfikatu, usuń wdrożenie i spróbuj ponownie dołączyć, używając innej nazwy klastra. Jeśli problem będzie nadal występować, otwórz wniosek o pomoc techniczną.

Błąd modułu CryptoHash

Podczas próby dołączenia klastrów Kubernetes do platformy Azure Arc środowisko lokalne (na przykład konsola klienta) może zwrócić następujący komunikat o błędzie:

Cannot load native module 'Crypto.Hash._MD5'

Czasami pobieranie modułów zależnych kończy się niepowodzeniem podczas dodawania rozszerzeń i k8s-configuration za pomocą interfejsu wiersza polecenia platformy connectedk8s Azure lub programu Azure PowerShell. Aby rozwiązać ten problem, usuń ręcznie, a następnie dodaj rozszerzenia w środowisku lokalnym.

Aby usunąć rozszerzenia, użyj:

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

Aby dodać rozszerzenia, użyj:

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

Problemy z połączeniem klastra

Jeśli klaster znajduje się za wychodzącym serwerem proxy lub zaporą, sprawdź, czy dla programu są włączone *.servicebus.windows.netpołączenia protokołu Websocket, które są wymagane specjalnie dla funkcji klastra Połączenie. Ponadto upewnij się, że używasz najnowszej wersji rozszerzenia interfejsu connectedk8s wiersza polecenia platformy Azure, jeśli występują problemy z nawiązywaniem połączenia z klastrem.

clusterconnect-agent Jeśli brakuje zasobników ikube-aad-proxy, funkcja łączenia klastra jest prawdopodobnie wyłączona w klastrze. Jeśli tak, az connectedk8s proxy nie będzie można ustanowić sesji z klastrem i może zostać wyświetlony komunikat o błędzie podczas odczytywania Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

Aby rozwiązać ten błąd, włącz funkcję łączenia klastra w klastrze:

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

Aby uzyskać więcej informacji, zobacz Używanie połączenia klastra w celu bezpiecznego nawiązywania połączenia z klastrami Kubernetes z włączoną usługą Azure Arc.

Włączanie lokalizacji niestandardowych przy użyciu jednostki usługi

Podczas łączenia klastra z usługą Azure Arc lub włączania lokalizacji niestandardowych w istniejącym klastrze może zostać wyświetlone następujące ostrzeżenie:

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

To ostrzeżenie występuje, gdy używasz jednostki usługi do logowania się na platformie Azure, a jednostka usługi nie ma niezbędnych uprawnień. Aby uniknąć tego błędu, wykonaj następujące kroki:

  1. Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu konta użytkownika. Pobierz identyfikator obiektu aplikacji Microsoft Entra używanej przez usługę Azure Arc:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu jednostki usługi. <objectId> Użyj wartości z poprzedniego kroku, aby włączyć lokalizacje niestandardowe w klastrze:

    • Aby włączyć lokalizacje niestandardowe podczas łączenia klastra z usługą Arc, uruchom polecenie az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • Aby włączyć lokalizacje niestandardowe w istniejącym klastrze Kubernetes z włączoną usługą Azure Arc, uruchom polecenie az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

Następne kroki