Cos'è Kubernetes?

Di IBM Services

Orchestra e distribuisci applicazioni caricate in contenitori in qualsiasi ambiente

Kubernetes è una soluzione open source che automatizza l'implementazione, la scalabilità e il monitoraggio delle applicazioni caricate in contenitori.

Un contenitore è un software separato dalla relativa infrastruttura sottostante. Con i contenitori, tutti gli elementi sono virtualizzati a livello di sistema operativo. Ciò significa che, indipendentemente da dove viene eseguita un'applicazione, il funzionamento sarà identico.

La maggior parte dei contenitori oggi utilizza per l'esecuzione una piattaforma Kubernetes. Secondo l'organizzazione: “Kubernetes fornisce un ambiente di gestione incentrato sui contenitori. Esso orchestra un'infrastruttura di elaborazione, di rete e di storage per conto dei carichi di lavoro dell'utente…e favorisce la portabilità tra i provider di infrastruttura.” ⁽¹⁾

Informazioni di base su Kubernetes

Kubernetes ha mosso i suoi primi passi presso Google, dove un team di ingegneri ha sviluppato un sistema di gestione dei cluster denominato Borg. Nel 2014 l'azienda ha introdotto una versione open source di Borg, denominata Kubernetes.⁽²⁾

La prima versione di Kubernetes è stata rilasciata nel 2015, per fornire orchestrazione dei contenitori per applicazioni distribuite. Insieme alla release, Google ha stretto una partnership con Linux Foundation per formare la Cloud Native Computing Foundation e ha offerto Kubernetes come tecnologia iniziale.⁽²⁾

Fin dal suo esordio, Kubernetes è diventato sempre più popolare, grazie al modo in cui aiuta lo sviluppo ad ottenere la portabilità tra sistemi basati sulla tecnologia dei contenitori. Con più di 1.400 collaboratori, la community open source di Kubernetes è oggi una delle più vaste al mondo.

Docker è la tecnologia dei contenitori utilizzata più comunemente, ma Kubernetes ne supporta anche altre. Docker definiva modelli per la creazione di pacchetti software formati da unità standardizzate, che includevano tutti gli elementi necessari per eseguire un'applicazione.

Kubernetes orchestra l'ambiente dei contenitori – ottimizzando lo spazio e l'utilizzo del server. Gestisce l'ubicazione e la modalità di implementazione dei contenitori, utilizzando funzioni come la pianificazione intelligente, il bilanciamento del carico, la scalabilità, la gestione dello storage e l'esecuzione in batch.

