Aracılığıyla paylaş


Azure Arc özellikli Kubernetes kümeleri için bağlantı sorunlarını tanılama

Bir kümeyi Azure Arc'a bağlarken sorun yaşıyorsanız, bunun nedeni büyük olasılıkla burada listelenen sorunlardan biridir. Destekli yardım içeren iki akış çizelgesi sağlıyoruz: biri ara sunucu kullanmıyorsanız, diğeri de ağ bağlantınız ara sunucu kullanıyorsa geçerlidir.

İpucu

Bu akış çizelgesindeki adımlar, kümenizi bağlamak için Azure CLI veya Azure PowerShell kullanmanız fark eder. Ancak, bazı adımlar Azure CLI kullanımını gerektirir. Azure CLI'yı henüz yüklemediyseniz başlamadan önce bunu yapmayı unutmayın.

Ara sunucusu olmayan bağlantılar

Bir kümeyi ara sunucu olmadan Azure Arc'a bağlamaya çalışırken sorununuzu tanılamak için bu akış çizelgesini gözden geçirin. Her adım hakkında daha fazla ayrıntı aşağıda verilmiştir.

Ara sunucu kullanmadığınızda bağlantı sorunlarını denetlemenin görsel bir gösterimini gösteren akış çizelgesi.

Azure kimliği yeterli izinlere sahip mi?

Kümeyi bağlamak için önkoşulları gözden geçirin ve kümeyi bağlamak için kullandığınız kimliğin gerekli izinlere sahip olduğundan emin olun.

Azure CLI'nın en son sürümünü mü kullanıyorsunuz?

En son sürümün yüklü olduğundan emin olun.

Kümenizi Azure PowerShell kullanarak bağladıysanız en son sürümü çalıştırdığınızdan emin olun.

connectedk8s Uzantı en son sürüm mü?

Şu komutu çalıştırarak Azure CLI connectedk8s uzantısını en son sürüme güncelleştirin:

az extension update --name connectedk8s

Uzantıyı henüz yüklemediyseniz, aşağıdaki komutu çalıştırarak bunu yapabilirsiniz:

az extension add --name connectedk8s

kubeconfig doğru kümeyi mi işaret ediyor?

Hedef bağlam adını onaylamak için komutunu çalıştırın kubectl config get-contexts . Ardından komutunu çalıştırarak kubectl config use-context <target-cluster-name>varsayılan bağlamı doğru kümeye ayarlayın.

Tüm gerekli kaynak sağlayıcıları kayıtlı mı?

Microsoft.Kubernetes, Microsoft.KubernetesConfiguration ve Microsoft.ExtendedLocation kaynak sağlayıcılarının kayıtlı olduğundan emin olun.

Tüm ağ gereksinimleri karşılanıyor mu?

Ağ gereksinimlerini gözden geçirin ve gerekli uç noktaların engellenmediğinden emin olun.

Ad alanında azure-arc tüm podlar çalışıyor mu?

Her şey düzgün çalışıyorsa podlarınızın tümü durumunda olmalıdır Running . Herhangi bir pod durumunun olup olmadığını Runningonaylamak için komutunu çalıştırınkubectl get pods -n azure-arc.

Hala sorun mu yaşıyorsunuz?

Yukarıdaki adımlar birçok yaygın bağlantı sorununu çözer, ancak yine de başarıyla bağlanamıyorsanız sorunu daha fazla inceleyebilmemiz için bir sorun giderme günlük dosyası oluşturun ve bir destek isteği açın.

Sorun giderme günlük dosyasını oluşturmak için aşağıdaki komutu çalıştırın:

az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>

Destek isteğinizi oluştururken, Ek ayrıntılar bölümünde, oluşturulan günlük dosyasını karşıya yüklemek için Dosya yükleme seçeneğini kullanın.

Ara sunucuyla bağlantılar

En az bir makinede ara sunucu kullanıyorsanız, temel sorun giderme adımları için ara sunucu olmayan akış çizelgesinin ilk beş adımını (kaynak sağlayıcısı kaydı aracılığıyla) tamamlayın. Daha sonra sorun yaşamaya devam ediyorsanız ek sorun giderme adımları için sonraki akış çizelgesini gözden geçirin. Her adım hakkında daha fazla ayrıntı aşağıda verilmiştir.

Ara sunucu kullanırken bağlantı sorunlarını denetlemenin görsel bir gösterimini gösteren akış çizelgesi.

Makine komutları bir ara sunucunun arkasında mı yürütüyor?

Makine bir ara sunucunun arkasındaki komutları yürütüyorsa, tüm gerekli ortam değişkenlerini ayarlamanız gerekir. Daha fazla bilgi için bkz . Giden ara sunucu kullanarak bağlanma.

Örneğin:

export HTTP_PROXY="http://<proxyIP>:<proxyPort>"
export HTTPS_PROXY="https://<proxyIP>:<proxyPort>"
export NO_PROXY="<cluster-apiserver-ip-address>:<proxyPort>"

