Sobes.tech
Middle+

Ako sa zabezpečuje presmerovanie prevádzky k ingressu zvnútra klastru?

sobes.tech AI

Odpoveď od AI

Na presmerovanie prevádzky z vnútra klastrera na Ingress sa používa DNS názov služby Ingress Controller. V štandardnej konfigurácii je Ingress Controller nasadený ako služba typu LoadBalancer alebo NodePort.

  1. Objavovanie služby: Aplikácia vnútri klastrera používa DNS názov služby, ktorá vystavuje (zviditeľňuje) Ingress Controller. Napríklad nginx-ingress-controller.ingress-nginx.svc.cluster.local, ak sa používa nginx-ingress s príslušným názvom služby.

  2. IP služby/ClusterIP: DNS server Kubernetes klastru (napríklad CoreDNS) rozrieši tento DNS názov na ClusterIP služby Ingress Controller.

  3. kube-proxy: kube-proxy na uzle, kde beží aplikácia, zachytáva prevádzku smerujúcu na ClusterIP služby Ingress Controller.

  4. iptables/ipvs: kube-proxy používa pravidlá iptables alebo ipvs na smerovanie prevádzky na jeden z podov Ingress Controller.

  5. Spracovanie v Ingress Controller: Pody Ingress Controller prijímajú prevádzku a podľa pravidiel Ingress zdrojov ju presmerujú na príslušnú službu vo vnútri klastrera.

Príklad požiadavky z podu:

# Požiadavka na službu cez Ingress, s použitím interného DNS
curl http://my-app.example.com

Tu sa my-app.example.com rozrieši DNS serverom klastrera na ClusterIP služby Ingress Controller, ak sú správne nakonfigurované záznamy alebo ak je Ingress Controller nakonfigurovaný na spracovanie takýchto požiadaviek priamo (menej bežné pre vnútorný traffic). Väčšina vnútorného trafficu pristupuje ku službe podľa jej DNS mena. Ak je potrebné explicitne prejsť cez Ingress zvnútra klastrera, je potrebné zabezpečiť, že Ingress Controller je dostupný cez ClusterIP alebo lokálnu IP podov a že DNS záznam alebo mechanizmus routovania smeruje na neho.

Najbežnejší vzor komunikácie medzi službami v rámci klastrera je priame pripojenie ku službe podľa jej DNS mena (<názov-služby>.<namespace>.svc.cluster.local), obchádzajúc Ingress. Presmerovanie prevádzky k Ingress zvnútra klastrera je zvyčajne potrebné pre testovanie alebo špecifické scenáre routovania.