Kubernetes Networking: Pod'lar, Servisler ve Trafiği İçeri Almak
Kubernetes ağı ilk bakışta karmaşık görünse de temel mantık basit: her pod bir IP alır ve diğer pod'larla konuşabilir. Sorun, pod'lar sürekli oluşup yok olduğu için bu IP'ler de değişir. burada Servisler devreye giriyor.
Bir Service, pod'ları etiketleriyle bulur (label selector) ve onlara stabil bir adres verir. Ama dikkat: Service içinde pod'lar yoktur, sadece onları gösterir. Canlı hedef listesi EndpointSlice'da tutulur. Eğer Service var ama kimse cevap vermiyorsa, 99 kez selector ile pod etiketleri uyuşmuyor demektir. Kaynak yazı bu sorunun teşhisini çok iyi açıklıyor.
Cluster DNS (CoreDNS) telefon rehberi gibi çalışır: `service.namespace.svc.cluster.local` şeklinde adresler çözer. Veritabanına ulaşamayan uygulamalar çoğu zaman aslında DNS veya selector hatasıyla karşı karşıyadır, ağ sorunu değil.
Dış dünyadan trafiği içeri almak için Ingress kullanırsın. Ama Ingress sadece kurallardır; onları uygulayan Ingress controller'dır. Controller yüklü değilse, Ingress sessizce hiçbir şey yapmaz. Trafiğin kapısı olarak düşün.
NetworkPolicy varsayılan olarak kapalıdır (her şeye izin). Kısıtlama yapmak istersen açıkça tanımlamalısın ve CNI plugin'in onu desteklemesi gerekir.
Kubernetes ağı, deployment'ın ötesine geçtiğin yerdedir. Selector ve DNS hataları bulup düzeltmeyi öğrensen, çoğu sorun çözülür.
0 yorum