Container Service for Kubernetes (ACK), podlar arasındaki bağlantı hataları, kümeden genel internete erişim sorunları veya genel internetten LoadBalancer hizmetine bağlantı problemleri gibi yaygın ağ sorunlarını gidermenize yardımcı olan Ağ Tanılama özelliğini sunar. Bu konu, Ağ Tanılama özelliğinin çalışma mantığını ve yaygın bağlantı sorunlarını çözmek için bu özelliği nasıl kullanacağınızı açıklar.
Tanılama özelliğini kullandığınızda sistem, tanı sonuçlarını toplamak amacıyla küme düğümlerinizde bir veri toplama aracı çalıştırır. Toplanan bilgiler arasında sistem sürümü, yük durumu, Docker ve Kubelet durumu ile sistem günlüklerindeki temel hata mesajları yer alır. Veri toplama aracı, iş verilerinizi veya hassas verileri toplamaz.
Önkoşullar
Bir yönetilen ACK kümesi oluşturulmuş olmalıdır.
Ağ tanılama
ACK konsolu, kaynak adresi, hedef adresi, hedef bağlantı noktası ve protokolü belirterek yaygın ağ sorunlarını hızla tanılamanıza olanak tanıyan Ağ Tanılama özelliğini sağlar. Karmaşık konteyner ağ mimarileri, ağ eklentilerinin iç yapısı veya çekirdek düzeyindeki işlemler konusunda derin uzmanlığa sahip olmadan bu özelliği kullanabilirsiniz.
Ağ Tanılama özelliği, açık kaynaklı KubeSkoop projesine dayanır. KubeSkoop, çeşitli ağ eklentileri ve IaaS sağlayıcıları across yaygın Kubernetes kümesi ağ sorunları için tek tıklamayla tanılama imkanı sunar ve kritik çekirdek yollarının derinlemesine izlenmesi ile analizi için eBPF teknolojisini kullanır. Bu konu yalnızca Ağ Tanılama özelliğini kapsamaktadır. Derinlemesine izleme ve analiz hakkında ayrıntılı bilgi için bkz. KubeSkoop Kullanarak Ağ Sorunlarını Giderme.
Çalışma şekli

