Jak je zajištěno přesměrování provozu k ingressu uvnitř clusteru?
sobes.tech AI
Odpověď od AI
Pro přesměrování provozu z vnitřku clusteru na Ingress se používá DNS jméno služby Ingress Controller. Ve výchozí konfiguraci je Ingress Controller nasazen jako služba typu LoadBalancer nebo NodePort.
-
Objevování služby: Aplikace uvnitř clusteru používá DNS jméno služby, která vystavuje (zviditelňuje) Ingress Controller. Například
nginx-ingress-controller.ingress-nginx.svc.cluster.local, pokud je použit nginx-ingress s odpovídajícím názvem služby. -
IP služby/ClusterIP: DNS server Kubernetes clusteru (například CoreDNS) překládá toto DNS jméno na ClusterIP služby Ingress Controller.
-
kube-proxy:
kube-proxyna uzlu, kde běží aplikace, zachytává provoz směřující na ClusterIP služby Ingress Controller. -
iptables/ipvs:
kube-proxypoužívá pravidlaiptablesneboipvsk směrování provozu na jeden z podů Ingress Controller. -
Zpracování v Ingress Controller: Pody Ingress Controller přijímají provoz a podle pravidel zdrojů Ingress jej přesměrovávají na odpovídající službu uvnitř clusteru.
Příklad požadavku z podu:
# Požadavek na službu přes Ingress, s použitím interního DNS
curl http://my-app.example.com
Zde se my-app.example.com překládá DNS serverem na clusteru na ClusterIP služby Ingress Controller, pokud jsou správné záznamy nakonfigurovány nebo pokud je Ingress Controller nakonfigurován tak, aby tyto požadavky zpracovával přímo (méně běžné pro interní provoz). Většina interního provozu přistupuje ke službě podle jejího DNS jména. Pokud je třeba explicitně projít přes Ingress uvnitř clusteru, je třeba zajistit, že Ingress Controller je dostupný přes ClusterIP nebo lokální IP podů a že DNS záznam nebo mechanismus směrování směřuje na něj.
Nejčastější vzor komunikace mezi službami uvnitř clusteru je přímý přístup ke službě podle jejího DNS jména (<název-služby>.<namespace>.svc.cluster.local), obcházející Ingress. Přesměrování provozu k Ingress z vnitřku clusteru je obvykle potřeba pro testování nebo specifické scénáře směrování.