Proxy sunucusu yalnızca güvenilen sertifikaları kabul ediyor mu?

komutunu çalıştırırken ekleyerek --proxy-cert <path-to-cert-file> sertifika dosya yolunu eklediğinizden az connectedk8s connect emin olun.

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Proxy sunucusu gerekli ağ uç noktalarına ulaşabiliyor mu?

Ağ gereksinimlerini gözden geçirin ve gerekli uç noktaların engellenmediğinden emin olun.

Proxy sunucusu yalnızca HTTP mi kullanıyor?

Proxy sunucunuz yalnızca HTTP kullanıyorsa, her iki parametre için de kullanabilirsiniz proxy-http .

Proxy sunucunuz hem HTTP hem de HTTPS ile ayarlandıysa, komutu belirtilen ve --proxy-http parametreleriyle --proxy-https çalıştırınaz connectedk8s connect. HTTP ara sunucusu ve --proxy-https HTTPS ara sunucusu için kullandığınızdan --proxy-http emin olun.

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>  

Ara sunucu, hizmetten hizmete iletişim için atlama aralıkları gerektiriyor mu?

Aralıkları atlamanız gerekiyorsa komutunu kullanın --proxy-skip-range <excludedIP>,<excludedCIDR>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>

Ad alanında azure-arc tüm podlar çalışıyor mu?

Her şey düzgün çalışıyorsa podlarınızın tümü durumunda olmalıdır Running . Herhangi bir pod durumunun olup olmadığını Runningonaylamak için komutunu çalıştırınkubectl get pods -n azure-arc.

UÇ nokta için DNS çözümlemesinin başarılı olup olmadığını denetleyin

Pod içinden uç noktaya bir DNS araması çalıştırabilirsiniz.

Pod'a bağlanmak ve DNS Yardımcı Programları paketini yüklemek için kubectl exec komutunu çalıştıramıyorsanız ne olur? Bu durumda, sorunlu pod ile aynı ad alanında bir test podunu başlatabilir ve ardından testleri çalıştırabilirsiniz.

Not

DNS çözümlemesi veya çıkış trafiği gerekli ağ paketlerini yüklemenize izin vermiyorsa docker görüntüsünü kullanabilirsiniz rishasi/ubuntu-netutil:1.0 . Bu görüntüde, gerekli paketler zaten yüklüdür.

AŞAĞıDA DNS çözümlemesini denetlemeye yönelik örnek bir yordam verilmişti:

  1. Sorunlu podla aynı ad alanında bir test podunu başlatın:

    kubectl run -it --rm test-pod --namespace <namespace> --image=debian:stable
    

    Test podu çalıştırıldıktan sonra pod'a erişim elde edersiniz.

  2. Diğer araç paketlerini yüklemek için aşağıdaki apt-get komutları çalıştırın:

    apt-get update -y
    apt-get install dnsutils -y
    apt-get install curl -y
    apt-get install netcat -y
    
  3. Paketler yüklendikten sonra, uç noktaya DNS çözümlemesini test etmek için nslookup komutunu çalıştırın:

    $ nslookup microsoft.com
    Server:         10.0.0.10
    Address:        10.0.0.10#53
    ...
    ...
    Name:   microsoft.com
    Address: 20.53.203.50
    
  4. Doğrudan yukarı akış DNS sunucusundan DNS çözümlemesini deneyin. Bu örnekte Azure DNS kullanılır:

    $ nslookup microsoft.com 168.63.129.16
    Server:         168.63.129.16
    Address:        168.63.129.16#53
    ...
    ...
    Address: 20.81.111.85
    
  5. DNS isteklerinin host yukarı akış sunucusuna yönlendirilip yönlendirmediğini denetlemek için komutunu çalıştırın:

    $ 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. Windows düğüm havuzunda test podunu çalıştırın:

    # 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. PowerShell kullanarak pod'a bağlanmak için kubectl exec komutunu çalıştırın:

    kubectl exec -it dnsutil-win powershell
    
  8. DNS çözümlemesinin uç nokta için çalışıp çalışmadığını denetlemek için PowerShell'de Resolve-DnsName cmdlet'ini çalıştırın:

    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
    

DNS çözümlemesi başarılı olmazsa küme için DNS yapılandırmasını doğrulayın.

Hala sorun mu yaşıyorsunuz?

Yukarıdaki adımlar birçok yaygın bağlantı sorununu çözer, ancak yine de başarıyla bağlanamıyorsanız sorunu daha fazla inceleyebilmemiz için bir sorun giderme günlük dosyası oluşturun ve bir destek isteği açın.

Sorun giderme günlük dosyasını oluşturmak için aşağıdaki komutu çalıştırın:

az connectedk8s troubleshoot -g <myResourceGroup> -n <myK8sCluster>

Destek isteğinizi oluştururken, Ek ayrıntılar bölümünde, oluşturulan günlük dosyasını karşıya yüklemek için Dosya yükleme seçeneğini kullanın.

Sonraki adımlar