Verbindingsproblemen vaststellen voor Kubernetes-clusters met Azure Arc
Als u problemen ondervindt bij het verbinden van een cluster met Azure Arc, is dit waarschijnlijk het gevolg van een van de hier vermelde problemen. We bieden twee stroomdiagrammen met begeleide hulp: één als u geen proxyserver gebruikt en een die van toepassing is als uw netwerkverbinding gebruikmaakt van een proxyserver.
Tip
De stappen in dit stroomdiagram zijn van toepassing, ongeacht of u Azure CLI of Azure PowerShell gebruikt om verbinding te maken met uw cluster. Voor sommige van de stappen is echter het gebruik van Azure CLI vereist. Als u Azure CLI nog niet hebt geïnstalleerd, moet u dit doen voordat u begint.
Verbindingen zonder proxy
Bekijk dit stroomdiagram om uw probleem vast te stellen wanneer u een cluster probeert te verbinden met Azure Arc zonder een proxyserver. Hieronder vindt u meer informatie over elke stap.
Beschikt de Azure-identiteit over voldoende machtigingen?
Controleer de vereisten voor het verbinden van een cluster en zorg ervoor dat de identiteit die u gebruikt om verbinding te maken met het cluster over de benodigde machtigingen beschikt.
Voert u de nieuwste versie van Azure CLI uit?
Zorg ervoor dat u de nieuwste versie hebt geïnstalleerd.
Als u uw cluster hebt verbonden met behulp van Azure PowerShell, controleert u of u de nieuwste versie gebruikt.
Is de connectedk8s
extensie de nieuwste versie?
Werk de Azure CLI-extensie connectedk8s
bij naar de nieuwste versie door deze opdracht uit te voeren:
az extension update --name connectedk8s
Als u de extensie nog niet hebt geïnstalleerd, kunt u dit doen door de volgende opdracht uit te voeren:
az extension add --name connectedk8s
Verwijst kubeconfig naar het juiste cluster?
Voer uit kubectl config get-contexts
om de naam van de doelcontext te bevestigen. Stel vervolgens de standaardcontext in op het juiste cluster door uit te voeren kubectl config use-context <target-cluster-name>
.
Zijn alle vereiste resourceproviders geregistreerd?
Zorg ervoor dat de resourceproviders Microsoft.Kubernetes, Microsoft.KubernetesConfiguration en Microsoft.ExtendedLocation zijn geregistreerd.
Voldoet aan alle netwerkvereisten?
Controleer de netwerkvereisten en zorg ervoor dat er geen vereiste eindpunten worden geblokkeerd.
Worden alle pods in de azure-arc
naamruimte uitgevoerd?
Als alles correct werkt, moeten uw pods allemaal de Running
status hebben. Voer uit kubectl get pods -n azure-arc
om te controleren of de status van een pod niet Running
is.
Nog steeds problemen?
Met de bovenstaande stappen worden veel veelvoorkomende verbindingsproblemen opgelost, maar als u nog steeds geen verbinding kunt maken, genereert u een logboekbestand voor probleemoplossing en opent u vervolgens een ondersteuningsaanvraag , zodat we het probleem verder kunnen onderzoeken.
Voer de volgende opdracht uit om het logboekbestand voor probleemoplossing te genereren:
az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>
Wanneer u uw ondersteuningsaanvraag maakt, gebruikt u in de sectie Aanvullende details de optie Bestand uploaden om het gegenereerde logboekbestand te uploaden.
Verbindingen met een proxyserver
Als u een proxyserver op ten minste één computer gebruikt, voert u de eerste vijf stappen van het niet-proxystroomdiagram (via de registratie van de resourceprovider) uit voor basisstappen voor probleemoplossing. Als u nog steeds problemen ondervindt, raadpleegt u het volgende stroomdiagram voor aanvullende stappen voor probleemoplossing. Hieronder vindt u meer informatie over elke stap.
Voert de computer opdrachten uit achter een proxyserver?
Als de machine opdrachten uitvoert achter een proxyserver, moet u alle benodigde omgevingsvariabelen instellen. Zie Verbinding maken met een uitgaande proxyserver voor meer informatie.
Voorbeeld:
export HTTP_PROXY="http://<proxyIP>:<proxyPort>"
export HTTPS_PROXY="https://<proxyIP>:<proxyPort>"
export NO_PROXY="<cluster-apiserver-ip-address>:<proxyPort>"
Accepteert de proxyserver alleen vertrouwde certificaten?
Zorg ervoor dat u het pad naar het certificaatbestand opneemt door op te nemen --proxy-cert <path-to-cert-file>
bij het uitvoeren van de az connectedk8s connect
opdracht.
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>
Kan de proxyserver de vereiste netwerkeindpunten bereiken?
Controleer de netwerkvereisten en zorg ervoor dat er geen vereiste eindpunten worden geblokkeerd.
Gebruikt de proxyserver alleen HTTP?
Als uw proxyserver alleen HTTP gebruikt, kunt u voor beide parameters gebruiken proxy-http
.
Als uw proxyserver is ingesteld met zowel HTTP als HTTPS, voert u de az connectedk8s connect
opdracht uit met de --proxy-https
opgegeven parameters en --proxy-http
de parameters. Zorg ervoor dat u voor de HTTP-proxy en --proxy-https
voor de HTTPS-proxy gebruikt--proxy-http
.
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>
Vereist de proxyserver skip-bereiken voor service-naar-service-communicatie?
Als u skip ranges nodig hebt, gebruikt --proxy-skip-range <excludedIP>,<excludedCIDR>
u deze in uw az connectedk8s connect
opdracht.
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>
Worden alle pods in de azure-arc
naamruimte uitgevoerd?
Als alles correct werkt, moeten uw pods allemaal de Running
status hebben. Voer uit kubectl get pods -n azure-arc
om te controleren of de status van een pod niet Running
is.
Controleer of de DNS-omzetting is geslaagd voor het eindpunt
Vanuit de pod kunt u een DNS-zoekopdracht uitvoeren naar het eindpunt.
Wat gebeurt er als u de opdracht kubectl exec niet kunt uitvoeren om verbinding te maken met de pod en het DNS Utils-pakket te installeren? In deze situatie kunt u een testpod starten in dezelfde naamruimte als de problematische pod en vervolgens de tests uitvoeren.
Notitie
Als u met de DNS-omzetting of uitgaand verkeer de benodigde netwerkpakketten niet kunt installeren, kunt u de rishasi/ubuntu-netutil:1.0
Docker-installatiekopieën gebruiken. In deze installatiekopieën zijn de vereiste pakketten al geïnstalleerd.
Hier volgt een voorbeeldprocedure voor het controleren van DNS-omzetting:
Start een testpod in dezelfde naamruimte als de problematische pod:
kubectl run -it --rm test-pod --namespace <namespace> --image=debian:stable
Nadat de testpod wordt uitgevoerd, krijgt u toegang tot de pod.
Voer de volgende
apt-get
opdrachten uit om andere hulpprogrammapakketten te installeren:apt-get update -y apt-get install dnsutils -y apt-get install curl -y apt-get install netcat -y
Nadat de pakketten zijn geïnstalleerd, voert u de opdracht nslookup uit om de DNS-omzetting naar het eindpunt te testen:
$ nslookup microsoft.com Server: 10.0.0.10 Address: 10.0.0.10#53 ... ... Name: microsoft.com Address: 20.53.203.50
Probeer de DNS-omzetting rechtstreeks vanaf de upstream-DNS-server. In dit voorbeeld wordt Azure DNS gebruikt:
$ nslookup microsoft.com 168.63.129.16 Server: 168.63.129.16 Address: 168.63.129.16#53 ... ... Address: 20.81.111.85
Voer de
host
opdracht uit om te controleren of de DNS-aanvragen worden doorgestuurd naar de upstream-server:$ 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 ms
Voer een testpod uit in de Windows-knooppuntgroep:
# 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"
Voer de opdracht kubectl exec uit om verbinding te maken met de pod met behulp van PowerShell:
kubectl exec -it dnsutil-win -- powershell
Voer de cmdlet Resolve-DnsName uit in PowerShell om te controleren of de DNS-resolutie werkt voor het eindpunt:
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
Als de DNS-omzetting niet lukt, controleert u de DNS-configuratie voor het cluster.
Nog steeds problemen?
Met de bovenstaande stappen worden veel veelvoorkomende verbindingsproblemen opgelost, maar als u nog steeds geen verbinding kunt maken, genereert u een logboekbestand voor probleemoplossing en opent u vervolgens een ondersteuningsaanvraag , zodat we het probleem verder kunnen onderzoeken.
Voer de volgende opdracht uit om het logboekbestand voor probleemoplossing te genereren:
az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>
Wanneer u uw ondersteuningsaanvraag maakt, gebruikt u in de sectie Aanvullende details de optie Bestand uploaden om het gegenereerde logboekbestand te uploaden.
Volgende stappen
- Bekijk meer tips voor probleemoplossing voor het gebruik van Kubernetes met Azure Arc.
- Controleer het proces om een bestaand Kubernetes-cluster te verbinden met Azure Arc.