Ingress: Ingress Object + Ingress Controller
Objeto de entrada:
Al igual que un objeto de servicio, excepto que no hace nada por sí solo. Un objeto de ingreso solo describe una forma de enrutar el tráfico de la capa 7 a su clúster, especificando cosas como la ruta de solicitud, el dominio de solicitud y el servicio kubernetes de destino, mientras que un objeto de servicio realmente crea servicios
Controlador de entrada:
Un servicio que:
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
Por ejemplo, el controlador de ingreso Nginx, podría usar un servicio para escuchar en los puertos 80 y 443 y luego leer nuevos objetos de ingreso y analizarlos en nuevas secciones del servidor {} que coloca dinámicamente en su nginx.conf
LoadBalancer: proveedor de equilibrador de carga externo + tipo de servicio
Proveedor externo de equilibrador de carga:
Los proveedores de equilibradores de carga externos generalmente se configuran en nubes como AWS y GKE y proporcionan una forma de asignar IP externas a través de la creación de equilibradores de carga externos. Esta funcionalidad se puede utilizar designando un servicio como tipo "LoadBalancer".
Tipo de servicio:
Cuando el tipo de servicio se establece en LoadBalancer, Kubernetes intenta crear y luego programar un equilibrador de carga externo con entradas para los pods de Kubernetes, asignándoles así direcciones IP externas.
El controlador de servicio de Kubernetes automatiza la creación del equilibrador de carga externo, las comprobaciones de estado (si es necesario), las reglas de firewall (si es necesario) y recupera la IP externa del LoadBalancer recién creado o configurado que fue asignado por el proveedor de la nube y lo completa en el objeto de servicio
Relaciones:
Los servicios de Ingress Controller a menudo se aprovisionan como el tipo LoadBalancer, de modo que las solicitudes http y https se pueden enviar / enrutar a servicios internos específicos a través de una IP externa.
Sin embargo, un LoadBalancer no es estrictamente necesario para esto. Dado que, mediante el uso de hostNetwork o hostPort, técnicamente puede vincular un puerto en el host a un servicio (lo que le permite visitarlo a través de la IP externa: puerto de los hosts). Aunque oficialmente esto no se recomienda, ya que utiliza puertos en el nodo real.
Referencias
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/