Alcuni concetti chiave:

  • L'unità di gestione base di Kubernetes è un pod o gruppo di contenitori. I contenitori in un pod condividono lo stesso storage, le stesse risorse e lo stesso indirizzo IP.
  • Un cluster Kubernetes è costituito da nodi master e di lavoro. (Un nodo è l'host o il server su cui si esegue un contenitore; può essere una macchina virtuale o fisica).
  • Un nodo master gestisce il carico di lavoro del contenitore e indirizza le comunicazioni attraverso il sistema. Include uno scheduler che controlla le prestazioni, la capacità e la disponibilità.
  • I nodi di lavoro eseguono i pod, sotto la direzione del nodo master.
  • I file di configurazione consentono ai team di specificare i parametri operativi, quali il numero di pod che possono essere eseguiti contemporaneamente. Usando Kubernetes è possibile gestire le risorse di un intero data center come fosse un unico sistema. 

Kubernetes rispetto a Docker: Non è una scelta tra l'uno o l'altro

Perché Kubernetes è importante?

Applicazioni aziendali di grandi dimensioni possono includere un enorme numero di contenitori. Questo tipo di architettura può rapidamente diventare complessa.

Le organizzazioni devono essere in grado di orchestrare tutte le parti mobili in un ambiente di contenitori, preferibilmente da un'unica posizione privilegiata. Molti scelgono Kubernetes come soluzione.

Kubernetes gestisce l'ecosistema e adatta elaborazione e storage per garantire che i contenitori siano disponibili e implementati in modo efficiente. Al tempo stesso, lo sviluppo è in grado di sapere dove si trova ogni elemento, in qualsiasi momento.

Kubernetes può aiutare le organizzazioni a semplificare l'implementazione di nuove applicazioni, snellire la gestione di contenitori e risorse, ridurre i rischi dell'aggiornamento ed evitare tempi di inattività. Può ridimensionare i componenti delle applicazioni, singolarmente o come gruppo, e supportare applicazioni portatili native del cloud. 

Nel suo Blog IBM, Matt Johnsen delinea alcuni dei vantaggi:

  • Risparmi sui costi: I cluster Kubernetes sono noti per richiedere scarsa manutenzione. I team non devono scrivere i propri script di automazione dei contenitori. Possono utilizzare in modo efficace un'infrastruttura condivisa. Possono ridurre i costi hardware, utilizzando in modo più efficace l'hardware attuale.
  • Time to market più rapido: Kubernetes è perfetto per l'approccio DevOps. Una valida gestione dei contenitori implica un'implementazione quasi sempre priva di difficoltà, fino a quando il software è operativo.
  • Flessibilità dell'IT: Nell'azienda moderna il software viene eseguito su un qualsiasi numero di infrastrutture private e condivise. Utilizzando una soluzione per la gestione dei contenitori, i team non dovranno più sacrificare le prestazioni o procedere a grandi aggiustamenti per spostare le applicazioni. Possono eseguire software ovunque l'azienda ne abbia bisogno.

Un altro vantaggio di Kubernetes è la scalabilità orizzontale, che può aiutare ad affrontare esigenze di prestazioni variabili.

“Se ti avvali già di Docker e dei contenitori per le tue applicazioni, spostarle su Kubernetes può davvero aiutarti ad affrontare il sovraccarico di operazioni nel quale quasi ogni applicazione si imbatte durante la fase di adattamento”, spiega Sai Vennam, IBM Developer Advocate.

Kubernetes as a service

Le organizzazioni possono utilizzare un sistema Kubernetes interno per orchestrare le implementazioni dei loro contenitori. In alternativa, un provider di servizi può offrire una PaaS o una IaaS (platform o infrastructure as a service) basata su Kubernetes.

I clienti usufruiscono delle stesse funzionalità, ma con minore complessità e sovraccarico. Secondo Jason McGee, VP e IBM Fellow, IBM Cloud:

“La meccanica di installazione, connessione e configurazione di una raccolta di risorse in un cluster di contenitori funzionante non è semplice. Ci vogliono lavoro e conoscenza. Cosa succederebbe se si dovesse aggiungere o rimuovere capacità dall'ambiente contenitore? Come si ottiene il recupero, quando si verificano malfunzionamenti? Stanno cambiando anche i contenitori e Kubernetes, ad un ritmo rapidissimo.

“È difficile tenere il passo, senza alcun aiuto. Uno dei vantaggi di un servizio gestito è che c'è chi si occupa di tutto questo per tuo conto e tu puoi semplicemente concentrarti sulle tue applicazioni”. ⁽⁴⁾

Un MSP (Managed Service Provider - Provider di servizi gestiti) come IBM gestisce le risorse di elaborazione, di rete e di storage in ogni cluster di nodi. Il servizio IBM offre una pianificazione intelligente, la gestione semplificata del cluster, le politiche di sicurezza e di isolamento del contenitore e gli aggiornamenti dell'infrastruttura.

I clienti IBM possono anche utilizzare il servizio Kubernetes su un'infrastruttura cloud bare metal. In questo modo, si aggiungono agilità e velocità alle applicazioni che richiedono prestazioni di elaborazione molto elevate, come i carichi di lavoro di machine learning o AI.

“Gli sviluppatori ora possono scegliere configurazioni di macchine bare metal adeguate alle loro esigenze – sia che si tratti di isolamento, di maggiore capacità di elaborazione o di storage su disco locale di grandi dimensioni – pur usufruendo dei vantaggi dei contenitori, ad esempio spostare facilmente i dati tra vari sistemi o consentire a diversi membri del team di lavorare su più parti di un'applicazione contemporaneamente,” afferma McGee.

The Weather Company adatta i servizi Web per favorire la protezione delle persone

 

Risorse Kubernetes

Cosa sono i contenitori e perché sono necessari?

Scopri cosa sono i contenitori e perché le organizzazioni li utilizzano

Adozione di Kubernetes e importanza della gestione delle prestazioni delle applicazioni

Scopri perché un ambiente cloud basato su Kubernetes può favorire la trasformazioni di molte aziende

Kubernetes rispetto a Docker: Perché non entrambi?

Scopri le differenze tra Kubernetes e Docker

IBM mette a disposizione la facilità dei contenitori per carichi di lavoro complessi con Kubernetes gestito su bare metal

Esplora i vantaggi di eseguire i contenitori Kubernetes come servizio gestito, su un'infrastruttura cloud bare metal

Impara da Watson: In che modo i contenitori adattano carichi di lavoro AI

Scopri perché i carichi di lavoro AI sono diversi e più efficienti nel cloud

Monitoraggio di IBM Cloud Service con Outlyer

Scopri i vantaggi dell'utilizzo del monitoraggio self-service Outlyer su IBM Cloud Kubernetes Service

Servizio in evidenza

IBM Cloud Kubernetes Service

 

1. https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

2. https://blog.risingstack.com/the-history-of-kubernetes/

3. https://en.wikipedia.org/wiki/Kubernetes

4. https://softwareengineeringdaily.com/2017/11/29/how-ibm-runs-its-cloud-with-jason-mcgee/