Come funziona Kubernetes: funzionamento e struttura

Come funziona Kubernetes: mini guida per capire il funzionamento di uno dei tools più importanti per un developer oggi

Come funziona Kubernetes? Lo vediamo in questa mini guida tenendo sempre in considerazione che Kubernetes è un tool di grande rilevanza per un developer che vuole crescere e che realmente crede nella sua professione.

Iniziamo con il definire che cos’è Kubernetes (Cos’è Kubernetes), proprio perché stiamo parlando di una piattaforma di orchestrazione per container open source, progettata per l’esecuzione di applicazioni e servizi distribuiti su larga scala.

Ok, detto questo, che vuol dire poco e niente, vediamo come funziona Kubernetes e quali sono le funzionalità principali di questo strumento Devops che più di ogni altro oggi completa in maniera significativa le skills di un developer.

Progettare con Kubernetes

Per capire il funzionamento di Kubernetes, iniziamo dal concetto di progettazione. La progettazione con Kubernetes è tutta basata su cluster. Come deve essere un cluster?

  • Sicuro. Il cluster “a norma” deve necessariamente essere in linea con le best practice più aggiornate in ambito di sicurezza.
  • Facile da usare. Deve poter funzionare con pochi e semplici comandi. 
  • Estendibile. Non deve essere vincolato ad alcun vendor lock in e soprattutto deve essere personalizzabile a partire da un file di configurazione.

Cluster Kubernetes

Un cluster di kubernetes possiede 2 elementi essenziali che vanno approfonditi attentamente

  • piano di controllo
  • nodi

Piano di Controllo

Il centro nevralgico del cluster Kubernetes è il piano di controllo, in cui troviamo i componenti Kubernetes che controllano il cluster e i dati sullo stato e sulla configurazione del cluster.

Ogni piano di controllo in ambito Kubernetes a sua volta è costituito da questi elementi fondamentali. Dovete considerare che il piano di controllo garantisce che il cluster venga configurato nel modo più ottimale possibile. 

kube apiserver

l’API Kubernetes rappresenta di fatto il front end del piano di controllo di Kubernetes in quanto ne gestisce le richieste interne ed esterne. Il server API stabilisce se una richiesta è valida, e in caso positivo, procede alla sua elaborazione

kube scheduler

Lo scheduler Kubernetes si occupa di garantire l’integrità del cluster e quindi di assicurare che il cluster abbia la capacità sufficiente per ospitare altri nuovi container.

kube controller manager

I controller si occupano dell’effettiva esecuzione del cluster; nello specifico vuol dire che il controller-manager Kubernetes riunisce in un unico controller parecchie funzioni di controllo

etcd

Un etcd non è altro che un database di archiviazione chiave-valore, pertanto memorizza dati e informazioni di configurazione connessi allo stato del cluster.

Nodi

Un cluster Kubernetes richiede almeno un nodo di lavoro, dobbiamo però considerare che di solito sono presenti più di un nodo all’interno del cluster. I pod vengono pianificati e orchestrati per essere eseguiti sui nodi, di conseguenza per aumentare la capacità del cluster è sufficiente aggiungere altri nodi.

Ogni nodo in ambito Kubernetes a sua volta è costituito da questi elementi fondamentali.

pod

Come si è appena potuto evincere, tutti i pod sono costituiti da container, o da coppie di container. il Pod è l’unità/elemento più piccola di tutto il sistema Kubernetes. 

motore di runtime del container

Ogni nodo a sua volta supporta un motore di runtime per eseguire i container, Docker non a caso è proprio uno di questi! 

kubelet: 

si tratta di una mini applicazione che comunica con il piano di controllo e verifica che i container vengano eseguiti in un pod.

kube proxy

La sua funzione è quella di gestire le comunicazioni di rete interne ed esterne al cluster coordinando il filtraggio dei pacchetti del sistema operativo.

 

Read related articles