Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie Probleme beim Verbinden eines Clusters mit Azure Arc haben, ist das Problem wahrscheinlich eines der in diesem Artikel aufgeführten Probleme. Zwei Flussdiagramme bieten eine geführte Hilfe: eine, wenn Sie keinen Proxyserver verwenden und eine, die gilt, wenn Ihre Netzwerkverbindung einen Proxyserver verwendet.
Tipp
Diese Flussdiagramme gelten unabhängig davon, ob Sie Azure CLI oder Azure PowerShell zum Verbinden Ihres Clusters verwenden. Für einige Schritte ist jedoch die Verwendung der Azure CLI erforderlich. Wenn Sie Azure CLI noch nicht installiert haben, stellen Sie sicher, dass Sie dies tun, bevor Sie beginnen.
Verbindungen ohne Proxy
Überprüfen Sie dieses Flussdiagramm, um Ihr Problem zu diagnostizieren, wenn Sie versuchen, einen Cluster ohne Proxyserver mit Azure Arc zu verbinden. Weitere Details zu den einzelnen Schritten finden Sie in den folgenden Abschnitten.
Verfügt die Azure-Identität über ausreichende Berechtigungen?
Überprüfen Sie die Voraussetzungen für die Verbindung mit einem Cluster, und stellen Sie sicher, dass die Identität, die Sie zum Herstellen einer Verbindung mit dem Cluster verwenden, über die erforderlichen Berechtigungen verfügt.
Verwenden Sie die neueste Version der Azure-Befehlszeilenschnittstelle?
Stellen Sie sicher, dass Sie die neueste Version installiert haben.
Wenn Sie Ihren Cluster mithilfe von Azure PowerShell verbunden haben, stellen Sie sicher, dass Sie die neueste Version ausführen.
Verwenden Sie die aktuelle Version der connectedk8s-Erweiterung?
Aktualisieren Sie die Azure CLI-Erweiterung connectedk8s auf die neueste Version, indem Sie den folgenden Befehl ausführen:
az extension update --name connectedk8s
Wenn Sie die Erweiterung noch nicht installiert haben, installieren Sie sie, indem Sie den folgenden Befehl ausführen:
az extension add --name connectedk8s
Verweist kubeconfig auf den richtigen Cluster?
Führen Sie kubectl config get-contexts aus, um den Namen des Zielkontexts zu bestätigen. Legen Sie dann den Standardkontext auf den richtigen Cluster fest, indem Sie kubectl config use-context <target-cluster-name> ausführen.
Sind alle erforderlichen Ressourcenanbieter registriert?
Stellen Sie sicher, dass die Microsoft.Kubernetes-, Microsoft.KubernetesConfiguration- und Microsoft.ExtendedLocation-Ressourcenanbieter registriert sind.
Sind alle Netzwerkanforderungen erfüllt?
Überprüfen Sie die Netzwerkanforderungen , und stellen Sie sicher, dass keine erforderlichen Endpunkte blockiert werden.
Werden alle Pods im azure-arc-Namespace ausgeführt?
Wenn alles ordnungsgemäß funktioniert, sollten sich Ihre Pods im Zustand Running befinden. Führen Sie kubectl get pods -n azure-arc aus, um zu bestätigen, ob der Zustand eines beliebigen Pods nicht Running ist.
Treten weiterhin Probleme auf?
In den vorstehenden Schritten werden viele häufige Verbindungsprobleme behoben. Wenn Sie immer noch keine erfolgreiche Verbindung herstellen können, generieren Sie eine Protokolldatei zur Problembehandlung, und öffnen Sie dann eine Supportanfrage , damit das Supportteam das Problem untersuchen kann.
Führen Sie den folgenden Befehl aus, um die Protokolldatei zur Problembehandlung zu generieren:
az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>
Wenn Sie Ihre Supportanfrage erstellen, verwenden Sie die Option " Dateiupload " im Abschnitt "Zusätzliche Details ", um die generierte Protokolldatei hochzuladen.
Verbindungen mit einem Proxyserver
Wenn Sie einen Proxyserver auf mindestens einem Computer verwenden, führen Sie die ersten fünf Schritte des Nicht-Proxy-Flussdiagramms (über die Registrierung des Ressourcenanbieters) aus, um grundlegende Schritte zur Problembehandlung auszuführen. Wenn dann weiterhin Probleme auftreten, lesen Sie das nächste Flussdiagramm, um weitere Schritte zur Problembehandlung zu finden. Weitere Details zu den einzelnen Schritten finden Sie in den folgenden Abschnitten.
Führt der Computer Befehle hinter einem Proxyserver aus?
Wenn der Computer Befehle hinter einem Proxyserver ausführt, legen Sie alle erforderlichen Umgebungsvariablen fest. Informationen finden Sie unter Herstellen einer Verbindung mithilfe eines ausgehenden Proxyservers.
Beispiel:
export HTTP_PROXY="http://<proxyIP>:<proxyPort>"
export HTTPS_PROXY="https://<proxyIP>:<proxyPort>"
export NO_PROXY="<cluster-apiserver-ip-address>:<proxyPort>"
Akzeptiert der Proxyserver nur vertrauenswürdige Zertifikate?
Achten Sie darauf, dass Sie den Zertifikatdateipfad einschließen, indem Sie --proxy-cert <path-to-cert-file> beim Ausführen des Befehls az connectedk8s connect einfügen.
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>
Kann der Proxyserver erforderliche Netzwerkendpunkte erreichen?
Überprüfen Sie die Netzwerkanforderungen , und stellen Sie sicher, dass keine erforderlichen Endpunkte blockiert werden.
Verwendet der Proxyserver nur HTTP?
Wenn Ihr Proxyserver nur HTTP verwendet, verwenden Sie proxy-http für beide Parameter.
Wenn Ihr Proxyserver sowohl mit HTTP als auch mit HTTPS eingerichtet ist, führen Sie den Befehl az connectedk8s connect aus, und geben Sie dabei die Parameter --proxy-https und --proxy-http an. Wird --proxy-http für den HTTP-Proxy und --proxy-https für den HTTPS-Proxy verwendet.
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port>
Erfordert der Proxyserver Auslassungsbereiche für die Kommunikation zwischen Diensten?
Wenn Sie Auslassungsbereiche benötigen, verwenden Sie --proxy-skip-range <excludedIP>,<excludedCIDR> im Befehl az connectedk8s connect.
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR>
Werden alle Pods im azure-arc-Namespace ausgeführt?
Wenn alles ordnungsgemäß funktioniert, sollten sich Ihre Pods im Zustand Running befinden. Führen Sie kubectl get pods -n azure-arc aus, um zu bestätigen, ob der Zustand eines beliebigen Pods nicht Running ist.
Überprüfen, ob die DNS-Auflösung für den Endpunkt erfolgreich ist
Führen Sie innerhalb des Pods einen DNS-Nachschlagevorgang für den Endpunkt aus.
Wenn Sie den Kubectl exec-Befehl nicht ausführen können, um eine Verbindung mit dem Pod herzustellen und das DNS Utils-Paket zu installieren, starten Sie einen Test-Pod im selben Namespace wie der problematische Pod, und führen Sie dann die Tests aus.
Hinweis
Wenn die DNS-Auflösung oder der ausgehende Datenverkehr Sie daran hindert, die erforderlichen Netzwerkpakete zu installieren, verwenden Sie das rishasi/ubuntu-netutil:1.0 Docker-Image. In diesem Image sind die erforderlichen Pakete bereits installiert.
Hier ist ein Beispiel für die Überprüfung der DNS-Auflösung:
Starten Sie einen Testpod im selben Namespace wie der problematische Pod:
kubectl run -it --rm test-pod --namespace <namespace> --image=debian:stableNachdem der Test-Pod läuft, erhalten Sie Zugriff auf den Pod.
Führen Sie die folgenden
apt-get-Befehle aus, um andere Toolpakete zu installieren:apt-get update -y apt-get install dnsutils -y apt-get install curl -y apt-get install netcat -yFühren Sie nach der Installation der Pakete den Befehl nslookup aus, um die DNS-Auflösung für den Endpunkt zu testen:
$ nslookup microsoft.com Server: 10.0.0.10 Address: 10.0.0.10#53 ... ... Name: microsoft.com Address: 20.53.203.50Probieren Sie die DNS-Auflösung vom Upstream-DNS-Server direkt aus. In diesem Beispiel wird Azure DNS verwendet:
$ nslookup microsoft.com 168.63.129.16 Server: 168.63.129.16 Address: 168.63.129.16#53 ... ... Address: 20.81.111.85Führen Sie den Befehl
hostaus, um zu überprüfen, ob die DNS-Anforderungen an den Upstreamserver weitergeleitet werden:$ host -a microsoft.com Trying "microsoft.com.default.svc.cluster.local" Trying "microsoft.com.svc.cluster.local" Trying "microsoft.com.cluster.local" Trying "microsoft.com.00idcnmrrm4edot5s2or1onxsc.bx.internal.cloudapp.net" Trying "microsoft.com" Trying "microsoft.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62884 ;; flags: qr rd ra; QUERY: 1, ANSWER: 27, AUTHORITY: 0, ADDITIONAL: 5 ;; QUESTION SECTION: ;microsoft.com. IN ANY ;; ANSWER SECTION: microsoft.com. 30 IN NS ns1-39.azure-dns.com. ... ... ns4-39.azure-dns.info. 30 IN A 13.107.206.39 Received 2121 bytes from 10.0.0.10#53 in 232 msFühren Sie einen Testpod im Windows-Knotenpool aus:
# For a Windows environment, use the Resolve-DnsName cmdlet. kubectl run dnsutil-win --image='mcr.microsoft.com/windows/servercore:1809' --overrides='{"spec": { "nodeSelector": {"kubernetes.io/os": "windows"}}}' -- powershell "Start-Sleep -s 3600"Führen Sie den Befehl kubectl exec aus, um mithilfe von PowerShell eine Verbindung mit dem Pod herzustellen:
kubectl exec -it dnsutil-win -- powershellFühren Sie das Cmdlet Resolve-DnsName in PowerShell aus, um zu überprüfen, ob die DNS-Auflösung für den Endpunkt funktioniert:
PS C:\> Resolve-DnsName www.microsoft.com Name Type TTL Section NameHost ---- ---- --- ------- -------- www.microsoft.com CNAME 20 Answer www.microsoft.com-c-3.edgekey.net www.microsoft.com-c-3.edgekey. CNAME 20 Answer www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net net www.microsoft.com-c-3.edgekey. CNAME 20 Answer e13678.dscb.akamaiedge.net net.globalredir.akadns.net Name : e13678.dscb.akamaiedge.net QueryType : AAAA TTL : 20 Section : Answer IP6Address : 2600:1408:c400:484::356e Name : e13678.dscb.akamaiedge.net QueryType : AAAA TTL : 20 Section : Answer IP6Address : 2600:1408:c400:496::356e Name : e13678.dscb.akamaiedge.net QueryType : A TTL : 12 Section : Answer IP4Address : 23.200.197.152
Wenn die DNS-Auflösung nicht erfolgreich ist, überprüfen Sie die DNS-Konfiguration für den Cluster.
Treten weiterhin Probleme auf?
In den vorstehenden Schritten werden viele häufige Verbindungsprobleme behoben. Wenn Sie immer noch keine erfolgreiche Verbindung herstellen können, generieren Sie eine Protokolldatei zur Problembehandlung, und öffnen Sie dann eine Supportanfrage , damit das Supportteam das Problem untersuchen kann.
Führen Sie den folgenden Befehl aus, um die Protokolldatei zur Problembehandlung zu generieren:
az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>
Wenn Sie Ihre Supportanfrage erstellen, verwenden Sie die Option " Dateiupload " im Abschnitt "Zusätzliche Details ", um die generierte Protokolldatei hochzuladen.
Nächste Schritte
- Sehen Sie sich weitere Tipps zur Problembehandlung bei der Verwendung von Kubernetes mit Azure Arc-Unterstützung an.
- Sehen Sie sich den Prozess zum Verbinden eines vorhandenen Kubernetes-Clusters mit Azure Arc an.