
Load balancer con Kubernetes
Grazie a Kubernetes, le aziende si possono concentrare sullo sviluppo dei propri software ed effettuare diverse operazioni in modo semplificato.
Automatizzazione del ciclo di vita delle applicazioni containerizzate
Questi servizi richiedono scalabilità per poter gestire le richieste e ottimizzare l’utilizzo delle risorse. Kubernetes permette di automatizzare questo processo, assicurando un deploy continuo (CI/CD) di nuove versioni e riducendo drasticamente le operazioni di manutenzione.
Implementazione di applicazioni multi-container
Alcuni software possono utilizzare contemporaneamente più container (database, front end, back end, cache...). Talvolta, questa situazione richiede la presenza di più istanze. Kubernetes consente la sincronizzazione durante l'implementazione tra i diversi container e componenti associati.
Avvio da qualsiasi ambiente
Cloud pubblico, Cloud privato, server fisico o virtuale: Kubernetes si implementa facilmente, anche in un'architettura ibrida. Offre maggiore libertà ai tuoi progetti, in funzione del loro ambiente.
Cos'è un load balancer?
Il load balancer distribuisce il carico di lavoro tra diversi server o applicazioni. Può essere installato su un'infrastruttura sia fisica che virtuale. Un software di load balancing (o bilanciamento del carico) è un controller di distribuzione delle applicazioni (application delivery controller o ADC), che permette di far evolvere il carico automaticamente, in base alle previsioni di traffico.
L’ADC identifica in tempo reale quale server o applicazione è in grado di rispondere a una richiesta, in modo che il cluster mantenga un livello di performance stabile. In caso di malfunzionamenti, dovrà anche reindirizzare il traffico verso una risorsa in grado di gestirlo. Sono possibili diversi tipi di configurazioni.
A livello temporale, il load balancer interviene tra l'utente e il server: analizza la richiesta, determina quale macchina è disponibile per rispondervi e gliela trasmette. Può anche aggiungere server in caso di necessità.
La ripartizione del carico, come abbiamo visto, è solo una delle funzionalità possibili del load balancer. Questa soluzione può essere utilizzata anche per sbloccare un certificato SSL, aggiornare gruppi di applicazioni, o per il routing dei tuoi domini.
Esistono due tipi di load balancer:
- I "load balancer L4" o "network load balancer"
Questi load balancer trattano i dati del layer 4 presenti a livello di rete e di trasporto (TCP/UDP). Non si concentrano sulle informazioni applicative, come il tipo di contenuto, i cookies, la localizzazione degli header, ecc.: reindirizzano il traffico basandosi esclusivamente sui dati del livello di rete.
- I "load balancer L7" o "application load balancer"
A differenza degli L4, reindirizzano il traffico utilizzando i parametri del livello applicativo. Questi load balancer elaborano un volume di dati più elevato e si basano su maggiori quantità di informazioni, inclusi i protocolli HTTP, HTTPS e SSL.

Come funziona il Load Balancer con Kubernetes?
Quando inizi a utilizzare Kubernetes per le tue applicazioni, un aspetto non trascurabile è quello del traffico esterno. Questo tema è trattato brevemente sul sito di Kubernetes, mentre ora entreremo nei dettagli.
Esistono diversi modi per instradare traffico esterno verso il tuo cluster:
- utilizzare un proxy con il ClusterIP;
- definire un servizio come NodePort;
- dichiarare un servizio come load balancer ed esporlo al traffico esterno. Questo metodo è il più utilizzato.
Utilizza il ClusterIP tramite un proxy
Questo metodo è generalmente utilizzato per lo sviluppo e disponibile di default da Kubernetes. L'apertura di un proxy tra la tua fonte esterna e il ClusterIP ti permette di instradare il traffico. Per creare questo proxy, utilizza il comando "kubectl". Una volta operativo, sarai connesso direttamente all'IP del tuo cluster per questo servizio specifico.
Esporre un servizio come NodePort
In questo modo, puoi esporre gli indirizzi dei tuoi nodi individualmente sulle porte interessate (una porta fissa del servizio da 30000 a 32767) e accedere al servizio dall'esterno tramite la tua porta, su ogni nodo. Per effettuare questa operazione utilizza il comando <NodeIp>:<NodePort>
Benché possibile, questo metodo è relativamente difficile per i servizi in produzione. Dato che utilizzi porte "non standard", devi configurare spesso un ripartitore di carico esterno, che tratta le porte standard e reindirizza il traffico verso la richiesta "<NodeIp>:<NodePort".
Utilizzare un load balancer
Utilizzare un load balancer significa dichiarare un servizio come load balancer per il tuo cluster, esponendolo così al traffico esterno. Questo metodo richiede l'utilizzo della soluzione di load balancing di un provider Cloud, come il nostro Load Balancer. Questa soluzione eseguirà il provisioning del servizio per il tuo cluster, assegnandogli automaticamente il suo NodePort.
Se disponi di un ambiente di produzione, il load balancer è la soluzione adatta a te. Tuttavia, ricorda che:
- ogni servizio definito e implementato come load balancer dispone del proprio indirizzo IP;
- l'utilizzo del Load Balancer OVHcloud è riservato agli utenti del servizio Managed Kubernetes.
Agisce quindi come filtro tra il traffico esterno in entrata e il cluster Kubernetes. Puoi implementare fino a 16 load balancer per cluster, che puoi gestire direttamente dall'interfaccia K8s. Le nostre guide sono a tua disposizione per aiutarti nella configurazione del tuo load balancer.
Utilizza un Ingress con il tuo load balancer
L'Ingress è un oggetto Kubernetes che gestisce l'accesso ai servizi del tuo cluster dall'esterno (ad esempio un protocollo HTTP). Ma allora, qual è la differenza con un load balancer?
L’Ingress, unico punto di accesso al cluster, funziona come un reverse proxy. Reindirizza, secondo una configurazione di regole, le richieste che riceve ai diversi servizi ed è esposto al traffico esterno da ClusterIP, NodePort o un load balancer. L'Ingress più conosciuto è NGINX Ingress Controller.
Perché utilizzare un Ingress con il tuo load balancer? Semplicemente, per ridurre i costi. La fatturazione di un load balancer è stabilita in base al numero di servizi che orchestra, con capacità limitata. Grazie a un Ingress, puoi associare più servizi allo stesso load balancer e diminuire le spese.
Cosa ti consigliamo?
Per rispondere a questa domanda, devi valutare attentamente il tuo utilizzo di Kubernetes.
Il load balancer è adatto alla maggior parte delle esigenze. Puoi averne uno personalizzato per ciascuno dei tuoi servizi Kubernetes, senza doverti occupare, in seguito, della configurazione. Questo metodo, tuttavia, non è adatto a tutti i budget e può essere complesso: devi infatti gestire una grande quantità di indirizzi IP.
Un’opzione più semplice è utilizzare un load balancer e poi un Ingress. In questo modo, tutti i tuoi servizi vengono organizzati sotto lo stesso indirizzo IP e paghi un solo load balancer.
Tuttavia, devi assicurarti che esista un rapporto logico tra i servizi orchestrati da questo modello. In caso contrario, potrebbero verificarsi malfunzionamenti o guasti.
Una configurazione ottimale potrebbe essere un load balancer associato a un Ingress per ogni "famiglia di servizi” o di microservizi. L'organizzazione dipenderà dalla complessità delle tue architetture.