Kubernetes illustration
Jump to section

Cos'è Kubernetes?

Copia URL

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.

Kubernetes semplifica e ottimizza la gestione dei cluster formati dai gruppi di host che eseguono i container Linux®.

I cluster Kubernetes possono comprendere host on premise, in cloud pubblici, privati o ibridi. Ecco perché Kubernetes è la piattaforma ideale per l'hosting di applicazioni cloud native che richiedono scalabilità rapida, come lo streaming di dati in tempo reale tramite Apache Kafka.

Kubernetes fu inizialmente progettato e sviluppato dagli ingegneri di Google. Google è stata i primi a dare il proprio contributo alla tecnologia dei container Linux e ha anche dichiarato pubblicamente che in azienda tutto viene eseguito nei container (infatti è la tecnologia su cui si basano i servizi cloud di Google).

Google esegue oltre due miliardi di deployment di container alla settimana tramite la sua piattaforma interna chiamata Borg. Questa piattaforma può essere considerata il predecessore di Kubernetes poiché tutta l'esperienza maturata negli anni durante il suo sviluppo ha poi influenzato in maniera significativa lo sviluppo della tecnologia Kubernetes.

Curiosità: i sette raggi del logo di Kubernetes fanno riferimento al nome originale del progetto: "Project Seven of Nine".

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. Nel 2015 Google ha ceduto il controllo del progetto Kubernetes alla neonata Cloud Native Computing Foundation (CNCF).

Pensi di adottare Kubernetes in futuro? Inizia da qui.

Utilizzando Kubernetes nel tuo ambiente, soprattutto se desideri ottimizzare lo sviluppo applicativo per il cloud, potrai usufruire di una piattaforma per programmare ed eseguire i container su cluster di macchine fisiche o virtuali.

Più in generale, Kubernetes garantisce l'affidabilità necessaria ad adottare un'infrastruttura containerizzata negli ambienti di produzione. E, dal momento che il fulcro di questa tecnologia è l'automazione delle attività operative, offre le stesse funzioni delle altre piattaforme applicative e degli altri sistemi di gestione, ma per i container.

Grazie ai modelli Kubernetes, gli sviluppatori possono creare applicazioni cloud native usando Kubernetes come piattaforma di runtime. I modelli sono gli strumenti che gli sviluppatori Kubernetes utilizzano per creare servizi e applicazioni containerizzati.

Kubernetes permette di:

  • Orchestrare i container su più host.
  • Sfruttare al meglio i componenti hardware in modo da massimizzare le risorse necessarie all'esecuzione delle app di livello enterprise.
  • Controllare e automatizzare gli aggiornamenti e i deployment delle applicazioni.
  • Montare e aggiungere storage per l'esecuzione di applicazioni stateful.
  • Ottenere la scalabilità immediata delle applicazioni containerizzate e delle relative risorse.
  • Gestire i servizi in modo dichiarativo per garantire che le applicazioni distribuite funzionino sempre che previsto.
  • Controllare l'integrità e correggere automaticamente le applicazioni grazie alle funzioni automatiche di posizionamento, riavvio, replica e scalabilità.

In realtà, per fornire tutti questi servizi orchestrati Kubernetes si appoggia ad altri progetti. Questo significa che per sfruttare appieno il potenziale della tecnologia Kubernetes, occorre integrarla con altri progetti open source complementari. Di seguito un elenco degli elementi essenziali a titolo esemplificativo e non esaustivo:

  • Registro: progetti come Docker Registry.
  • Reti: progetti come OpenvSwitch e il routing edge intelligente.
  • Telemetria: progetti come Kibana, Hawkular ed Elastic.
  • Sicurezza: progetti come LDAP, SELinux, RBAC e OAuth con livelli multitenancy.
  • Automazione: Ansible Playbook per l'installazione e la gestione del ciclo di vita dei cluster.
  • Servizi: un ricco catalogo dei modelli di app più diffusi.

Scopri di più sui container Linux e sulla tecnologia di orchestrazione dei container. 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®.

Come con la maggior parte delle tecnologie anche nel caso di Kubernetes la terminologia specifica può costituire un ostacolo. Definiamo quindi alcuni dei termini chiave per aiutare i neofiti a comprendere meglio la piattaforma.

Piano di controllo: insieme dei processi che controllano i nodi Kubernetes. È il punto di origine di tutte le attività assegnate.

Nodi: macchine che eseguono le attività richieste assegnate dal piano di controllo.

Pod: un gruppo di uno o più container distribuiti su un singolo nodo. Tutti i container presenti in un pod condividono indirizzo IP, IPC, nome host e altre risorse. I pod consentono di astrarre la rete e lo storage dal container sottostante e di spostare i container nei cluster con maggiore facilità.

Controller di replica: controlla il numero di copie identiche di un pod che devono essere eseguite in un punto preciso sul cluster.

Servizio: disaccoppia le definizioni del lavoro dai pod. I proxy di servizio Kubernetes fanno pervenire in modo automatico le richieste di servizio al pod giusto, anche se questo è stato dislocato altrove nel cluster o sostituito.

Kubelet: questo servizio eseguito sui nodi legge i manifesti del container e garantisce l'avvio e l'esecuzione dei container definiti.

kubectl: lo strumento di configurazione a riga di comando di Kubernetes.

Kubernetes Cluster diagram

Un deployment Kubernetes funzionante è chiamato cluster, e possiamo immaginarlo suddiviso in due parti: il piano di controllo e i sistemi di elaborazione, o nodi.

Ogni nodo è un ambiente Linux® autonomo, che può essere una macchina fisica o 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.

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

Il piano di controllo Kubernetes 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à, quindi alloca le risorse e assegna i pod di quel nodo per completare il lavoro richiesto.

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.

