kubernetes analisi architetturale

in Architetture Software, Informatica

Kubernetes analisi architetturale

Reading Time: 2 minutes

Docker è il tools che consente la creazione di containers che consentono il build e l’esecuzione di intere soluzioni software. A differenza delle macchine virtuali standard che virtualizzano sistema operativo ed hardware della macchina host, docker virtualizza soltanto il sistema operativo.

Questo tipo di architettura consente di risparmiare risorse che verrebbero allocate per il singolo “hardware” della singola macchina virtuale, rendendo l’esecuzione molto più scalabile e light.

Ho già introdotto le funzionalità ed l’architettura di Docker in un precedente post, dove sono stati descritti alcuni dei comandi più usati per interagire con in containers.

Docker utilizza il file DockerFile per la definizione di tutti gli elementi/funzionalità che dovranno essere buildate all’interno del container. In alternativa, è possibile utilizzare il file DockerCompose per la definizione di strutture più complesse (multiservizi) per la realizzazione dell’architettura del sistema finale (composto da più containers).

Che cos’è?

Utilizzare Docker senza Kubernetes è diventato praticamente impossibile. Kubernetes è il sistema opensource sviluppato da google utilizzato per la gestione e per l’orchestrazione dei container.

Kubernetes, semplificando di molto il suo lavoro, consente di semplificare (fino ad arrivare alla completa automazione) tutta una serie di processi manuali legati alla scalibilità ed alla pubblicazione dei servizi all’interno di host cluster dove vengono eseguiti i container.

Immaginiamo di dover deployare un’architettura composta da numerosi container: l’esecuzione e l’orchestrazione di ogni singole servizio potrebbe risultare molto onerosa sia in termini di operazioni da effettuare ogni volta, sia in termini gestione. E’ proprio per questo tipo di attività che è stato creato Kubernetes.

Anche se è stato sviluppato da Google, non è legato ad una specifica tecnologia/cloud: può essere eseguito in qualsiasi ambiente dove sia presente il supporto per i container (cloud pubblici, cloud privati, hardware fisico/privato). Inoltre, i nodi cluster possono utilizzare una combinazione di tutte le tecnologie precedenti. Kubernetes, inoltre, è stato rilasciato alla community OpenSource.

Come funziona?

Kubernetes è composto da tre elementi princiali:

  • Nodo Master: il core dell’intera architettura. E’ il nodo che gestisce tutti gli altri nodi del sistema e da cui vengono originati;
  • Nodi: sono tutti gli altri nodi (ad esclusione di quello master) , che sono controllate dal nodo master;
  • Pods: un gruppo di uno o più container eseguiti su un nodo. Per ottenere la condivisione delle risorse tra container, è necessario che siano eseguiti all’interno dello stesso pod. Una buona organizzazione dei container all’interno di pod permette di agevolare le operazioni di spostamento dei container tra nodi differenti. Semplificando, un pod rappresenta una sorta di astrazione del livello di rete e di storage per i container che “ospita”. Inoltre, i pod consentono all’orchestratore di gestire in maniera adeguata i carichi di lavoro.

L’accesso al core di Kubernetes avviene attraverso il nodo master, che mette a disposizione una serie di api che consentono l’iterazione con i nodi ed i relativi pods. La configurazione del nodo master è spesso trasparente all’utente finale.

Nei prossimi posts scenderò nei dettagli del funzionamento di ciascun singolo componente.