Che cos'è Kubernetes?
Kubernetes (spesso abbreviato K8s) è una piattaforma open source per l'orchestrazione di container che consente di automatizzare la distribuzione, lo scaling e la gestione delle applicazioni containerizzate. Sviluppata originariamente da Google, Kubernetes permette agli utenti di gestire e coordinare i container in un cluster, fornendo un'infrastruttura altamente scalabile e resiliente per l'esecuzione di applicazioni distribuite.
La piattaforma, creata inizialmente per uso interno, è stata poi resa disponibile al pubblico nel 2014 come sistema open source da Google. Da allora è stata adottata su larga scala ed è diventata un tassello fondamentale nell'ecosistema cloud native. Kubernetes, insieme ai container, è universalmente considerato il building block fondamentale delle applicazioni e delle infrastrutture cloud contemporanee.
Kubernetes funziona su un'ampia gamma di infrastrutture, inclusi ambienti di cloud ibrido, cloud pubblico, private cloud, macchine virtuali e server bare metal, e offre ai team IT una flessibilità eccellente.
Come funziona Kubernetes?
L'architettura di Kubernetes è costituita da diversi componenti chiave quali:
Cluster e nodi
I cluster, ossia i building block alla base di Kubernetes, sono costituiti da macchine di calcolo fisiche o virtuali chiamate nodi. Un singolo nodo master opera come piano di controllo del cluster e gestisce quali applicazioni eseguire in un dato momento e quali immagini container utilizzare, il tutto grazie all'esecuzione di un servizio di pianificazione che automatizza la distribuzione dei container in base ai requisiti definiti dagli sviluppatori e ad altri fattori.
Vi sono poi una serie di nodi worker responsabili dell'esecuzione, dell'implementazione e della gestione dei carichi di lavoro e delle applicazioni containerizzate. I nodi worker comprendono gli strumenti di gestione dei container scelti dall'azienda, come per esempio Docker, e un Kubelet, ossia un agente software che riceve gli ordini dal nodo master e li esegue.
I cluster possono includere nodi che coprono l'intera architettura dell'organizzazione, dall'on-premise ai cloud pubblici e private cloud fino agli ambienti di cloud ibrido. Questo è uno dei motivi per cui Kubernetes può essere considerato un componente fondamentale delle architetture cloud native, nonché il sistema ideale per ospitare applicazioni cloud native che necessitano di scalare rapidamente.
Container
I container sono una tecnologia leggera e portabile utilizzata per creare pacchetti software al fine di distribuire ed eseguire applicazioni in modo coerente in diversi ambienti di calcolo. Un container è un'unità eseguibile in maniera indipendente che incapsula un'applicazione insieme a tutte le sue dipendenze, inclusi librerie, framework e ambienti di runtime.
I container offrono una soluzione per isolare le applicazioni dall'infrastruttura sottostante, garantendo che vengano eseguite in maniera coerente indipendentemente dal sistema che le ospita. L'isolamento si ottiene grazie a tecnologie di containerizzazione come Docker, che utilizzano la virtualizzazione a livello di sistema operativo per creare ambienti isolati, i container, appunto.
Pod
I pod sono la più piccola unità distribuibile di Kubernetes. Sono essenzialmente gruppi di container che condividono le stesse risorse di rete e di calcolo. Raggruppare i container è vantaggioso perché se uno di essi riceve troppo traffico, Kubernetes crea automaticamente una replica del pod in altri nodi del cluster in modo da distribuire il carico di lavoro.
Come funziona il tutto
La piattaforma Kubernetes viene eseguita sul sistema operativo dell'ambiente utilizzato (solitamente Linux) e comunica con i pod che operano sui nodi. Utilizzando un'interfaccia a riga di comando chiamata kubectl, gli amministratori o i DevOps impostano lo stato desiderato di un cluster, incluso quali applicazioni devono essere eseguite, con quali immagini e risorse, e altre informazioni.
Il nodo master del cluster riceve i comandi e li trasmette ai nodi worker. La piattaforma è in grado di determinare automaticamente qual è il nodo del cluster migliore per l'esecuzione del comando, e assegna quindi le risorse e i pod specifici nel nodo che completerà l'operazione richiesta.
Kubernetes non modifica i processi di base della gestione dei container: semplicemente, li automatizza e si fa carico di una parte del lavoro, in modo che i DevOps e i team che si occupano dell'amministrazione possano beneficiare di un livello elevato di controllo senza però dover gestire ogni nodo o container separatamente. In pratica i team umani si limitano a configurare il sistema Kubernetes e a definire gli elementi al suo interno, mentre l'orchestrazione dei container vera e propria viene affidata interamente a Kubernetes.
Caratteristiche e funzionalità di Kubernetes
Kubernetes vanta una gamma piuttosto ampia di caratteristiche e funzionalità che semplificano l'orchestrazione dei container su più nodi, consentono l'automazione della gestione dei cluster e ottimizzano l'utilizzo delle risorse. Eccone alcune:
- Scalabilità automatica: permette di eseguire lo scaling dei container e delle relative risorse in base all'utilizzo;
- Gestione del ciclo di vita: gli amministratori possono mettere in pausa o riprendere le implementazioni, ma anche tornare alle versioni precedenti;
- Dichiarazione dello stato desiderato: gli amministratori stabiliscono ciò di cui hanno bisogno, e Kubernetes realizza la loro richiesta;
- Self‑healing e resilienza: riavvii automatici, posizionamenti, replica e scaling;
- Storage scalabile: gli amministratori possono aggiungere storage dinamicamente in base alle necessità;
- Bilanciamento dei carichi: il sistema utilizza una serie di strumenti per bilanciare i carichi internamente ed esternamente;
- Supporto per DevSecOps: contribuisce a semplificare la sicurezza delle operazioni sui container lungo tutto il loro ciclo di vita e su tutti i cloud, e permette ai team di immettere sul mercato applicazioni sicure più rapidamente.