Ingress: Ingress Object + Ingress Controller
Obiekt Ingress:
Podobnie jak obiekt usługi, z tym wyjątkiem, że sam nic nie robi. Obiekt Ingress opisuje po prostu sposób kierowania ruchu warstwy 7 do klastra, określając takie rzeczy, jak ścieżka żądania, domena żądania i docelowa usługa kubernetes, podczas gdy obiekt usługi faktycznie tworzy usługi
Kontroler Ingress:
Usługa, która:
1. listens on specific ports (usually 80 and 443) for web traffic
2. Listens for the creation, modification, or deletion of Ingress Objects
3. Creates internal L7 routing rules based on these Ingress Objects
Na przykład kontroler Ingress Nginx mógłby użyć usługi do nasłuchiwania na portach 80 i 443, a następnie odczytać nowe Obiekty Ingress i parsować je w nowych sekcjach serwera {}, które dynamicznie umieszcza w swoim pliku nginx.conf
LoadBalancer: zewnętrzny dostawca modułu równoważenia obciążenia + typ usługi
Zewnętrzny dostawca modułu równoważenia obciążenia:
Zewnętrzni dostawcy modułu równoważenia obciążenia są zwykle skonfigurowani w chmurach, takich jak AWS i GKE, i zapewniają sposób przypisywania zewnętrznych adresów IP poprzez tworzenie zewnętrznych modułów równoważenia obciążenia. Funkcji tej można użyć, wyznaczając usługę jako typ „LoadBalancer”.
Rodzaj usługi:
Gdy typ usługi jest ustawiony na LoadBalancer, Kubernetes próbuje utworzyć, a następnie zaprogramować zewnętrzny moduł równoważenia obciążenia z wpisami dla strąków Kubernetes, przypisując im tym samym zewnętrzne adresy IP.
Kontroler usługi Kubernetes automatyzuje tworzenie zewnętrznego modułu równoważenia obciążenia, kontrole kondycji (w razie potrzeby), reguły zapory (w razie potrzeby) i pobiera zewnętrzny adres IP nowo utworzonego lub skonfigurowanego modułu LoadBalancer, który został przydzielony przez dostawcę chmury i umieszcza go w obiekt usługi.
Relacje:
Usługi Ingress Controller są często udostępniane jako typ LoadBalancer, dzięki czemu żądania http i https mogą być przekazywane / kierowane do określonych usług wewnętrznych za pośrednictwem zewnętrznego adresu IP.
Jednak LoadBalancer nie jest do tego absolutnie potrzebny. Ponieważ za pomocą hostNetwork lub hostPort można technicznie powiązać port na hoście z usługą (umożliwiając odwiedzanie go za pośrednictwem zewnętrznego adresu IP: hosta). Chociaż oficjalnie nie jest to zalecane, ponieważ zużywa porty w rzeczywistym węźle.
Bibliografia:
https://kubernetes.io/docs/concepts/configuration/overview/#services
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#external-load-balancer-providers
https://kubernetes.io/docs/concepts/services-networking/ingress/