Kubernetes (k8s), è una piattaforma open source, introdotta da Google, introdotta come un semplice strumento di orchestrazione di container ma è diventata di fatto la piattaforma cloud-native.
Perché “k8s” viene così ampiamente utilizzato?
Poichè è in grado di rispondere efficacemente alle richieste di qualità di servizio degli utenti, di adattarsi alla creatività dei cloud-architect e di essere così stabile da soddisfare le richieste delle operation.
Tali vantaggi possono essere così riassunti:
- Affidabile
- Scalabile
- Auto-guarigione
- Veloce
- Efficiente
- Sicuro
- Agile
- Trasportabile
Nel presente articolo svilupperemo le 8 argomentazioni appena indicate:
1- Affidabilità significa un’architettura in grado di funzionare anche se una parte di essa non è più disponibile. K8s è stato pensato con una filosofica nativamente clusterizzata.
2- La scalabilità è necessaria per gestire qualsiasi picco di carico di lavoro. In altre parole, è in grado di risponde a richieste di nuove risorse on-demand.
Il modello di architettura sul quale si basa è il disaccoppiamento. Ogni singolo componente ha le proprie caratteristiche e può essere facilmente aggiunto all’ambiente k8s.
Attraverso i file di configurazione i vari oggetti sono autorizzati a comunicare tra loro.
I componenti principali dell’architettura k8s sono i nodi, i componenti dei servizi k8s sono i bilanciatori del carico, i name-spaces e così via (vedi prossimi articoli)
3- Guarigione: K8s agisce per assicurare che lo stato corrente corrisponda automaticamente allo stato desiderato dell’architettura.
4- Veloce: K8s è in grado di distribuire i componenti immediatamente. In questo modo è possibile rispondere ad una richiesta di gestione del sovraccarico e/o necessità di implementare velocemente nuovi servizi.
5- L’efficienza è il rapporto tra il lavoro utile e la quantità totale di energia utilizzata per ottenere il risultato. K8s per la sua architettura ha il miglior rapporto perché ha l’essenzialità nel suo DNA.
6- La sicurezza lavora a stretto contatto con k8s.
a- Le immagini che girano nei contenitori sono per la loro definizione immutabili. Questo approccio ha un grande vantaggio perché:
–Nessuna modifica viene implementata a livello di sistema (contenitore).
-Niente può modificare il nucleo del servizio a meno che l’intera immagine non venga eliminata e ridistribuita.
Confrontiamo questo approccio con un ambiente standard, dove è presente una VM Linux.
Se su quest’ultima volessimo installare, modificare, aggiornare un’applicazione, dovremmo agire via apt-get sui pacchetti necessari.
Così facendo modificheremo l’ambiente aprendo di fatto una breccia in ambito sicurezza.
In K8s non viene modificata l’immagine ma cancellata e ricreata.
b- Un altro grande vantaggio è che le modifiche alla configurazione sono gestite tramite file dichiarativi (file di configurazione). Questi file hanno una descrizione dello stato finale del sistema. Il risultato è che mostrano l’effetto della configurazione prima che venga eseguita.
7- Agilità significa maggiore facilità ed efficienza nella creazione di immagini container rispetto all’utilizzo di immagini VM. Lo sviluppatore può scrivere codice indipendentemente dai problemi di compatibilità.
8- La portabilità crea lo standard del ciclo di vita dello sviluppo software.
Nota 1: la prima versione di Kubernetes risale al 2014 ed è stata creata per rispondere alla necessità di implementare una solida soluzione di cluster per ambienti container.
Statemi bene e a presto