Sdílet prostřednictvím


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.

Vývojový diagram znázorňující vizuální znázornění kontroly problémů s připojením při použití proxy serveru

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.

Vývojový diagram znázorňující vizuální znázornění kontroly problémů s připojením při použití proxy serveru

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:

  1. 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.

  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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"
    
  7. Spuštěním příkazu kubectl exec se připojte k podu pomocí PowerShellu:

    kubectl exec -it dnsutil-win -- powershell
    
  8. 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