Sobes.tech
Middle+

Kuidas toimub liikluse suunamine ingressi suunas klasteri seest?

sobes.tech AI

Vastus AI-lt

Klasteri sees liikluse suunamiseks Ingressi suunas kasutatakse Ingress Controller DNS-nime. Standardse konfiguratsiooni korral paigaldatakse Ingress Controller kui LoadBalancer või NodePort tüüpi teenus.

  1. Service Discovery: Rakendus klasteris kasutab DNS-nime, mis avalikustab (näitab) Ingress Controlleri. Näiteks nginx-ingress-controller.ingress-nginx.svc.cluster.local, kui kasutatakse nginx-ingressi sobiva teenuse nimega.

  2. Service IP/ClusterIP: Kubernetes klastris DNS-server (näiteks CoreDNS) lahendab selle DNS-nime ClusterIP teenuseks, mis esindab Ingress Controllerit.

  3. kube-proxy: kube-proxy töömasinal, kus rakendus töötab, püüab liiklust, mis on suunatud ClusterIP teenusele, mis esindab Ingress Controllerit.

  4. iptables/ipvs: kube-proxy kasutab iptables või ipvs reegleid liikluse marsruutimiseks ühe Ingress Controlleri pordi või podi suunas.

  5. Ingress Controlleri töötlemine: Ingress Controlleri podid saavad liiklust ja suunavad selle Ingress ressursside reeglite alusel vastavale sisemisele teenusele klastris.

Näide päringust podist:

# Päring Ingressi kaudu, kasutades sisemist DNS-i
curl http://my-app.example.com 

Siin my-app.example.com lahendatakse DNS-serveris ClusterIP teenuse Ingress Controlleriks, kui vastavad kirjed on seadistatud või kui Ingress Controller on konfigureeritud selliste päringute otse töötlemiseks (vähem levinud sisemise liikluse puhul). Enamasti pöördub sisemine liiklus teenuse DNS-nime kaudu (<service-name>.<namespace>.svc.cluster.local), vältides Ingressi. Kui soovite klastrist otse Ingressi kaudu minna, tuleb veenduda, et Ingress Controller on kättesaadav ClusterIP või lokaalse IP kaudu ning DNS-kirjed või marsruutimismehhanism suunab selle sinna.

Kõige levinum muster klasteri sees on otse teenuse kasutamine selle DNS-nime kaudu (<service-name>.<namespace>.svc.cluster.local), vältides Ingressi. Traadisuunamine Inglise kaudu klastris sees on tavaliselt vajalik testimiseks või spetsiifiliste marsruutimisskriptide jaoks.