Dal punto di vista dell'infrastruttura, la gestione dei container subisce pochi cambiamenti: il controllo dei container avviene a un livello superiore, il che offre maggiore controllo senza bisogno di gestire singolarmente ciascun nodo o container.

Il lavoro dell'utente si limita alla configurazione di Kubernetes e alla definizione di nodi, pod e dei container. È poi Kubernetes a occuparsi dell'orchestrazione dei 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.

 

Il ruolo di Docker

Docker si può utilizzare come runtime del container orchestrato da Kubernetes. Quando Kubernetes assegna un pod a un nodo, il kubelet 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.

Oggi la maggior parte dei deployment Kubernetes on premise viene eseguita nell'infrastruttura virtuale esistente, con un numero sempre maggiore di deployment su server bare metal. Si tratta di un'evoluzione naturale nei data center. Kubernetes funge da strumento per la gestione del deployment e del ciclo di vita per le applicazioni containerizzate e si utilizzano strumenti separati per la gestione delle risorse dell'infrastruttura. 

 

E se progettassi il data center da zero per il supporto dei container, incluso il livello infrastrutturale?

Partiresti direttamente dai server bare metal e dallo storage software defined, distribuiti e gestiti da Kubernetes per offrire all'infrastruttura gli stessi vantaggi di installazione, scalabilità e correzione automatiche dei container. Questa è la visione alla base dell'infrastruttura Kubernetes native.

Quali sono i vantaggi dell'infrastruttura Kubernetes native?

Icon-Red_Hat-Cloud-Standard-A-Black-RGB

Semplicità e agilità del cloud pubblico on premise per ridurre gli attriti tra sviluppatori e team operativi

Icon-Red_Hat-Money-A-Black-RGB

Riduzione dei costi perché non è più necessario un hypervisor separato per l'esecuzione delle macchine virtuali

Icon-Red_Hat-Diagrams-Scale_Growing-A-Black-RGB

Flessibilità per permettere agli sviluppatori di eseguire il deployment di container, applicazioni serverless e macchine virtuali da Kubernetes, con l'espansione di applicazioni e infrastruttura

Icon-Red_Hat-Hybrid_cloud_infrastructure-Black-A-RGB

Estensibilità del cloud ibrido con Kubernetes come livello comune tra on premise e cloud pubblici

Qual è il contributo di Red Hat all'infrastruttura Kubernetes?

Red Hat OpenShift


Red Hat OpenShift offre funzionalità di automazione completa dello stack con gli operatori Kubernetes, i quali automatizzano l'installazione e la gestione del ciclo di vita dell'infrastruttura non Kubernetes native.


Red Hat OpenShift Data Foundation


Red Hat OpenShift Data Foundation offre lo storage con provisioning dinamico utilizzando l'operatore di storage Rook per Kubernetes.


Virtualizzazione container native


La virtualizzazione container native di Red Hat OpenShift permette l'utilizzo delle macchine virtuali su Kubernetes e si basa su un progetto upstream della community open source chiamato KubeVirt.


Metal3


Metal3 è un progetto upstream per la totale automatizzazione del deployment e della gestione del ciclo di vita dei server bare metal con 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. 

Guarda questa serie di webinar per conoscere le opinioni degli esperti e determinare la piattaforma dati Kubernetes di livello enterprise più adatta alle tue esigenze per realizzare, eseguire, distribuire e rinnovare le applicazioni.

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 e 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 deve 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.

 

Scenario 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 possono essere necessari anche due mesi, mentre le modifiche a grandi applicazioni monolitiche possono richiedere 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.

Per sviluppare applicazioni moderne occorrono processi diversi da quelli del passato. DevOps rende il passaggio di un'idea dalla fase di sviluppo a quella di deployment più veloce.

In sostanza, DevOps fa affidamento sulle attività di routine automatizzate e sugli ambienti standardizzati del ciclo di vita delle applicazioni. I container supportano un ambiente unificato per lo sviluppo, la distribuzione e l'automazione, oltre a semplificare lo spostamento delle applicazioni fra gli ambienti di sviluppo, test e produzione.

Uno degli esiti principali dell'implementazione di DevOps è la pipeline di integrazione e deployment continui, che consente una maggiore frequenza di distribuzione delle app ai clienti e la convalida della qualità del software con interventi manuali ridotti al minimo.

La gestione del ciclo di vita dei container con Kubernetes, insieme all'approccio DevOps, consentono di allineare lo sviluppo del software e le operazioni IT in modo da supportare una pipeline CI/CD.

Con le piattaforme giuste, sia all'interno che all'esterno del container, puoi trarre il massimo vantaggio dai cambiamenti che hai apportato ai processi e alla cultura aziendali.

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.

Sfruttando la versione di prova gratuita per 60 giorni, puoi provare a utilizzare Red Hat OpenShift per automatizzare le operazioni con i container.

Keep reading

Article

What's a Linux container?

A Linux container is a set of processes isolated from the system, running from a distinct image that provides all the files necessary to support the processes.

Article

Containers vs VMs

Linux containers and virtual machines (VMs) are packaged computing environments that combine various IT components and isolate them from the rest of the system.

Article

What is container orchestration?

Container orchestration automates the deployment, management, scaling, and networking of containers.

Scopri di più sui container

Prodotti

Una piattaforma container enterprise-ready basata su Kubernetes, che consente di automatizzare le operazioni nell'intero stack tecnologico per gestire deployment di cloud ibrido, multicloud e all'edge.

Risorse

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

Illustration - mail

Ricevi contenuti simili

Iscriviti a Red Hat Shares, la nostra newsletter gratuita.