Che cos’è Kubernetes?

Share post

Tempo di lettura: 4 min.
Kubernetes è una piattaforma di orchestrazione di container per la programmazione e l’automazione della distribuzione, gestione e scalatura di applicazioni containerizzate.
Oggi, Kubernetes e il più ampio ecosistema dei container stanno maturando in una piattaforma informatica general-purpose; stanno mutando in un ecosistema che rivaleggia – se non supera – con le macchine virtuali (VM) come elementi di base delle moderne infrastrutture e applicazioni cloud.
Questo ecosistema, con Kubernetes, consente alle organizzazioni di fornire una Platform-as-a-Service (PaaS) ad alta produttività che si occupa di molteplici attività e problemi relativi all’infrastruttura e alle operazioni; risolvono anche problemi che circondano lo sviluppo nativo del cloud, in modo che i team di sviluppo possano concentrarsi esclusivamente sulla codifica e l’innovazione.

Cosa sono i container?

Cominciamo con una definizione. Un container è un’unità eseguibile di software in cui il codice dell’applicazione è impacchettato – insieme a librerie e dipendenze – in modi comuni; ciò gli permette di essere eseguito ovunque sul desktop, nell’IT tradizionale o nel cloud.
I container sfruttano una forma di virtualizzazione del sistema operativo che permette a più applicazioni di condividere il s.o. isolando i processi e controllando la quantità di CPU, memoria e disco a cui tali processi possono accedere.

Container vs. macchine virtuali vs. infrastrutture tradizionali

Può essere più facile o più utile comprendere i container come l’ultimo punto sul continuum dell’automazione e dell’astrazione dell’infrastruttura IT.

Nelle infrastrutture tradizionali, le applicazioni vengono eseguite su un server fisico e prendono tutte le risorse che possono ottenere. Questo lascia la scelta di eseguire più applicazioni su un singolo server e di sperare che una non monopolizzi le risorse a spese delle altre; oppure di dedicare un server per ogni applicazione, che spreca risorse e non si scalda.

Le macchine virtuali (VM) sono server astratti dall’hardware del computer reale; consentono di eseguire più VM su un server fisico o una singola VM che si estende su più di un server fisico.
Ogni VM esegue la propria istanza del sistema operativo; è possibile isolare ogni applicazione nella propria macchina virtuale. Si riduce così la possibilità che le applicazioni in esecuzione sullo stesso hardware fisico sottostante abbiano un impatto reciproco.
Le VM fanno un uso migliore delle risorse e sono molto più facili ed economiche da scalare rispetto alle infrastrutture tradizionali. Inoltre, sono usa e getta: quando non è più necessario eseguire l’applicazione, si elimina la VM.

I container portano questa astrazione a un livello più alto, in particolare, oltre a condividere l’hardware virtualizzato sottostante, condividono anche un kernel del sistema operativo virtualizzato. I container offrono lo stesso isolamento, la scalabilità e l’usabilità delle macchine virtuali, ma poiché non trasportano il carico utile della propria istanza del sistema operativo, sono più leggeri (cioè occupano meno spazio) rispetto alle macchine virtuali. Sono più efficienti in termini di risorse: consentono di eseguire più applicazioni su un minor numero di macchine (virtuali e fisiche), con un minor numero di istanze del sistema operativo. I container sono più facilmente trasportabili su desktop, data center e ambienti cloud. E sono un’ottima soluzione per le pratiche di sviluppo di Agile e DevOps.