La piattaforma open source per la gestione automatizzata dei container può portare vantaggi significativi, dalla portabilità applicativa all’efficienza delle risorse IT. Ecco cosa c’è da sapere per cogliere l’opportunità.
In anni recenti, Kubernetes ha guadagnato posizioni tra le tecnologie più chiacchierate dell’universo informatico. Sviluppata da Google per uso interno e lanciata in versione open source nel 2014, oggi la nota piattaforma per l’orchestrazione dei container interessa sempre più aziende perché permette di automatizzare la gestione delle applicazioni, contribuendo alla resilienza dei servizi IT.
Cos'è Kubernetes?
Nella documentazione ufficiale, Kubernetes (abbreviato in K8s o semplicemente Kube) viene definito una piattaforma aperta e flessibile che permette di gestire carichi di lavoro e servizi containerizzati, abilitando sia l’automazione sia la configurazione dichiarativa.
Kubernetes è la diretta evoluzione di Borg, il sistema per il cluster management progettato da Big G e utilizzato internamente. Eredita quindi dal predecessore le caratteristiche di architettura e funzionamento, che vengono continuamente aggiornate e arricchite dai membri della community internazionale in rapida espansione.
Attualmente il progetto è mantenuto dalla Cloud Native Computing Foundation (CNCF), parte dell’organizzazione senza scopo di lucro Linux Foundation, che riunisce oltre duecento startup insieme ai maggiori fornitori mondiali di soluzioni Cloud. Tra questi figurano, oltre alla multinazionale di Mountain View, anche Microsoft, IBM, Amazon Web Services e Alibaba Cloud.
PER APPROFONDIRE:
Cosa sono le applicazioni Cloud Native
FinOps: cos'è? Perchè passare alla gestione finanziaria del Cloud
A cosa serve Kubernetes?
In greco antico, il sostantivo “Kubernetes” significa “timoniere”: è quindi evidente il parallelismo con la principale funzione della piattaforma che ha il compito di “pilotare” l’ecosistema dei container, garantendo scalabilità, failover e distribuzione efficiente.
Per capire come interviene Kubernetes nella gestione dell’ecosistema applicativo aziendale conferendo l’elasticità e la continuità dei servizi, occorre innanzitutto chiarire il concetto di container partendo dall’evoluzione dei sistemi informativi.
Evoluzione dei sistemi IT e containerizzazione
- Server fisici
Secondo il modello di infrastruttura tradizionale, le applicazioni vengono eseguite su server fisici, contendendosi le risorse senza la possibilità di un’allocazione razionale. Se si generasse un picco di richieste, un’applicazione potrebbe sottrarre risorse illimitatamente, compromettendo le funzionalità e le performance delle altre che girano sullo stesso server. - Virtual machine VM
La virtualizzazione ha permesso di ovviare al problema, aggiungendo un livello di astrazione, segregazione e controllo degli asset. Le applicazioni vengono isolate all’interno di più macchine virtuali (guest) che risiedono sul medesimo computer fisico (host), condividendo le diverse componenti. Tramite software specifico (hypervisor), le risorse hardware vengono distribuite dinamicamente tra i sistemi guest, secondo le necessità applicative e assicurando un corretto bilanciamento. - Container
La containerizzazione rappresenta un ulteriore passo avanti rispetto alle virtual machine. Se le VM sono sistemi completi, che astraggono tutte le componenti del sistema hardware sottostante, i container virtualizzano solo l’ambiente di runtime, necessario all’esecuzione delle applicazioni. I container pertanto risultano più “leggeri” rispetto alle macchine virtuali e, poiché sono disaccoppiati dall’infrastruttura, funzionano in qualsiasi ambiente di sviluppo, test o produzione. Possono quindi garantire maggiore portabilità dei software attraverso i moderni ecosistemi Multi Cloud e favoriscono l’utilizzo delle architetture a microservizi, per cui le applicazioni vengono progettate come un insieme di unità funzionali indipendenti e combinabili.
Kubernetes semplifica la gestione dei container
Nonostante i numerosi vantaggi della containerizzazione, dall’utilizzo più efficiente delle risorse alla coerenza di funzionamento su sistemi hardware differenti, esiste il rovescio della medaglia. All’interno delle infrastrutture IT aziendali possono arrivare a circolare container anche nell’ordine di decine di migliaia e la sfida più importante è la complessità di orchestrazione.
Kubernetes interviene automatizzando le operazioni di gestione dei container, assicurando la continuità dei servizi e l’allocazione efficiente delle risorse.
Scendendo nel dettaglio più tecnico, Kubernetes assolve a una ricca serie di funzioni:
- bilanciamento dei carichi di lavoro: qualora si verificassero picchi di traffico verso un container, Kubernetes permette di distribuire equamente le richieste tra più container mantenendo il servizio stabile;
- allocazione dinamica delle risorse: Kubernetes può essere istruito per fornire automaticamente a ogni container un livello adeguato e predefinito di risorse computazionali e memoria;
- rollout e rollback automatizzati: Kubernetes può creare e rimuovere i container riequilibrando le risorse assegnate per raggiungere lo stato desiderato;
- gestione delle informazioni critiche: Kubernetes memorizza, distribuisce e aggiorna le configurazioni e i dati sensibili (ad esempio password e token OAuth) delle applicazioni, garantendo alti livelli di sicurezza.
LEGGI ANCHE: Orchestration vs Choreography: quale usare? Pro e contro
Come funziona Kubernetes?
Chiarite le finalità, per comprendere appieno il funzionamento di Kubernetes occorre approfondire i principali componenti alla base della sua architettura.
- Master: è la macchina che controlla i nodi di Kubernetes e permette di allocare dinamicamente i container in base alle risorse disponibili e ai parametri predefiniti;
- Nodi: controllati dal sistema master e raggruppati in cluster, rappresentano le macchine virtuali o fisiche con il compito di eseguire le attività assegnate;
- Pod: indica l’insieme dei container che risiedono sullo stesso nodo, condividendo, oltre all’indirizzo IP, le risorse di calcolo, storage e rete.
- Kubelet: si tratta di un agente software eseguito sui nodi che, ricevendo gli ordini dalla macchina master, avvia la gestione dei container secondo le istruzioni.
LEGGI ANCHE: Kubernetes Operator: cosa sono (con esempi)
POTREBBE INTERESSARTI:
I vantaggi di Kubernetes
Kubernetes rappresenta un’opportunità preziosa per le aziende che intendono razionalizzare la gestione delle applicazioni all’interno di ecosistemi ibridi e Multi Cloud.
L’utilizzo della piattaforma open source di orchestrazione infatti permette di conseguire una serie di vantaggi come la possibilità di orchestrare i container su sistemi hardware differenti, ottimizzare le risorse garantendo le performance applicative, assicurare il corretto funzionamento dei container e la continuità di servizio, automatizzare la distribuzione e l’aggiornamento dei software, impostare diversi livelli di sicurezza.
Ne conseguono cinque principali benefici di business:
- innanzitutto, grazie all’automazione, si semplificano e accelerano i processi di sviluppo, rilascio e distribuzione delle applicazioni containerizzate;
- La gestione dinamica dei container e l’allocazione intelligente delle risorse permette di raggiungere nuovi traguardi di efficienza e tagliare sulla spesa IT;
- La possibilità di scalare rapidamente i container e gestire i picchi di richieste aumenta la disponibilità delle applicazioni e la continuità di servizio;
- La portabilità delle applicazioni containerizzate aumenta la libertà rispetto alle scelte infrastrutturali;
- La containerizzazione può rappresentare una scorciatoia per migrare in Cloud le applicazioni legacy, garantendo funzionalità e performance in qualsiasi ambiente.
LEGGI ANCHE:
Kubernetes: quali sono i vantaggi per le aziende?
Kubernetes vs Docker: a cosa servono?
Kubernetes e il cloud computing
Kubernetes si integra perfettamente nei principali cloud pubblici come Azure, Amazon Web Services e Google Cloud Platform attraverso soluzioni dedicate. Questi servizi cloud permettono alle aziende di sfruttare la flessibilità di Kubernetes con il supporto e l'infrastruttura robusta dei leader del settore.
Alcuni caratteristiche di Kubernetes, declinato rispetto ai vari Cloud Provider, sono:
- Azure Kubernetes Service (AKS) semplifica la gestione dei cluster Kubernetes con integrazione nativa in Azure Entra ID per la gestione degli accessi e servizi come Azure Monitor per un monitoraggio avanzato.
- Amazon Elastic Kubernetes Service (EKS) su AWS supporta l'integrazione con IAM per controlli di sicurezza granulare e si collega perfettamente a CloudWatch per il monitoraggio e la gestione dei log, offrendo un'infrastruttura resiliente e scalabile.
- Google Kubernetes Engine (GKE) su Google Cloud offre funzionalità avanzate come l'auto scaling automatico dei nodi, il bilanciamento del carico integrato e un'efficace gestione delle versioni di Kubernetes, fornendo una soluzione potente per lo sviluppo e la gestione dei container su larga scala.
Le sfide di Kubernetes
Kubernetes offre un ventaglio di opportunità particolarmente appetibile, ma prima di decidere per un’eventuale adozione, bisogna valutare anche le possibili criticità di implementazione e utilizzo.
L’universo di Kubernetes si muove molto rapidamente: l’innovazione continua è tra le caratteristiche più apprezzate delle tecnologie open source e, grazie alla nutrita community, gli aggiornamenti alla piattaforma sono molto frequenti. D’altro canto, tutto ciò può generare confusione per un’azienda che si approccia per la prima volta a questa tecnologia.
Le iniziative legate all’adozione di Kubernetes possono richiedere un impegno significativo, in termini di tempo e risorse. Non sempre i decisori aziendali sono disposti a investire in nuovi progetti, quando i budget sono appena sufficienti per mantenere lo status quo. Inoltre, il personale IT non è sempre incline ad accogliere il cambiamento e assumere rischi.
Kubernetes è una tecnologia relativamente recente che richiede competenze specifiche non sempre presenti in azienda. Per una corretta adozione, servono invece professionisti che abbiano conoscenze aggiornate in materia di sviluppo applicativo, gestione delle Operations, governance dei dati.
PER APPROFONDIRE:
3 errori da non commettere adottando Kubernetes
Software Supply Chain per Artefatti OCI su Kubernetes
Quando e perché usare Kubernetes
Mettendo sul piatto della bilancia pro e contro, Kubernetes conviene? E in quali circostanze? Alla luce di quanto descritto in precedenza, la containerizzazione e l’utilizzo dell’orchestratore open source possono apportare significativi vantaggi alle aziende, sotto il profilo dell’efficienza tecnologica, dell’organizzazione e dei benefici per il business.
Qualsiasi impresa che intenda migliorare la flessibilità del parco applicativo, accelerare il processo di sviluppo e rilascio, garantire la continuità dei servizi, ottimizzare i costi IT, dovrebbe considerare l’alternativa dei container e Kubernetes. L’opzione diventa particolarmente impellente in caso di ecosistemi eterogenei e distribuiti, allo scopo di facilitare la portabilità dei software da un ambiente all’altro.
Tuttavia, il percorso di adozione può risultare complesso e bisogna partire con il piede giusto, alla luce di alcune considerazioni. Innanzitutto, la roadmap deve essere personalizzata e graduale: richiede tempo e lungimiranza, ma soprattutto necessita di competenze multidisciplinari ed expertise consolidata.
Serve inoltre la capacità di cambiare mentalità e organizzazione: i container presuppongono un modo completamente nuovo di disegnare e gestire l’architettura IT, pertanto anche l’approccio al lavoro e le conoscenze tecniche devono evolvere. Ecco perché la consulenza e il supporto di un partner specializzato possono fare la differenza, andando a coprire il gap di competenze e trasferendo un nuovo metodo di lavoro.