Cos’è Kubernetes (K8s)?

Febbraio 17, 2025

Kubernetes (K8s) è una piattaforma open-source, scalabile e flessibile per la gestione di applicazioni containerizzate e dei relativi servizi, semplificando la configurazione e l’automazione del deployment. Kubernetes rappresenta un ecosistema vasto e in rapida espansione, con un’ampia disponibilità di servizi, supporto e strumenti.

Il termine Kubernetes deriva dal greco e significa timoniere o pilota. Google ha rilasciato il codice sorgente di Kubernetes nel 2014. Kubernetes si basa su oltre un decennio di esperienza di Google nella gestione di workload su larga scala, combinata con le migliori idee e pratiche della community.

L’evoluzione del deployment delle applicazioni:

Deployment tradizionale: Inizialmente, le applicazioni venivano eseguite su server fisici. Definire i limiti delle risorse per le applicazioni su un server fisico era impossibile, causando un’allocazione inefficiente delle risorse.

Deployment con virtualizzazione: La virtualizzazione consente di eseguire più macchine virtuali (VM) sulla CPU di un singolo server fisico. La virtualizzazione isola le applicazioni tra le VM e offre un livello di sicurezza, impedendo l’accesso non autorizzato ai dati di un’applicazione da parte di un’altra. La virtualizzazione permette un migliore utilizzo delle risorse del server fisico e una maggiore scalabilità.

Deployment con container: I container sono simili alle VM, ma hanno un livello di isolamento che consente la condivisione del sistema operativo (SO) tra le applicazioni. Di conseguenza, i container sono considerati leggeri. Similmente alle VM, un container dispone di un file system, CPU, memoria, spazio di processo, ecc. I container offrono numerosi vantaggi: creazione e deployment rapidi delle applicazioni, sviluppo e integrazione continua, separazione tra Dev e Ops, osservabilità del sistema e delle applicazioni, uniformità dell’ambiente, portabilità, gestione centralizzata delle applicazioni, microservizi distribuiti, isolamento delle risorse e utilizzo efficiente delle risorse.

Perché Kubernetes?

In un ambiente di produzione, è necessario gestire i container che eseguono le applicazioni e garantire l’assenza di downtime. Ad esempio, se un container si arresta, un altro deve essere avviato. Kubernetes fornisce un framework per eseguire sistemi distribuiti in modo affidabile. Si occupa della replica e del failover delle applicazioni, offrendo modelli di deployment.

Cosa offre Kubernetes:

  • Service discovery e bilanciamento del carico: Kubernetes può esporre un container utilizzando il DNS o un indirizzo IP dedicato. Se il traffico verso un container è elevato, Kubernetes può bilanciare il carico e distribuire il traffico di rete per garantire la stabilità del deployment.
  • Gestione dello storage: Kubernetes consente di montare automaticamente un sistema di storage a scelta.
  • Rollout e rollback automatici: Kubernetes può modificare lo stato effettivo allo stato desiderato con una frequenza controllata.
  • Automazione del packaging: Kubernetes può orchestrare i container sui nodi per ottimizzare l’utilizzo delle risorse.
  • Self-healing: Kubernetes riavvia i container in errore, li sostituisce, elimina quelli che non rispondono agli health check e li nasconde ai client finché non sono pronti.
  • Gestione della configurazione e della sicurezza: Kubernetes consente di archiviare e gestire informazioni sensibili.

Cosa non è Kubernetes?

Kubernetes non è un sistema PaaS (Platform as a Service) tradizionale e completo. Opera a livello di container, non di hardware. Kubernetes:

  • Non limita i tipi di applicazioni supportate.
  • Non esegue il deployment del codice sorgente e non compila le applicazioni.
  • Non fornisce servizi a livello di applicazione, come il middleware.
  • Non impone soluzioni di logging, monitoring o alerting.
  • Non fornisce né impone una configurazione specifica per linguaggi/sistemi.
  • Non fornisce né applica alcuna configurazione completa, manutenzione, gestione o sistema di self-healing.
  • Non è un semplice sistema di orchestrazione. Elimina la necessità di orchestrazione.

Leave A Comment

Categorie

Recent Posts

Create your account