Küme içinden ingress'e trafik yönlendirmesi nasıl yapılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Küme içinden gelen trafiği Ingress'e yönlendirmek için Ingress Controller'ın DNS adını kullanılır. Standart yapılandırmada, Ingress Controller, LoadBalancer veya NodePort tipi bir Service olarak dağıtılır.
-
Service Keşfi: Küme içindeki uygulama, Ingress Controller'ı expose eden (açan) Service'in DNS adını kullanır. Örneğin,
nginx-ingress-controller.ingress-nginx.svc.cluster.local, nginx-ingress kullanılıyorsa ve uygun Service adıyla yapılandırılmışsa. -
Service IP/ClusterIP: Kubernetes kümesinin DNS sunucusu (örneğin, CoreDNS), bu DNS adını Ingress Controller Service'in ClusterIP'sine çözümler.
-
kube-proxy: Uygulamanın çalıştığı düğümdeki
kube-proxy, Ingress Controller'ın ClusterIP Service'ına yönlendirilen trafiği yakalar. -
iptables/ipvs:
kube-proxy, trafiği Ingress Controller pod'larından birine yönlendirmek içiniptablesveyaipvskurallarını kullanır. -
Ingress Controller'da İşleme: Ingress Controller pod'ları trafiği alır ve Ingress kaynaklarının kurallarına göre, onu küme içindeki uygun servise yönlendirir.
Bir pod'dan örnek istek:
# İç DNS kullanarak Ingress üzerinden servise istek
curl http://my-app.example.com
Burada, my-app.example.com DNS sunucusu tarafından ClusterIP'ye çözülür, uygun kayıtlar yapılandırılmışsa veya Ingress Controller bu tür istekleri doğrudan işleyecek şekilde ayarlanmışsa (daha az yaygın), iç trafik genellikle DNS adıyla servise ulaşır. Eğer iç cluster'dan Ingress üzerinden geçmek gerekiyorsa, Ingress Controller'ın ClusterIP veya pod'ların yerel IP'siyle erişilebilir olduğundan ve DNS kaydı veya yönlendirme mekanizmasının ona yönlendirdiğinden emin olunmalıdır.
Küme içi servisler arasında iletişim için en yaygın desen, doğrudan DNS adıyla (<service-name>.<namespace>.svc.cluster.local) servise erişmek ve Ingress'ten kaçınmaktır. Cluster içinden Ingress'e trafik yönlendirmesi genellikle testler veya özel yönlendirme senaryoları için gereklidir.