Topoloji oluşturma: Tanılama bilgilerini sağladıktan sonra Ağ Tanılama, verilen ayrıntılara ve kümeden toplanan podlar, düğümler, hizmetler ve NetworkPolicies gibi kaynak bilgilerine dayalı olarak tanılama için bir erişim topolojisi oluşturur.
Bilgi toplama: Ağ Tanılama, çalışma zamanı bilgilerini, ağ yığını verilerini ve ağ altyapısıyla ilgili ayrıntıları toplar. Bu veriler sorun giderme ve ağ analizi için kullanılır.
Yol simülasyonu: Ağ Tanılama, ECS örneklerinde komutlar çalıştırarak veya kümede toplayıcı pod'lar dağıtarak ilgili düğümlerden veya konteynerlerden ağ yığını bilgilerini toplar. Bu bilgiler; ağ cihazları, sysctl parametreleri, iptables ve IPVS ile ilgili ayrıntıları içerir. Araç ayrıca rota tabloları, güvenlik grupları ve NAT ağ geçitleri gibi cloud altyapı bilgilerini de toplar. Sistem ardından toplanan bu bilgileri beklenen yapılandırmalarla karşılaştırarak yanlış yapılandırmaları tespit eder. Bu süreçte iptables ve yönlendirme kuralları simüle edilir, cihaz durumları kontrol edilir ve cloud rota tabloları ile güvenlik grubu kuralları doğrulanır.
Tanı Sonuçları: Gerçek yapılandırma beklenen durumla karşılaştırıldıktan sonra araç bir ağ topolojisi çıkarır ve anormal düğümler ile sorunları vurgular.
Ağ Tanılama'yı kullanma
Sınırlamalar
Tanılanacak pod'un Running durumunda olması gerekir.
Genel internetten LoadBalancer hizmetine yapılan bağlantılar yalnızca 10 veya daha az arka uç pod'a sahip Katman 4 Classic Load Balancer (CLB) örnekleri için desteklenir.
Tanılama şu anda ACK Serverless kümeleri veya sanal düğümler için desteklenmemektedir.
Yordam
ACK konsolunda oturum açın. Sol gezinme bölmesinde Clusters öğesini tıklayın.
Clusters sayfasında hedef kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneğini belirleyin.
Diagnostics sayfasında Network diagnostics sekmesini tıklayın ve ardından sol üst köşedeki Diagnose butonuna tıklayın.
-
Access Information panelinde Source IP Address, Target Address ve Port alanlarını girin ve Protocol değerini seçin. Bildirimi okuyun, I understand and agree seçeneğini işaretleyin ve ardından Diagnose butonuna tıklayın.
Tanılama parametreleri hakkında bilgi için bkz. Tanılama parametreleri.
-
Diagnosis Result sayfasında sonuçları görüntüleyebilirsiniz. Full access path bölümü, tanılanan bağlantı yolunun uçtan uca görünümünü gösterir.
Anormal düğümler farklı bir renkle vurgulanır. Yaygın tanı sonuçları hakkında bilgi için bkz. Yaygın tanı sonuçları ve çözümleri.
Tanı sonuçları; Level (örneğin FATAL), Node ve Diagnosis result olmak üzere üç sütunlu bir tabloda görüntülenir. Bu sayede anormal düğümleri ve belirli yönlendirme hatalarını hızlıca bulabilirsiniz. Sonuçlar sorununuzu çözmezse daha fazla yardım almak için sayfadaki Submit Ticket veya Feedback bağlantısını tıklayın.
Tanılama parametreleri
Senaryo 1: Pod'dan pod'a ve pod'dan düğüme
Podlar arasında veya podlar ile düğümler arasında bağlantı sorunları yaşıyorsanız bağlantıyı gidermek için Ağ Tanılama'yı kullanabilirsiniz. Aşağıdaki tabloda parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Senaryo 2: Pod ve düğümden hizmete
Hedef olarak küme IP'sini kullanarak bir hizmete yönelik bağlantıyı tanılayabilirsiniz. Araç, bir pod veya düğümden hizmetin her bir uç noktasına giden ağ yolunu kontrol eder ve ilgili ağ yapılandırmalarını doğrular. Aşağıdaki tabloda parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Senaryo 3: DNS yolu
Hedef bir etki alanı adı olduğunda, kaynaktan hedef IP adresine giden yolu kontrol etmenin yanı sıra küme içi DNS'in doğru çalışıp çalışmadığını da kontrol etmeniz gerekebilir. Olası DNS çözümleme sorunlarını belirlemek için Ağ Tanılama'yı kullanarak bir pod'dan kümenin DNS hizmetine (kube-system ad alanındaki kube-dns hizmeti) bağlantıyı kontrol edin.
kube-system ad alanındaki kube-dns hizmetinin küme IP'sini almak için aşağıdaki komutu çalıştırın:
kubectl get svc -n kube-system kube-dns
Örnek çıktı:
NAME TYPE CLUSTER-IP EXTERNAL-IP <none> 53/UDP,53/TCP,9153/TCP 6d
Çıktıda 172,16.XX.XX, kube-dns hizmetinin küme IP'sidir. Bu IP adresini hedef adres olarak kullanın. Aşağıdaki tabloda parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Senaryo 4: Pod ve düğümden internete
Bir pod veya düğümden genel bir IP adresine bağlantıyı kontrol etmek için Ağ Tanılama'yı kullanabilirsiniz. Hedef bir etki alanı adıysa öncelikle bunu manuel olarak genel IP adresine çözümlemeniz gerekir. Aşağıdaki tabloda parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Senaryo 5: İnternetten LoadBalancer hizmetine
LoadBalancer hizmetine genel internetten erişemiyorsanız kaynak olarak genel bir IP adresi ve hedef olarak LoadBalancer hizmetinin harici IP adresini kullanarak bağlantıyı tanılayabilirsiniz. Aşağıdaki tabloda parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yaygın tanı sonuçları ve çözümleri
|
Tanı sonucu |
Açıklama |
Çözüm |
|
pod container ... is not ready |
Pod içindeki konteyner hazır değil. |
Pod'un sağlık durumunu kontrol edin ve sorunu düzeltin. |
|
NetworkPolicy ... deny the packet from ... |
Bir NetworkPolicy paketi engelliyor. |
İlgili NetworkPolicy kurallarını değiştirin. |
|
no process listening on ... |
Konteynerde veya düğümde belirtilen bağlantı noktasında ve protokolde dinleyen hiçbir işlem yok. |
Hedef işlemin doğru çalıştığını doğrulayın. Bağlantı noktası ve protokol dahil olmak üzere tanı parametrelerini kontrol edin. |
|
no route to host .../invalid route ... for packet ... |
Ana bilgisayara giden bir rota bulunamadı veya mevcut bir rota yanlış bir hedefi gösteriyor. |
Ağ eklentisinin doğru çalışıp çalışmadığını kontrol edin. |
|
... do not have same security group |
İki ECS örneğinin güvenlik grupları arasında trafiğe izin veren kurallar bulunmuyor; bu durum paket kaybına neden olabilir. |
ECS örneklerini aynı güvenlik grubunu kullanacak şekilde yapılandırın. |
|
security group ... not allow packet ... |
ECS örneğindeki güvenlik grubu paketi engelliyor. |
Güvenlik grubu kurallarını kontrol edin ve gerekli adresten gelen trafiğe izin verin. |
|
Cloud rota tablosunda hedef IP adresine giden bir rota bulunmuyor. |
Cloud rota tablosu yapılandırmasını kontrol edin. Hedef genel bir IP adresiyse genel NAT ağ geçidi yapılandırmasını kontrol edin. |
|
Cloud rota tablosundaki rota beklenen sonraki atlamayı göstermiyor. |
Cloud rota tablosu yapılandırmasını kontrol edin. Hedef genel bir IP adresiyse genel NAT ağ geçidi yapılandırmasını kontrol edin. |
|
no snat entry on nat gateway ... |
Belirtilen SNAT girişi genel NAT ağ geçidinde bulunamadı. |
Genel NAT ağ geçidindeki SNAT kuralı yapılandırmasını kontrol edin. |
|
backend ... health status for port ..., not "normal" |
CLB örneğinin bir arka uç sunucusu sağlık kontrolünden başarısız oldu. |
Doğru uç noktaların CLB örneğine ekli olduğunu ve bu uç noktalar üzerindeki arka uç hizmetlerinin sağlıklı olduğunu doğrulayın. |
|
cannot find listener port ... for slb ... |
Belirtilen dinleyici bağlantı noktası CLB örneğinde bulunamadı. |
LoadBalancer hizmet yapılandırmasını kontrol edin ve bağlantı noktası ile protokol dahil olmak üzere tanı parametrelerinin doğru olduğunu doğrulayın. |
|
status of loadbalancer for ... port ... not "running" |
CLB örneğindeki dinleyici Running durumunda değil. |
CLB örneğindeki dinleyicinin durumunu kontrol edin. |
|
Service ... has no valid endpoint |
Hizmetin geçerli uç noktası yok. |
Hizmet etiket seçicisinin beklendiği gibi yapılandırıldığını kontrol edin ve ilgili uç noktaların var olduğunu ve sağlıklı olduğunu doğrulayın. Küme içinden bir LoadBalancer hizmet IP'sine erişimle ilgili sorunlar için bkz. Küme içinden CLB örneklerine erişim başarısız oluyor. |