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.
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ı Running
onaylamak 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.
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ı Running
onaylamak 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:
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.
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
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
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
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
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"
PowerShell kullanarak pod'a bağlanmak için kubectl exec komutunu çalıştırın:
kubectl exec -it dnsutil-win powershell
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
- Azure Arc özellikli Kubernetes'i kullanmaya yönelik diğer sorun giderme ipuçlarını görüntüleyin.
- Mevcut bir Kubernetes kümesini Azure Arc'a bağlama işlemini gözden geçirin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin