Kubernetes: cos'è?

Copia URL
Poste Italiane logo

Caso cliente: Poste Italiane

Il servizio postale italiano accelera la trasformazione digitale con i container. Scopri perché ha scelto le soluzioni di Red Hat.

Kubernetes, anche noto come k8s o kube, è una piattaforma open source di orchestrazione dei container che consente di automatizzare molti dei processi manuali necessari per il deployment, la gestione e la scalabilità delle applicazioni containerizzate.

Originariamente progettato e sviluppato dagli ingegneri di Google come progetto Borg, Kubernetes fu donato alla Cloud Native Computing Foundation (CNCF), nel 2015. Red Hat® è stata fra le prime aziende a collaborare con Google all'iniziativa Kubernetes, ancora prima del lancio, diventando il secondo collaboratore per importanza al progetto upstream di Kubernetes. 

 

Un deployment Kubernetes in funzione è chiamato cluster, cioè un gruppo di host che eseguono container Linux®. Possiamo immaginarlo suddiviso in due parti: il piano di controllo e i sistemi di elaborazione, o nodi.

A diagram showing the infrastructure of a Kubernetes cluster

Ogni nodo è un ambiente Linux autonomo, e può essere una macchina fisica o una macchina virtuale. Ogni nodo esegue i pod, che sono composti da container. 

Il piano di controllo mantiene la condizione target del cluster, decidendo ad esempio le applicazioni da eseguire e le immagini dei container utilizzate da queste ultime. I sistemi di elaborazione eseguono concretamente le applicazioni e i carichi di lavoro. Il piano di controllo riceve i comandi da un amministratore (o dal team DevOps) e inoltra tali istruzioni ai sistemi di elaborazione.

Questo passaggio funziona con una moltitudine di servizi per individuare automaticamente il nodo più adatto all'attività. I servizi disaccoppiano le definizioni di lavoro dai pod e fanno pervenire in modo automatico le richieste di servizio al pod giusto, anche se questo è stato dislocato altrove nel cluster o sostituito. Le risorse vengono quindi allocate e i pod di quel nodo assegnati, per completare il lavoro richiesto.

Kubernetes viene eseguito nel sistema operativo (ad esempio Red Hat Enterprise Linux) e interagisce con i pod dei container in esecuzione sui nodi.

La condizione target di un cluster Kubernetes determina le applicazioni o gli altri carichi di lavoro da eseguire, le immagini che utilizzano, le risorse a cui devono avere accesso e altre informazioni di configurazione analoghe.

Con questo tipo di infrastruttura, la gestione dei container subisce pochi cambiamenti: l'interazione degli utenti con i container avviene a un livello superiore, il che offre maggiore controllo senza bisogno di gestire singolarmente ciascun nodo o container. 

In funzione delle diverse esigenze, Kubernetes può essere eseguito su server bare metal, macchine virtuali, provider di cloud pubblico, cloud privati e ambienti di cloud ibrido. Uno dei principali vantaggi di Kubernetes è la compatibilità con diverse tipologie di infrastruttura.

Ascolta l'opinione dei vertici di Red Hat sulla rivoluzione del cloud ibrido open source avviata dai container.

Durata del video: 04:07. Scopri di più su container, Kubernetes e hybrid cloud guardando il secondo episodio della serie Red Hat Technically Speaking.

