Kubernetes: perché se ne parla tanto e a chi conviene

Mia-Platform Team 04 maggio 2020

Nella moderna informatica aziendale, in cui data center modulari e scalabili convivono sempre più con i servizi in cloud per riuscire a garantire prestazioni e disponibilità richiesti, una delle parole che ricorre maggiormente è Kubernetes. Di cosa si tratta? Kubernetes è un sistema open source di orchestrazione per automatizzare compiti come la distribuzione, la gestione, il posizionamento, il ridimensionamento e il routing dei container che sono utilizzati per far girare le applicazioni.

Il container è l’insieme di una applicazione e delle sue dipendenze, isolato dagli altri container e dal sistema operativo stesso.Una struttura logica che è possibile spostare da un server all’altro, tra sistemi on premise e in cloud: esattamente come un container fisico di merci può essere spostato con una gru da un camion a un cargo aereo o navale. Kubernetes è quindi l’orchestratore, la gru che rende possibile spostare con facilità il lavoro dov’è più utile o conveniente.

 

Come nasce e cosa fa Kubernetes

L’orchestratore Kubernetes è stato inizialmente progettato dagli ingegneri di Google con lo scopo di migliorare la capacità degli amministratori di sfruttare la tecnologia container. Il gigante della ricerca su Web aveva la necessità di gestire qualcosa come 2 miliardi di deploy in container a settimana, un lavoro automatizzato con Borg, tecnologia da cui poi è derivato Kubernetes.

Noto anche come “k8s” e “kube”, Kubernetes ha aggiunto al codice iniziale Google altri contributi da Red Hat ed è oggi un progetto open source, controllato dalla Cloud Native Computing Foundation. Di fatto, Kubernetes è la più comune piattaforma open source per automatizzare le operazioni sui container. 

Grazie alle estensioni sviluppate dalla comunità open source e al contributo di altri progetti, Kubernetes riesce oggi a integrarsi con reti, storage, sicurezza, telemetria e altri servizi. Riesce a dare supporto a infrastrutture container complete che eliminano la gran parte dei processi manuali necessari per fare deploy e garantire la scalabilità delle applicazioni.

 

Il livello di astrazione che aiuta la gestione dei container

L’efficienza e le prestazioni delle applicazioni aziendali dipendono dal modo con cui si utilizzano i container nell’ambiente operativo. I container sebbene efficienti e veloci, da soli non eliminano la complessità di ambienti aziendali di produzione, dove molte applicazioni devono cooperare per raggiungere un obiettivo. Quando il numero di container aumenta, cresce esponenzialmente la complessità di gestione.

Kubernetes affronta e risolve questo problema attraverso varie astrazioni, tra cui il pod, l’unità d’esecuzione di base schedulabile dal cluster. Il pod è un gruppo di uno o più container che condividono storage e network, e delle istruzioni su come eseguire i container. I pod sono considerati effimeri: suscettibili di essere creati, distrutti o rischedulati in un altro nodo.

 

A chi conviene l’uso di Kubernetes

Kubernetes consente di gestire con semplicità ed efficienza i grandi cluster di server su cui sono utilizzati i container. Cluster che possono comprendere server on premise, cloud pubblici, privati o ibridi e sui quali devono girare le applicazioni cloud-native che richiedono elevata scalabilità, come i servizi a clienti finali o lo streaming dati in tempo reale.

In azienda, Kubernetes aiuta a gestire le applicazioni di produzione che sfruttano più container e che richiedono di essere distribuite su più server host, tenendo in considerazione le differenti esigenze di sicurezza. 

Attraverso la struttura del pod, che raggruppa le specifiche relative alle risorse di storage, servizi di rete e altre opzioni necessarie alle applicazioni, Kubernetes aggiunge il livello di astrazione che permette ai team IT di gestire come singole istanze deploy applicazioni complesse che usano software in più container e necessitano di risorse condivise.   

Utilizzando Kubernetes è possibile semplificare attività che sono ospitate in altre piattaforme applicative o altri sistemi di gestione. In concerto con le applicazioni sviluppate specificamente per il cloud, Kubernetes rende affidabili per l’impiego in ambienti critici di produzione i container che sfruttano cluster di macchine fisiche e virtuali.


Tutte le attività che abbiamo visto garantiscono vantaggi di business in termini di migliori performance e un significativo cost saving. Kubernetes, infatti, permette di integrare e rilasciare continuamente nuove versioni delle applicazioni, automatizzare rollout e rollback, migliorando le performance di delivery dei prodotti. Consente inoltre di gestire il bilanciamento del carico e l’allocazione delle risorse hardware, tra cui memoria, archiviazione e larghezza di banda della rete, con conseguente risparmio. Infine, è possibile scalare orizzontalmente i pod nei container al crescere della domanda. Per tutti questi motivi, le soluzioni di sviluppo basate su Kubernetes sono certamente la soluzione da preferire per la realizzazione di applicativi moderni.

Photo by Tom Fisk from Pexels

 

Leggi il Paper 

Post Correlati