Sobes.tech
Middle+

Hogyan történik a forgalom átirányítása az ingress felé a klaszteren belülről?

sobes.tech MI

Válasz az MI-től

A klaszteren belüli forgalom Ingress-be történő átirányításához az Ingress Controller szolgáltatás DNS nevét használják. Az alapértelmezett konfigurációban az Ingress Controller LoadBalancer vagy NodePort típusú szolgáltatásként van telepítve.

  1. Szolgáltatás felfedezése: A klaszteren belüli alkalmazás a szolgáltatás DNS nevét használja, amely kiteszi (nyilvánossá teszi) az Ingress Controllert. Például nginx-ingress-controller.ingress-nginx.svc.cluster.local, ha nginx-ingress-t használnak a megfelelő szolgáltatásnévvel.

  2. Szolgáltatás IP/ClusterIP: A Kubernetes DNS szervere (pl. CoreDNS) feloldja ezt a DNS nevet az Ingress Controller szolgáltatás ClusterIP-jére.

  3. kube-proxy: A kube-proxy a futó csomóponton elfogja a forgalmat, amely a ClusterIP szolgáltatás felé irányul az Ingress Controller számára.

  4. iptables/ipvs: A kube-proxy iptables vagy ipvs szabályokat használ a forgalom irányítására az Ingress Controller egyik podjához.

  5. Feldolgozás az Ingress Controller-ben: Az Ingress Controller podjai megkapják a forgalmat, és az Ingress erőforrások szabályai szerint átirányítják a megfelelő szolgáltatásra a klaszteren belül.

Példa kérés egy podból:

# Kérés az Ingress-en keresztül, belső DNS-t használva
curl http://my-app.example.com

Itt a my-app.example.com a DNS szerver által feloldódik a ClusterIP-re az Ingress Controller szolgáltatásban, ha a megfelelő rekordok be vannak állítva, vagy ha az Ingress Controller úgy van konfigurálva, hogy közvetlenül kezelje az ilyen kéréseket (kevésbé jellemző belső forgalom esetén). A belső forgalom általában a szolgáltatást a DNS nevével éri el. Ha explicit módon át akar menni az Ingress-en belülről a klaszteren, akkor biztosítani kell, hogy az Ingress Controller elérhető legyen ClusterIP vagy a podok helyi IP-je révén, és hogy a DNS rekord vagy a routing mechanizmus erre mutat.

A leggyakoribb minta a szolgáltatások közötti kommunikációban a közvetlen hozzáférés a szolgáltatáshoz a DNS nevével (<service-name>.<namespace>.svc.cluster.local), az Ingress kihagyásával. Az Ingress felé irányítás a klaszteren belül általában teszteléshez vagy speciális routing szcenáriókhoz szükséges.