Che cos'è Kubernetes?

Con l'adozione diffusa dei container da parte delle organizzazioni, il software di gestione incentrato sui container Kubernetes è diventato lo standard per eccellenza per il deployment e il funzionamento delle applicazioni containerizzate. Kubernetes, parte integrante del crescente ecosistema di Google Cloud, è stato sviluppato inizialmente da Google e rilasciato come progetto open source nel 2014. Kubernetes sfrutta i 15 anni di esperienza di Google nell'esecuzione dei carichi di lavoro containerizzati e i preziosi contributi della community open source. Ispirato dal sistema interno di gestione dei cluster di Google, Borg, Kubernetes semplifica tutte le attività associate al deployment e alla gestione delle applicazioni. Consentendo l'orchestrazione automatizzata dei container, Kubernetes aumenta l'affidabilità e riduce l'impegno di tempo e le risorse necessari per eseguire le operazioni quotidiane.

Metti alla prova le tue conoscenze con un lab pratico in Google Skills

Definizione di Kubernetes

Kubernetes (talvolta abbreviato in K8s, con l'8 che indica il numero di lettere tra la "K" e la "s") è un sistema open source per eseguire il deployment, scalare e gestire applicazioni containerizzate ovunque.

Kubernetes automatizza le attività operative di gestione dei container e include comandi integrati per il deployment delle applicazioni, l'implementazione di modifiche alle applicazioni, lo scale up e lo scale down delle applicazioni per adattarle a esigenze in continuo cambiamento, il monitoraggio delle applicazioni e altro ancora, rendendo più facile la gestione delle applicazioni.

Come funziona Kubernetes

Kubernetes aiuta a semplificare la gestione man mano che le applicazioni vengono scalate su più container e server. Esegue l'orchestrazione dei deployment con un'API open source, raggruppando i container in pod per la scalabilità in base alla domanda e alla disponibilità delle risorse. Kubernetes automatizza inoltre la Service Discovery, il bilanciamento del carico e l'allocazione delle risorse, e monitora lo stato per consentire l'auto-riparazione tramite il riavvio o la replica dei container.

Per gli sviluppatori aziendali, ecco una spiegazione dettagliata di come funziona Kubernetes:

  • Definisci la tua applicazione: inizia definendo lo stato desiderato della tua applicazione utilizzando i file YAML. Questi file specificano i container da eseguire, le risorse di cui hanno bisogno (CPU, memoria) e come devono essere esposti alla rete.
  • Invia una richiesta all'API Kubernetes: invia questi file YAML all'API Kubernetes, in genere utilizzando lo strumento a riga di comando kubectl.
  • Lo scheduler assegna i pod ai nodi: lo scheduler Kubernetes analizza i requisiti dell'applicazione e trova i nodi migliori nel cluster per eseguire i container (pacchettizzati come pod).
  • Kubelet avvia i container: su ogni nodo, un processo Kubelet riceve istruzioni dal control plane e avvia i container.
  • I servizi espongono le applicazioni: i servizi Kubernetes forniscono un indirizzo IP stabile e un nome DNS per l'applicazione, consentendo alle altre applicazioni di accedervi, anche se i pod vengono creati, distrutti e riprogrammati.
  • I controller garantiscono lo stato desiderato: i controller Kubernetes monitorano continuamente lo stato dell'applicazione e intraprendono azioni correttive se necessario. Ad esempio, se un pod si arresta in modo anomalo, il controller ne creerà automaticamente uno nuovo per sostituirlo.
  • Scalabilità e aggiornamenti: puoi scalare facilmente la tua applicazione aggiornando il numero di repliche nella configurazione del deployment. Kubernetes creerà o rimuoverà automaticamente i pod in modo che corrispondano alla scala desiderata. Gli aggiornamenti in sequenza consentono di eseguire il deployment di nuove versioni dell'applicazione senza tempi di inattività.

Quali sono i vantaggi di Kubernetes?

 Operazioni automatizzate

Kubernetes dispone di comandi incorporati per gestire molte delle attività "pesanti" associate alla gestione delle applicazioni, consentendo di automatizzare le operazioni quotidiane. Puoi assicurarti che le applicazioni funzionino sempre secondo le aspettative.

Astrazione dell'infrastruttura

Una volta installato, Kubernetes gestisce il calcolo, il networking e l'archiviazione per conto dei tuoi carichi di lavoro. In questo modo gli sviluppatori possono concentrarsi sulle applicazioni senza preoccuparsi dell'ambiente sottostante.

Monitoraggio dell'integrità dei servizi

Kubernetes esegue continuamente controlli di integrità dei servizi, riavviando i container con errori o bloccati e rendendo i servizi disponibili agli utenti solo dopo aver verificato che funzionino correttamente.

Utilizzo ottimizzato delle risorse

Kubernetes ottimizza l'utilizzo delle risorse pacchettizzando in modo efficiente i container sui nodi in base ai loro requisiti. Questo, a sua volta, aiuta a ridurre lo spreco di risorse e a diminuire i costi dell'infrastruttura.

Gestione semplificata delle applicazioni

Semplifica la gestione delle applicazioni con Kubernetes. Kubernetes offre un approccio uniforme al deployment, all'aggiornamento e alla gestione di applicazioni di diversa complessità.

Portabilità migliorata

Kubernetes è una piattaforma open source che viene eseguita in modo coerente in ambienti diversi, dai data center on-premise ai cloud pubblici, offrendo alle aziende flessibilità e portabilità.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.
Parla con un esperto del team di vendita di Google Cloud per discutere della tua sfida unica in modo più dettagliato.

Kubernetes o Docker

Anche se spesso vengono interpretati erroneamente come due alternative tra cui dover scegliere, Kubernetes e Docker sono tecnologie diverse, ma complementari, per l'esecuzione di applicazioni containerizzate. 

Docker consente di inserire quanto necessario per l'esecuzione dell'applicazione in un "contenitore" che può essere archiviato e aperto quando e dove necessario. Dopo aver iniziato a inserire le applicazioni nel contenitore, occorre trovare un modo per gestirle: è qui che entra in gioco Kubernetes.

Kubernetes è una parola greca che in italiano significa "capitano". Così come il capitano ha la responsabilità di assicurare la sicurezza della nave durante gli spostamenti in mare, Kubernetes ha la responsabilità di garantire il trasporto e la consegna in totale sicurezza dei contenitori nei "luoghi" in cui possono essere utilizzati.

  • Kubernetes può essere utilizzato con o senza Docker
  • Docker non è un'alternativa a Kubernetes, perciò la questione non è se utilizzare Kubernetes o Docker. Si tratta invece di usare Kubernetes con Docker per containerizzare le applicazioni ed eseguirle su vasta scala
  • La differenza tra Docker e Kubernetes è legata al ruolo svolto da ciascuna di queste tecnologie nella containerizzazione e nell'esecuzione delle applicazioni
  • Docker è uno standard di settore aperto per la creazione di pacchetti e la distribuzione di applicazioni in container
  • Kubernetes utilizza Docker per eseguire il deployment, gestire e scalare applicazioni containerizzate

Casi d'uso comuni di Kubernetes

Kubernetes viene utilizzato per creare applicazioni di cui puoi eseguire facilmente il deployment e la gestione, ovunque ti trovi. Quando disponibile come servizio gestito, Kubernetes offre una gamma di soluzioni per soddisfare le tue esigenze. Ecco alcuni casi d'uso comuni.

Aumento della velocità di sviluppo

Kubernetes aiuta a creare app cloud-native basate su microservizi. Supporta anche la containerizzazione delle app esistenti, diventando così la base per la modernizzazione delle applicazioni e permettendoti di sviluppare le app più rapidamente.

  • Esempio: una società di servizi finanziari utilizza Kubernetes per eseguire il deployment di microservizi per la propria piattaforma di online banking, consentendo cicli di sviluppo più rapidi e una migliore scalabilità.

Deployment di applicazioni ovunque

Kubernetes è creato per essere utilizzato ovunque, permettendoti di eseguire le tue applicazioni nei deployment sul sito e in quelli su cloud pubblico, nonché in quelli ibridi intermedi. In questo modo puoi eseguire le tue applicazioni dove necessario.

  • Esempio: un'azienda di e-commerce globale utilizza Kubernetes per eseguire il deployment della sua applicazione su più cloud provider, garantendo alta affidabilità ed evitando vincoli al fornitore.

Esecuzione di servizi efficienti

Kubernetes può regolare automaticamente le dimensioni di un cluster necessario per eseguire un servizio, consentendoti di fare automaticamente lo scale up e lo scale down delle applicazioni, in base alla domanda, ed eseguirle in modo efficiente.

  • Esempio: un servizio di streaming multimediale utilizza Kubernetes per scalare automaticamente la propria infrastruttura di codifica video in base al numero di utenti che guardano i contenuti, ottimizzando l'utilizzo delle risorse e riducendo i costi.

Domande frequenti

Esplora queste domande frequenti su Kubernetes

Un cluster Kubernetes è costituito da nodi (macchine virtuali o fisiche) che eseguono applicazioni containerizzate orchestrate da Kubernetes.

Un pod Kubernetes, la più piccola unità di cui è possibile eseguire il deployment, ospita uno o più container, che rappresentano una singola istanza del processo in esecuzione.

Un deployment Kubernetes garantisce lo stato desiderato dell'applicazione gestendo le repliche e gli aggiornamenti senza interruzioni.

Un servizio Kubernetes è un oggetto Kubernetes che fornisce un indirizzo IP stabile e un nome DNS per l'applicazione, consentendo ad altre applicazioni di accedervi.

Puoi scalare la tua applicazione aggiornando il numero di repliche nella configurazione del deployment. Kubernetes creerà o rimuoverà automaticamente i pod in modo che corrispondano alla scala desiderata.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud