2015-12-23 5 views
12

Ho appena iniziato con Kubernetes e sono confuso circa la differenza tra il tipo di servizio NodePort e LoadBalancer.Kubernetes: Differenza tra NodePort e LoadBalancer

La differenza è che LoadBalancer non supporta UDP ma, a parte questo, ogni volta che creiamo un servizio sia nodeport che loadbalancer otteniamo un IP e una porta di servizio, un NodePort e endpoint.

Da documenti kubernetes:

NodePort: sulla cima di avere un IP cluster interna, esporre il servizio su una porta su ciascun nodo del cluster (la stessa porta su ciascun nodo). È possibile contattare il servizio su qualsiasi NodeIP: NodePort indirizzo .

LoadBalancer: in cima ad avere un IP del cluster-interno e esponendo servizio su un NodePort anche, chiedere al provider di cloud per un carico bilanciatore che inoltra al Servizio esposto come un NodeIP : NodePort per ciascun nodo.

Quindi, accedo sempre al servizio su nodeip: nodeport. La mia comprensione è che ogni volta che accediamo al nodo: nodeport, il kubeproxy intercetterà la richiesta e la inoltrerà al rispettivo pod.

L'altra cosa menzionata su LoadBalancer è che possiamo avere un LB esterno che sarà LB tra i nodi. Cosa ci impedisce di inserire un LB per servizi creati come nodeport?

Sono davvero confuso. La maggior parte dei doc o tutorial parla solo del servizio LoadBalancer, quindi non ho potuto trovare molto su internet.

Apprezzo se qualcuno può chiarire i miei dubbi.

Grazie

+0

Ha senso intuitivo, ma sai dove la documentazione dice che 'LoadBalancer' non supporta UDP? – Drux

risposta

6

Nulla vi impedisce di effettuare un bilanciamento del carico esterno davanti ai vostri nodi e utilizzare l'opzione NodePort.

L'opzione LoadBalancer viene utilizzata esclusivamente per richiedere al provider cloud una nuova istanza LB software, automaticamente in background.

Non sono aggiornato su quali provider di cloud sono ancora supportati, ma l'ho visto funzionare già per Compute Engine e OpenStack.

+1

Grazie per il commento. Non capisco la parte 'automaticamente'. Indipendentemente dalle esercitazioni che ho letto o visto, in ciascuna di esse, gli IP dei nodi vengono messi in servizio come parametri IP pubblici e quindi configurati nella LB ex. Nginx, tutti dimostrano con esso. – Jardanian

+1

Molti fornitori di servizi cloud hanno avuto la possibilità di software LB per il traffico già a livello di rete sui nodi. Questa funzione può essere attivata automaticamente tramite Kubernetes impostando il tipo di servizio su LoadBalancer. Ad esempio: • Google: cloud.google.com/compute/docs/load-balancing • Amazon: aws.amazon.com/de/elasticloadbalancing • OpenStack: wiki.openstack.org/wiki/Neutron/LBaaS – Zahlex

+0

https: // groups .google.com/forum/#!topic/kubernetes-sig-network/B-A_RuqpFWk potrebbe aiutare a chiarire le diverse impostazioni di bilanciamento del carico –