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 Insights, 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
Jeśli wystąpi błąd, taki jak cli.azext_connectedk8s.custom: Failed to download and install kubectl
, uruchom az aks install-cli --install-location ~/.azure/kubectl-client/kubectl
polecenie przed podjęciem próby ponownego uruchomienia az connectedk8s connect
. To polecenie instaluje klienta kubectl, który jest wymagany do działania polecenia.
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: deployed
programem , 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 wniosek o pomoc techniczną, 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
Łączenie klastrów z usługą 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
Aby uzyskać pomoc dotyczącą problemów związanych z rozpoznawaniem nazw DNS w klastrze, zobacz Debugowanie rozpoznawania nazw DNS.
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 Nawiązywanie połączenia 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:
Upewnij się, że klaster OpenShift spełnia wymagania wstępne dotyczące wersji: 4.5.41+ lub 4.6.35+ lub 4.7.18+.
Przed uruchomieniem
az connectedk8s connnect
polecenia 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 z platformą 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:
Uruchom następujące polecenie:
kubectl get pods -n azure-arc
Sprawdź, czy
clusterconnect-agent
zasobniki lubconfig-agent
są wyświetlanecrashloopbackoff
, 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
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.Jeśli zasobniki
clusterconnect-agent
iconfig-agent
są uruchomione, alekube-aad-proxy
brakuje zasobnika, sprawdź zasady zabezpieczeń zasobnika. Ten zasobnik używaazure-arc-kube-aad-proxy-sa
konta usługi, które nie ma uprawnień administratora, ale wymaga uprawnień do instalacji ścieżki hosta.kube-aad-proxy
Jeśli zasobnik jest zablokowany wContainerCreating
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 połączenia protokołu Websocket są włączone dla *.servicebus.windows.net
programu , co jest wymagane specjalnie dla funkcji Łączenie klastra . 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 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:
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
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
- Aby włączyć lokalizacje niestandardowe podczas łączenia klastra z usługą Arc, uruchom polecenie
Następne kroki
- Zapoznaj się z wizualnym przewodnikiem dotyczący diagnozowania problemów z połączeniem.
- Wyświetl porady dotyczące rozwiązywania problemów związane z rozszerzeniami klastra.