Ingress: Ingress Object + Ingress Controller
Oggetto di ingresso:
Proprio come un oggetto servizio, tranne che non fa nulla da solo. Un oggetto Ingress descrive semplicemente un modo per instradare il traffico di livello 7 nel cluster, specificando cose come il percorso di richiesta, il dominio di richiesta e il servizio kubernetes di destinazione, mentre un oggetto di servizio crea effettivamente servizi
Ingress Controller:
Un servizio che:
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
Ad esempio, Nginx Ingress Controller, potrebbe utilizzare un servizio per ascoltare sulla porta 80 e 443 e quindi leggere nuovi oggetti Ingress e analizzarli in nuove sezioni del server {} che inserisce dinamicamente nel suo nginx.conf
LoadBalancer: provider di bilanciamento del carico esterno + tipo di servizio
Fornitore di bilanciamento del carico esterno:
I provider di bilanciamento del carico esterno sono generalmente configurati in cloud come AWS e GKE e forniscono un modo per assegnare IP esterni attraverso la creazione di bilanciatori di carico esterni. Questa funzionalità può essere utilizzata designando un servizio come tipo "LoadBalancer".
Tipo di servizio:
Quando il tipo di servizio è impostato su LoadBalancer, Kubernetes tenta di creare e quindi programmare un bilanciamento del carico esterno con voci per i pod Kubernetes, assegnando così loro IP esterni.
Il controller del servizio Kubernetes automatizza la creazione del bilanciamento del carico esterno, i controlli dello stato (se necessario), le regole del firewall (se necessario) e recupera l'IP esterno del LoadBalancer appena creato o configurato che è stato allocato dal provider cloud e lo popola nel oggetto di servizio.
rapporti:
I servizi di controller di ingresso sono spesso forniti come tipo LoadBalancer, in modo che le richieste http e https possano essere inoltrate / instradate a servizi interni specifici attraverso un ip esterno.
Tuttavia, un LoadBalancer non è strettamente necessario per questo. Poiché, tramite hostNetwork o hostPort, è possibile associare tecnicamente una porta sull'host a un servizio (che consente di visitarlo tramite l'ip esterno: porta dell'host). Anche se ufficialmente questo non è raccomandato in quanto utilizza le porte sul nodo effettivo.
Riferimenti:
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/