Cosa fa Kubernetes
Un container Docker su una sola macchina lo gestisci a mano senza problemi. Cinquanta container su dieci macchine โ riavviarli quando crashano, spostarli quando una macchina muore, ripartire il traffico tra loro, aggiornarli senza downtime โ no. Kubernetes (abbreviato in K8s) รจ il sistema che se ne occupa al posto tuo.
Cos’รจ Kubernetes?
Kubernetes รจ una piattaforma open source per l’orchestrazione di container. ร stato creato da Google nel 2014 basandosi su 15 anni di esperienza nella gestione di container su larga scala, ed รจ ora mantenuto dalla Cloud Native Computing Foundation (CNCF).
L’orchestrazione, in concreto: un’orchestra sinfonica ha bisogno di un direttore per tenere insieme a tempo decine di strumentisti.
- I musicisti sono i tuoi container, ognuno sa suonare il proprio strumento
- Il direttore d’orchestra รจ Kubernetes, che coordina tutti i musicisti
- La partitura รจ la configurazione che definisce come devono suonare insieme
Senza un direttore, ogni musicista suonerebbe per conto suo. Con Kubernetes, tutti i container lavorano in armonia per far funzionare la tua applicazione.
Il Nome Kubernetes
Il nome deriva dal greco ฮบฯ ฮฒฮตฯฮฝฮฎฯฮทฯ (kybernetes), che significa “timoniere” o “pilota”. Il logo con il timone a sette raggi rappresenta proprio questo concetto. L’abbreviazione K8s nasce dal fatto che ci sono 8 lettere tra la “K” e la “s”.
Perchรฉ Serve Kubernetes?
Docker risolve il problema di creare e far girare singoli container. Ma in produzione le cose si complicano:
- Cosa succede se un container crasha alle 3 di notte?
- Come distribuisci il traffico tra 10 istanze della stessa applicazione?
- Come aggiorni l’applicazione senza downtime?
- Come gestisci 50 microservizi che devono comunicare tra loro?
Kubernetes risponde a tutte queste domande.
Docker vs Kubernetes: Non Sono Alternativi
Un malinteso comune รจ pensare che Kubernetes sostituisca Docker. In realtร lavorano insieme:
| Strumento | Ruolo | Analogia |
|---|---|---|
| Docker | Crea e esegue singoli container | Il musicista che suona il violino |
| Kubernetes | Orchestra e gestisce molti container | Il direttore d’orchestra |
Kubernetes puรฒ usare Docker (o altri runtime come containerd) per eseguire i container. Non devi scegliere tra uno o l’altro: li usi entrambi.
A Cosa Serve Kubernetes: 6 Problemi che Risolve
1. Self-Healing: Container che Si Riparano da Soli
Se un container crasha, Kubernetes lo rileva e ne avvia automaticamente uno nuovo. Non serve che qualcuno sia sveglio alle 3 di notte per riavviare manualmente i servizi.
| |
2. Scaling Automatico
Hai un picco di traffico? Kubernetes puรฒ aumentare automaticamente il numero di container. Il traffico cala? Li riduce per risparmiare risorse.
| |
3. Load Balancing Integrato
Kubernetes distribuisce automaticamente il traffico tra tutti i container disponibili. Se un container รจ sovraccarico o non risponde, il traffico viene reindirizzato agli altri.
4. Rolling Updates: Aggiornamenti Senza Downtime
Quando deployi una nuova versione, Kubernetes:
- Avvia i nuovi container con la versione aggiornata
- Verifica che funzionino correttamente
- Gradualmente sposta il traffico sui nuovi container
- Termina i vecchi container
Se qualcosa va storto, puรฒ fare rollback automatico alla versione precedente.
5. Service Discovery
In un sistema con molti microservizi, come fa il servizio A a trovare il servizio B? Kubernetes fornisce un sistema DNS interno: ogni servizio ha un nome e Kubernetes si occupa di tradurlo nell’indirizzo corretto.
| |
6. Gestione dei Secrets e Configurazioni
Password, API key, configurazioni: Kubernetes li gestisce in modo sicuro e li inietta nei container senza hardcodarli nel codice.
| |
I Concetti Fondamentali di Kubernetes
Pod
Il Pod รจ l’unitร base di Kubernetes. Contiene uno o piรน container che condividono rete e storage. Nella maggior parte dei casi, un Pod contiene un solo container.
Node
Un Node รจ una macchina (fisica o virtuale) che esegue i Pod. Un cluster Kubernetes ha tipicamente piรน Node per garantire alta disponibilitร .
Cluster
Il Cluster รจ l’insieme di tutti i Node gestiti da Kubernetes. Include:
- Control Plane: il “cervello” che prende decisioni (dove piazzare i Pod, quando scalarli, ecc.)
- Worker Nodes: le macchine che eseguono effettivamente i container
Deployment
Un Deployment descrive lo stato desiderato della tua applicazione: quale immagine usare, quante repliche, come aggiornarla. Kubernetes si assicura che lo stato reale corrisponda sempre a quello desiderato.
Service
Un Service espone i Pod alla rete. Fornisce un indirizzo IP stabile e load balancing, anche se i Pod sottostanti cambiano.
| |
Kubernetes vs Docker Swarm
Docker ha il suo orchestratore integrato: Docker Swarm. Qual รจ la differenza?
| Caratteristica | Kubernetes | Docker Swarm |
|---|---|---|
| Complessitร | Alta | Bassa |
| Curva di apprendimento | Ripida | Dolce |
| Funzionalitร | Molto ricche | Essenziali |
| Ecosistema | Enorme | Limitato |
| Scaling | Molto potente | Buono |
| Adozione enterprise | Standard de facto | Di nicchia |
| Setup minimo | Complesso | Semplice |
Quando scegliere Docker Swarm:
- Progetti piccoli/medi
- Team con poca esperienza in orchestrazione
- Necessitร di partire velocemente
Quando scegliere Kubernetes:
- Progetti enterprise o in crescita
- Necessitร di funzionalitร avanzate
- Team disposto a investire nell’apprendimento
- Requisiti di scaling importanti
Quando NON Usare Kubernetes
Kubernetes non รจ sempre la risposta giusta. Evitalo se:
- Hai pochi container: gestire 2-3 container con K8s รจ come usare un TIR per portare la spesa
- Il team รจ piccolo: la complessitร operativa puรฒ superare i benefici
- L’applicazione รจ monolitica: K8s brilla con i microservizi
- Non hai requisiti di scaling: se il traffico รจ costante e prevedibile, potresti non averne bisogno
- Budget limitato: i cluster Kubernetes hanno costi operativi significativi
Alternative Piรน Semplici
| Scenario | Alternativa a Kubernetes |
|---|---|
| Pochi container, un server | Docker Compose |
| Orchestrazione semplice | Docker Swarm |
| Serverless | AWS Lambda, Azure Functions |
| PaaS gestito | Heroku, Railway, Render |
Su un singolo host, Docker Compose copre gran parte di ciรฒ per cui di solito si ricorre subito a Kubernetes.
Come Iniziare con Kubernetes
Se vuoi esplorare Kubernetes senza impazzire, ecco un percorso graduale:
1. Impara i Fondamenti di Docker
Se non l’hai giร fatto, parti da Docker. Kubernetes orchestra container, quindi devi prima saperli creare.
2. Sperimenta in Locale con Minikube
Minikube crea un cluster Kubernetes sul tuo computer. Perfetto per imparare senza costi cloud.
| |
3. Esplora kubectl
kubectl รจ il comando per interagire con Kubernetes. Impara le operazioni base:
| |
4. Prova un Cluster Gestito
Quando sei pronto per la produzione, usa un servizio gestito:
- Google Kubernetes Engine (GKE)
- Amazon Elastic Kubernetes Service (EKS)
- Azure Kubernetes Service (AKS)
Questi servizi gestiscono il Control Plane per te, riducendo la complessitร operativa.
Ti serve davvero Kubernetes?
Kubernetes ripaga la sua complessitร quando esegui molti servizi, su piรน di una macchina, con un uptime che conta. Self-healing, autoscaling e rolling update sono difficili da costruire da soli, e Kubernetes te li dร pronti.
Sotto quella soglia costa piรน di quanto renda. Una manciata di container su un server gira bene con Docker Compose. Un piccolo cluster con esigenze modeste gira bene con Docker Swarm. Passa a Kubernetes quando questi non stanno piรน al passo, non prima.
Per impararlo senza pagare un cluster di produzione, parti da Minikube sulla tua macchina e affronta i concetti qui sopra uno alla volta.