Alan Zeichick | Senior Writer | 5 settembre 2025
Kubernetes è una piattaforma open source per la gestione di applicazioni molto grandi che includono un numero enorme di servizi containerizzati. Sviluppato dagli ingegneri di Google nel 2014 e rilasciato come piattaforma open source poco dopo, Kubernetes è ora un fiorente ecosistema supportato da quasi tutti i fornitori di servizi cloud. Kubernetes può essere utilizzato per gestire applicazioni cloud native create con microservizi e applicazioni tradizionali in esecuzione on-premise o nel cloud.
Parte del potere di Kubernetes risiede nella sua automazione: può ridurre in modo significativo il carico di lavoro necessario per la gestione delle applicazioni in una rete.
Kubernetes è un sistema open source per la distribuzione, la gestione e il ridimensionamento di applicazioni containerizzate, in particolare applicazioni cloud native scritte utilizzando i microservizi. A volte abbreviato come K8s, Kubernetes consente agli amministratori di raggruppare i container in cluster per renderli più facili da gestire.
Che cosa fa Kubernetes? Inizia distribuendo container che includono un'applicazione completa o un componente di un'applicazione, spesso chiamato servizio. Questi container vengono distribuiti su server, che possono essere nel cloud, on-premise, distribuiti su diversi cloud in una configurazione multicloud o in una configurazione ibrida cloud/on-premise.
Una volta distribuiti i container, Kubernetes fornisce funzionalità di ricerca automatica, consentendo a un'applicazione o a un servizio di trovare i servizi di cui ha bisogno da altri container. Kubernetes indirizza il traffico alla risorsa corretta sotto il proprio controllo. Se un sistema esegue più copie di un'applicazione o di un servizio containerizzato, in genere per soddisfare una domanda elevata, Kubernetes bilancia automaticamente il carico.
Parte del potere di Kubernetes consiste nella capacità di raggruppare i container in modi rilevanti per la distribuzione. Ad esempio, può raggruppare diversi container che condividono lo stesso storage e la stessa rete in un pod, una parola che useremo spesso. Faremo anche riferimento ai nodi Kubernetes. Si tratta di singoli computer, servizi fisici o macchine virtuali tradizionali che ospitano container. Una raccolta di nodi su cui è in esecuzione Kubernetes, ovvero un insieme di container fisici o virtuali, viene denominato cluster.
Per ogni container, pod, nodo e cluster, Kubernetes gestirà le risorse di storage, rileverà e riavvierà i container con errori, un processo chiamato "riparazione" e implementerà persino protocolli di sicurezza in un'applicazione distribuita. Può essere configurato per gestire password, token di sicurezza e chiavi di crittografia, semplificando la protezione degli asset strategici.
Lo sviluppo della piattaforma Kubernetes viene supervisionato dalla Cloud Native Computing Foundation (CNCF).
I container sono spesso un'alternativa a un diverso modello di distribuzione cloud: le macchine virtuali (VM). I container sono più leggeri delle VM perché utilizzano il sistema operativo e i driver di base del server host. Al contrario, le VM sono più grandi e richiedono più risorse di elaborazione perché ciascuna è dotata di un proprio sistema operativo. Pertanto, un server può eseguire più container rispetto alle VM e, soprattutto, può dedicare più risorse del processore e della memoria alle applicazioni in esecuzione piuttosto che gestire più istanze del sistema operativo, una per ogni VM. Sebbene ci siano casi specializzati che richiedono necessariamente l'uso di VM, i container offrono un modello molto più efficiente per la maggior parte delle distribuzioni di applicazioni cloud.
Sebbene Kubernetes e i container siano correlati, è meglio considerarli come tecnologie complementari. Kubernetes è una piattaforma di gestione per i container che viene spesso utilizzata per le distribuzioni su larga scala in centinaia o migliaia di container. Gli stessi container inseriscono tutti i codici e le dipendenze necessari per una funzionalità, che si tratti di un microservizio o di un'applicazione completa, in un unico formato eseguibile.
Kubernetes è uno strumento che consente di gestire contemporaneamente molti container, in genere nel cloud. A volte descritto come il sistema operativo per il cloud, Kubernetes aiuta le organizzazioni a gestire i container su larga scala.
Concetti chiave
Kubernetes è una piattaforma che automatizza la distribuzione, la scalabilità e la gestione dei container. Kubernetes è anche in grado di riparare i container, ovvero rilevare quando non funzionano correttamente e quindi correggerli. Kubernetes ruota attorno all'orchestrazione: come un direttore d'orchestra che dirige i musicisti, sa cosa deve essere fatto, mantiene tutti i container attivi e funzionanti e agisce se qualcosa va storto.
E proprio come un direttore d'orchestra segue una partitura musicale che richiede un pianoforte, violini, qualche violoncello e un gruppo di ottoni, Kubernetes si basa su un documento che descrive la condizione desiderata per i container di un'applicazione. Questo documento, denominato file di configurazione, descrive le funzioni necessarie per avviare l'applicazione e specifica quali container possono fornire tali funzioni. Il file di configurazione elenca anche i server, i dispositivi di storage, le reti e gli altri computer fisici disponibili per i container dell'applicazione.
Quando viene avviata un'applicazione, Kubernetes carica i container necessari nei server disponibili in base al file di configurazione, quindi inizia a eseguire il software in tali container. Monitora l'utilizzo delle risorse di ogni server (o nodo), assicurandosi che i sistemi non siano sovraccarichi. In caso contrario, sposta i container su un server con meno carico avviando un nuovo container e arrestando quello precedente. Se un container è sovraccarico, Kubernetes avvia una copia identica di tale container su un server diverso e configura automaticamente un load balancer per dividere il carico di lavoro tra entrambi. Man mano che la domanda aumenta, avvia un terzo container e così via, in base alle esigenze. In seguito, se il carico di lavoro diminuisce, Kubernetes arresta tutti i container non necessari per ridurre i costi e dedicare più risorse del server ad altri task.
Se un container contiene errori, Kubernetes ne avvia immediatamente uno nuovo su un altro server e reindirizza il traffico di rete lontano dall'area problematica, eseguendo il failover in tempi rapidi.
Immagina di avere che un'applicazione che richiede centinaia o migliaia di container, ciascuno dei quali fornisce i servizi necessari per l'applicazione. Gli amministratori di sistema potrebbero distribuire e gestire manualmente i container, eventualmente con l'ausilio di strumenti di automazione per task specifici come il bilanciamento del carico o il rilevamento di errori. In effetti, esistono anche strumenti per la gestione dei container in distribuzioni su piccola scala. Questi sono spesso utilizzati dagli sviluppatori di software e dai team DevOps durante la creazione e la verifica di software containerizzati.
Tuttavia, senza un sistema di orchestrazione più completo, le esigenze di amministrazione finiscono per diventare eccessive.
Il grande vantaggio di Kubernetes è che si tratta di un'unica piattaforma che gestisce i task di automazione, dalla distribuzione al ridimensionamento dei container fino alla risoluzione degli errori. Inoltre, Kubernetes è open source e ampiamente supportato, anche da tutti i principali fornitori di servizi cloud. In breve, è onnipresente. Ciò rende Kubernetes il sistema ideale per la gestione di un'applicazione enterprise containerizzata di grandi dimensioni.
Quando un'organizzazione decide di containerizzare le proprie applicazioni, l'adozione di Kubernetes per orchestrare tali container è fondamentale, considerando soprattutto i molteplici risvolti positivi.
Gli ingegneri di Google che hanno creato Kubernetes hanno scelto questo nome ispirandosi a un'antica parola greca che significa pilota o timoniere, la persona che guida una nave, perché sposta e gestisce una flotta di container. E come una vera e propria nave portacontainer, Kubernetes dipende da molti componenti che funzionano in modo integrato per sistemare il carico di dati nel posto giusto. Questi termini verranno utilizzati di frequente nelle descrizioni dei container e della piattaforma di orchestrazione Kubernetes.
Kubernetes non è solo una piattaforma di gestione dei container; è un sofisticato strumento di orchestrazione che automatizza e semplifica l'intero ciclo di vita dell'applicazione, dalla progettazione alla distribuzione all'uso in modalità di produzione. Il suo solido set di funzioni consente di gestire in modo efficiente applicazioni complesse e distribuite. Ecco alcune delle caratteristiche principali di Kubernetes:
Sebbene Kubernetes sia stato perfezionato nel corso degli anni, presenta una curva di apprendimento ripida. Tuttavia, conviene prendersi il tempo necessario per imparare a usare Kubernetes piuttosto che ricorrere ad altri metodi per la gestione di applicazioni distribuite di grandi dimensioni. Ecco alcune sfide da prendere in considerazione:
Le aziende utilizzano Kubernetes per molti tipi di applicazioni, fondamentalmente in ogni settore, dall'e-commerce alla produzione, dalla ricerca alla finanza fino ai servizi di pubblica utilità. Molte applicazioni distribuite di grandi dimensioni che utilizzano container possono ottenere vantaggi dalle funzioni di orchestrazione e automazione in Kubernetes. Ecco alcuni scenari comuni in cui Kubernetes può fare davvero la differenza.
La combinazione di Kubernetes con l'AI può cambiare radicalmente un'azienda, poiché Kubernetes può svolgere un ruolo fondamentale nella gestione e nell'orchestrazione dei carichi di lavoro AI nel cloud. In particolare, Kubernetes offre una piattaforma solida e flessibile per l'addestramento e la distribuzione dell'AI, con diversi vantaggi:
L'adozione diffusa di Kubernetes nell'ultimo decennio ha favorito la formazione di un fiorente ecosistema di strumenti, servizi e tecnologie di supporto. Questo ecosistema migliora ulteriormente le funzionalità di Kubernetes, offrendo alle organizzazioni diverse opzioni per personalizzare la propria infrastruttura e le proprie procedure di sviluppo. Le principali categorie di questo ecosistema includono:
Quando si parla dell'ecosistema Kubernetes, non si può non menzionare KubeCon, la conferenza annuale per sviluppatori e utenti Kubernetes ospitata dalla Cloud Native Computing Foundation (CNCF). Dall'organizzazione del primo KubeCon nel 2015 con 500 partecipanti, l'evento è cresciuto notevolmente. Nel 2024, la conferenza di Salt Lake City ha attirato oltre 9.000 sviluppatori e ingegneri.
Le best practice per Kubernetes potrebbero essere trattate in un libro, e infatti ne esistono molti su questo argomento. Facciamo un precisazione: Kubernetes è complesso. Tuttavia, seguire queste best practice può aiutare le aziende a sfruttare correttamente la piattaforma.
OCI Kubernetes Engine (OKE) è un servizio di orchestrazione di container gestito da Oracle che può ridurre i tempi e i costi della creazione di applicazioni cloud native. OKE consente di semplificare le operazioni di Kubernetes di livello enterprise su larga scala, in modo da distribuire e gestire facilmente carichi di lavoro a uso intensivo di risorse, come l'AI, automatizzando la scalabilità, l'applicazione di patch e gli aggiornamenti. OKE offre:
La capacità della piattaforma Kubernetes di orchestrare e automatizzare la distribuzione e la gestione delle applicazioni ha rivoluzionato il modo di gestire le applicazioni nell'era cloud native. Man mano che Kubernetes continua a evolversi e ottenere slancio, le sue funzionalità diventano sempre più significative. Le aziende che adottano Kubernetes possono ottenere un notevole vantaggio competitivo, quindi è fondamentale che sviluppatori e leader aziendali comprendano appieno questa tecnologia.
Kubernetes è fondamentale per lo sviluppo cloud native, che è la chiave per rendere le applicazioni più resilienti, scalabili e agili, indipendentementa dal fatto che siano in esecuzione nel cloud, on-premise o in un modello ibrido o multicloud.
Perché Kubernetes è un componente cruciale della strategia cloud aziendale?
Kubernetes è cruciale perché determina il modo in cui le aziende implementano, ridimensionano e gestiscono le loro applicazioni distribuite, in particolare quelle in esecuzione nel cloud. L'automazione di Kubernetes migliora l'affidabilità delle applicazioni e massimizza l'utilizzo delle risorse, riducendo così i costi.
Quali sono i fattori chiave che le aziende dovrebbero prendere in considerazione quando adottano Kubernetes su larga scala?
Ci sono due fattori principali da tenere a mente. Il primo è la disponibilità a livello organizzativo: ingegneri e sviluppatori sono pronti per questo modello di sviluppo e distribuzione di applicazioni? L'altro è tecnico: stai usando l'approccio architetetturale corretto per progettare e distribuire Kubernetes e container in un modo sicuro, stabile e conforme ai requisiti di governance?
Quali sono le principali considerazioni sui costi per le aziende che eseguono Kubernetes su larga scala?
Kubernetes può contribuire a ridurre i costi massimizzando l'utilizzo delle risorse cloud e rilasciando, ad esempio, server e sistemi di storage quando non sono necessari. Tuttavia, per sfruttare appieno le risorse disponibili, si devono sostenere i costi associati all'addestramento, allo sviluppo di strumenti e all'ottimizzazione della rete e dei modelli di applicazione.
In che modo le aziende possono garantire una transizione agevole dall'infrastruttura tradizionale a Kubernetes?
È un grande cambiamento! Prova innanzitutto a integrare Kubernetes in una piccola applicazione che potrebbe essere già in esecuzione in uno o pochi container. Inizia con un servizio Kubernetes basato sul cloud che possa gestire il piano dati per tuo conto anziché tentare di apprendere, distribuire e far funzionare tutti i diversi elementi autonomamente. Sperimenta vari aggiornamenti, rollback, strumenti di monitoraggio, errori intenzionali e molto altro ancora per aiutare il tuo team ad acquisire l'esperienza necessaria per affrontare progetti più grandi, come il refactoring da un'applicazione monolitica a una basata sui microservizi.