Docker si può utilizzare come runtime del container orchestrato da Kubernetes. Quando Kubernetes assegna un pod a un nodo, il <a href="/it/topics/containers/kubernetes-architecture">kubelet</a> (il servizio che assicura l'esecuzione di ogni container) presente su quel nodo chiede a Docker di avviare i container specificati.

Poi kubelet acquisisce in modo continuativo lo stato di tali container da Docker e accorpa queste informazioni nel piano di controllo. Docker esegue il pull dei container sul nodo e li avvia e li arresta.

La differenza principale dell'utilizzo di Kubernetes con Docker sta nel fatto che non è un amministratore ad assegnare manualmente le attività su ciascun nodo, ma le richieste provengono da un sistema automatizzato.

Inizia il tuo percorso con Kubernets In questo corso on demand vengono trattati argomenti quali: la containerizzazione di applicazioni e servizi, lo svolgimento di test con Docker e il deployment su cluster Kubernetes con Red Hat OpenShift®.

Kubernetes consente di gestire e distribuire applicazioni containerizzate, tradizionali, cloud native e quelle convertite in microservizi. 

Per soddisfare le esigenze aziendali in continua evoluzione, il team di sviluppo deve essere in grado di creare rapidamente nuovi servizi e applicazioni. Lo sviluppo cloud native inizia dall'inserimento dei microservizi nei container, il che accelera lo sviluppo e facilita la trasformazione e l'ottimizzazione delle applicazioni esistenti. 

Sviluppo applicativo con Kubernetes

Le applicazioni di produzione si espandono su più container, che devono essere distribuiti su più host server. Kubernetes offre le capacità di orchestrazione e gestione necessarie per distribuire i container su larga scala e gestire al meglio questi carichi di lavoro.

L'orchestrazione di Kubernetes consente di creare servizi applicativi che si estendono su più container, programmare tali container in un cluster, gestirne la scalabilità e l'integrità nel tempo. Kubernetes permette di migliorare notevolmente la sicurezza IT.

Per ottenere un'infrastruttura di container completa, occorre integrare Kubernetes con servizi aggiuntivi di rete, storage, sicurezza, telemetria, ecc.

Kubernetes explained - diagram

Una volta passati a un ambiente di produzione e a più applicazioni, diventa chiara la necessità di diversi container in colocation che lavorano insieme per l'erogazione dei singoli servizi. 

I container Linux offrono alle applicazioni basate su microservizi un'unità di deployment dell'applicazione ideale e un ambiente di esecuzione autosufficiente. Inserendo i microservizi nei container, è possibile gestire con semplicità i servizi, inclusi lo storage, le reti e la sicurezza.

In questo modo, il numero di container nel tuo ambiente si moltiplica, comportando un aumento della complessità.

Kubernetes supera molte delle difficoltà comuni legate alla proliferazione dei container, raggruppandoli in "pod". I pod aggiungono un livello di astrazione ai container raggruppati, aiutandoti a programmare i carichi di lavoro e a fornire i servizi necessari, tra cui rete e storage, ai container stessi. 

Kubernetes agevola, inoltre, il bilanciamento dei carichi all'interno dei pod e garantisce l'utilizzo di un numero di container adeguato per supportare i tuoi carichi di lavoro.

Grazie al deployment corretto di Kubernetes e al contributo di altri progetti open source come Open vSwitch, OAuth e SELinux, puoi orchestrare tutti i componenti della tua infrastruttura di container.

Kubernetes è open source e, in quanto tale, non è dotato di una struttura di supporto formale, o meglio di una struttura di supporto su cui poter basare la propria azienda. Eventuali problemi con il deployment di Kubernetes in produzione metterebbero in difficoltà la tua azienda e i tuoi clienti.

Immagina Kubernetes come il motore di un'auto. Un motore può funzionare anche da solo, ma diventa parte di un'automobile funzionante solo quando viene connesso alla trasmissione, agli assali e alle ruote. La semplice installazione di Kubernetes non è sufficiente per avere una piattaforma per gli ambienti di produzione. Kubernetes ha bisogno di altri componenti per essere del tutto funzionante. Bisogna associarvi autenticazione, reti, sicurezza, monitoraggio, gestione dei log e altri strumenti. Ed è qui che entra in gioco Red Hat OpenShift, che è proprio l'auto completa. 

Red Hat OpenShift è la versione di Kubernetes per l'ambiente enterprise. Include tutti i componenti aggiuntivi necessari per adattare Kubernetes a questo tipo di ambiente, tra cui registro, reti, telemetria, sicurezza, automazione e servizi. Red Hat OpenShift include Kubernetes come componente centrale della piattaforma ed è un'offerta Kubernetes certificata dal CNCF.

Red Hat OpenShift Container Platform permette agli sviluppatori di creare nuove app containerizzate, ospitarle e distribuirle nel cloud con i livelli di scalabilità, controllo e orchestrazione necessari per trasformare le idee migliori in nuove opportunità di business, in modo semplice e rapido. Se stai pensando di distribuire o spostare i carichi di lavoro Kubernetes su un servizio cloud gestito, OpenShift è disponibile anche come piattaforma Kubernetes cloud native su Amazon Web Services (AWS), Microsoft Azure, Google Cloud, IBM Cloud e altri provider. 

Basandosi su OpenShift, puoi utilizzare insieme Red Hat Advanced Cluster Management e Red Hat Ansible® Automation Platform per distribuire e gestire in modo efficiente più cluster Kubernetes in diverse regioni e in ambienti diversi: cloud pubblici, on-premise ed edge.

Scopri come creare e automatizzare ambienti ibridi con Red Hat

Esempio di utilizzo: realizzazione di una piattaforma cloud per offrire servizi bancari innovativi

Emirates NBD, uno dei più grandi istituti bancari degli Emirati Arabi Uniti (EAU), aveva bisogno di una base scalabile e resiliente per l'innovazione digitale. La banca era svantaggiata da un sistema di provisioning lento e un ambiente IT complesso. Per configurare un server potevano essere necessari anche due mesi, mentre le modifiche a grandi applicazioni monolitiche richiedevano oltre sei mesi.

Utilizzando Red Hat OpenShift Container Platform per l'orchestrazione, l'integrazione e la gestione dei container, la banca ha creato Sahab, il primo cloud privato eseguito su larga scala da una banca in Medio Oriente. Sahab offre applicazioni, sistemi e altre risorse per lo sviluppo end to end, dal provisioning alla produzione, tramite un modello as a service

Con la nuova piattaforma, Emirates NBD ha migliorato la collaborazione tra i team interni e i partner grazie all'utilizzo delle interfacce di programmazione delle applicazioni (API) e dei microservizi. La banca ha inoltre ridotto i cicli di avvio e aggiornamento delle app con l'adozione di metodologie di sviluppo DevOps più agili.

Esempio di utilizzo: Emirates NBD realizza una piattaforma cloud per offrire servizi bancari innovativi

Emirates NBD, uno dei più grandi istituti bancari degli Emirati Arabi Uniti (EAU), aveva bisogno di una base scalabile e resiliente per l'innovazione digitale. La banca era svantaggiata da un sistema di provisioning lento e un ambiente IT complesso. Per configurare un server potevano essere necessari anche due mesi, mentre le modifiche a grandi applicazioni monolitiche richiedevano oltre sei mesi.

Utilizzando Red Hat OpenShift Container Platform per l'orchestrazione, l'integrazione e la gestione dei container, la banca ha creato Sahab, il primo cloud privato eseguito su larga scala da una banca in Medio Oriente. Sahab offre applicazioni, sistemi e altre risorse per lo sviluppo end to end, dal provisioning alla produzione, tramite un modello as a Service. 

Con la nuova piattaforma, Emirates NBD ha migliorato la collaborazione tra i team interni e i partner grazie all'utilizzo delle interfacce di programmazione delle applicazioni (API) e dei microservizi. La banca ha inoltre ridotto i cicli di avvio e aggiornamento delle app con l'adozione di metodologie di sviluppo DevOps più agili.

Scopri altri vantaggi offerti dai container.

Keep reading

ARTICOLO

Container e VM

I container Linux e le macchine virtuali (VM) sono entrambi pacchetti di ambienti di elaborazione che combinano vari componenti IT e li isolano dal resto del sistema.

ARTICOLO

Cos'è l'orchestrazione dei container?

Definiamo orchestrazione dei container l'automazione dei processi di deployment, gestione, scalabilità e networking dei container.

ARTICOLO

Cos'è un container Linux?

Un container Linux è un insieme di processi, isolati dal resto del sistema, che esegue un'immagine distinta contenente tutti i file necessari per supportare tali processi.

Scopri di più sui container

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

Checklist

10 considerazioni sui deployment Kubernetes

Checklist

Sei considerazioni per scegliere la piattaforma Kubernetes giusta

Serie Open Answers: Cos'è Red Hat OpenShift?

Formazione

Corso di formazione gratuito

Running Containers with Red Hat Technical Overview

Corso di formazione gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Corso di formazione gratuito

Developing Cloud-Native Applications with Microservices Architectures