Diagnostika problémů s připojením pro clustery Kubernetes s podporou Služby Azure Arc
Pokud máte problémy s připojením clusteru ke službě Azure Arc, příčinou je pravděpodobně některý z uvedených problémů. Poskytujeme dva vývojové diagramy s asistencí: jeden, pokud nepoužíváte proxy server, a jeden, který platí, pokud vaše síťové připojení používá proxy server.
Tip
Kroky v tomto vývojovém diagramu platí bez ohledu na to, jestli k připojení clusteru používáte Azure CLI nebo Azure PowerShell. Některé kroky ale vyžadují použití Azure CLI. Pokud jste ještě nenainstalovali Azure CLI, nezapomeňte to udělat, než začnete.
Připojení bez proxy serveru
Projděte si tento vývojový diagram a diagnostikujte váš problém při pokusu o připojení clusteru ke službě Azure Arc bez proxy serveru. Další podrobnosti o jednotlivých krocích najdete níže.
Má identita Azure dostatečná oprávnění?
Zkontrolujte požadavky na připojení clusteru a ujistěte se, že identita, kterou používáte pro připojení clusteru, má potřebná oprávnění.
Používáte nejnovější verzi Azure CLI?
Ujistěte se, že máte nainstalovanou nejnovější verzi.
Pokud jste cluster připojili pomocí Azure PowerShellu, ujistěte se, že používáte nejnovější verzi.
connectedk8s
Je rozšíření nejnovější verzí?
Spuštěním tohoto příkazu aktualizujte rozšíření Azure CLI connectedk8s
na nejnovější verzi:
az extension update --name connectedk8s
Pokud jste rozšíření ještě nenainstalovali, můžete to udělat spuštěním následujícího příkazu:
az extension add --name connectedk8s
Ukazuje kubeconfig na správný cluster?
Spuštěním potvrďte kubectl config get-contexts
název cílového kontextu. Potom nastavte výchozí kontext na správný cluster spuštěním kubectl config use-context <target-cluster-name>
příkazu .
Jsou všichni požadovaná poskytovatelé prostředků zaregistrovaní?
Ujistěte se, že jsou zaregistrovaní poskytovatelé prostředků Microsoft.Kubernetes, Microsoft.KubernetesConfiguration a Microsoft.ExtendedLocation.
Jsou splněny všechny požadavky na síť?
Zkontrolujte požadavky na síť a ujistěte se, že nejsou blokované žádné požadované koncové body.
Jsou všechny pody v azure-arc
oboru názvů spuštěné?
Pokud všechno funguje správně, všechny pody by měly být ve Running
stavu. Spusťte a ověřte kubectl get pods -n azure-arc
, jestli nějaký pod není Running
.
Máte stále problémy?
Výše uvedený postup vyřeší řadu běžných problémů s připojením, ale pokud se stále nemůžete úspěšně připojit, vygenerujte soubor protokolu řešení potíží a otevřete žádost o podporu, abychom mohli problém dále prošetřit.
Pokud chcete vygenerovat soubor protokolu řešení potíží, spusťte následující příkaz:
az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>
Při vytváření žádosti o podporu použijte v části Další podrobnosti možnost Nahrání souboru k nahrání vygenerovaného souboru protokolu.
Připojení k proxy serveru
Pokud používáte proxy server alespoň na jednom počítači, proveďte prvních pět kroků vývojového diagramu, který není proxy serverem (prostřednictvím registrace poskytovatele prostředků), a proveďte základní kroky pro řešení potíží. Pokud stále dochází k problémům, projděte si další vývojový diagram a vyhledejte další kroky pro řešení potíží. Další podrobnosti o jednotlivých krocích najdete níže.
Spouští počítač příkazy za proxy serverem?
Pokud počítač spouští příkazy za proxy serverem, budete muset nastavit všechny potřebné proměnné prostředí. Další informace najdete v tématu Připojení pomocí odchozího proxy serveru.
Příklad:
export HTTP_PROXY="http://<proxyIP>:<proxyPort>"
export HTTPS_PROXY="https://<proxyIP>:<proxyPort>"
export NO_PROXY="<cluster-apiserver-ip-address>:<proxyPort>"
Přijímá proxy server jenom důvěryhodné certifikáty?
Nezapomeňte zahrnout cestu k souboru certifikátu zahrnutím --proxy-cert <path-to-cert-file>
při spuštění az connectedk8s connect
příkazu.
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>
Je proxy server schopný dosáhnout požadovaných koncových bodů sítě?
Zkontrolujte požadavky na síť a ujistěte se, že nejsou blokované žádné požadované koncové body.
Používá proxy server pouze protokol HTTP?
Pokud proxy server používá pouze protokol HTTP, můžete použít proxy-http
oba parametry.
Pokud je proxy server nastavený pomocí protokolu HTTP i HTTPS, spusťte az connectedk8s connect
příkaz se zadanými --proxy-https
parametry a --proxy-http
parametry. Ujistěte se, že používáte --proxy-http
proxy server HTTP a --proxy-https
proxy server HTTPS.
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>
Vyžaduje proxy server rozsahy přeskočení pro komunikaci mezi službami?
Pokud potřebujete přeskočit rozsahy, použijte --proxy-skip-range <excludedIP>,<excludedCIDR>
ho ve svém az connectedk8s connect
příkazu.
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>
Jsou všechny pody v azure-arc
oboru názvů spuštěné?
Pokud všechno funguje správně, všechny pody by měly být ve Running
stavu. Spusťte a ověřte kubectl get pods -n azure-arc
, jestli nějaký pod není Running
.
Zkontrolujte, jestli je překlad DNS pro koncový bod úspěšný.
V podu můžete spustit vyhledávání DNS do koncového bodu.
Co když nemůžete spustit příkaz kubectl exec pro připojení k podu a instalaci balíčku DNS Utils? V takovém případě můžete spustit testovací pod ve stejném oboru názvů jako problematický pod a pak spustit testy.
Poznámka:
Pokud překlad DNS nebo výchozí přenos dat neumožňuje nainstalovat potřebné síťové balíčky, můžete použít image Dockeru rishasi/ubuntu-netutil:1.0
. Na této imagi jsou už nainstalované požadované balíčky.
Tady je příklad postupu kontroly překladu DNS:
Spusťte testovací pod ve stejném oboru názvů jako problematický pod:
kubectl run -it --rm test-pod --namespace <namespace> --image=debian:stable
Po spuštění testovacího podu získáte přístup k podu.
Spuštěním následujících
apt-get
příkazů nainstalujte další balíčky nástrojů:apt-get update -y apt-get install dnsutils -y apt-get install curl -y apt-get install netcat -y
Po instalaci balíčků spusťte příkaz nslookup a otestujte překlad DNS do koncového bodu:
$ nslookup microsoft.com Server: 10.0.0.10 Address: 10.0.0.10#53 ... ... Name: microsoft.com Address: 20.53.203.50
Zkuste překlad DNS přímo z nadřazeného serveru DNS. V tomto příkladu se používá Azure DNS:
$ nslookup microsoft.com 168.63.129.16 Server: 168.63.129.16 Address: 168.63.129.16#53 ... ... Address: 20.81.111.85
Spuštěním
host
příkazu zkontrolujte, jestli se požadavky DNS směrují na nadřazený 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
Spusťte testovací pod ve fondu uzlů Windows:
# 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"
Spuštěním příkazu kubectl exec se připojte k podu pomocí PowerShellu:
kubectl exec -it dnsutil-win -- powershell
Spuštěním rutiny Resolve-DnsName v PowerShellu zkontrolujte, jestli pro koncový bod funguje překlad DNS:
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
Pokud překlad DNS není úspěšný, ověřte konfiguraci DNS pro cluster.
Máte stále problémy?
Výše uvedený postup vyřeší řadu běžných problémů s připojením, ale pokud se stále nemůžete úspěšně připojit, vygenerujte soubor protokolu řešení potíží a otevřete žádost o podporu, abychom mohli problém dále prošetřit.
Pokud chcete vygenerovat soubor protokolu řešení potíží, spusťte následující příkaz:
az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>
Při vytváření žádosti o podporu použijte v části Další podrobnosti možnost Nahrání souboru k nahrání vygenerovaného souboru protokolu.
Další kroky
- Podívejte se na další tipy pro řešení potíží pro používání Kubernetes s podporou Azure Arc.
- Zkontrolujte proces připojení existujícího clusteru Kubernetes ke službě Azure Arc.