Panoramica
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.
Cos'è un cluster 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.
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.
Kubernetes e Docker
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®.
Perché usare Kubernetes?
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.
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 con Red Hat
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.
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.