Vai al paragrafo

Elementi fondamentali di Kubernetes

Copia URL

L'orchestrazione dei container è la gestione dei deployment in un ambiente enterprise. Grazie all'adozione dei container, gli sviluppatori possono dedicarsi alle app mentre il team operativo può concentrarsi sull'infrastruttura.

Kubernetes è una piattaforma di orchestrazione open source basata su container che consente di automatizzare molti dei processi manuali necessari per il deployment, la gestione e la scalabilità delle applicazioni containerizzate.

Kubernetes consente di gestire e distribuire su vasta scala applicazioni containerizzate, legacy e app cloud native, così come quelle convertite in microservizi, fra ambienti diversi quali cloud privati e i principali provider di cloud pubblico, come Amazon Web Services (AWS), Google Cloud, IBM Cloud e Microsoft Azure.

Scheda tecnica

Red Hat® OpenShift® Container Platform è una piattaforma cloud ibrida fondata su tecnologie container e su Kubernetes. Scopri tutti i vantaggi nella scheda tecnica.

Utilizzando Kubernetes potrai usufruire di una piattaforma per programmare ed eseguire i container su cluster di macchine fisiche o macchine virtuali (VM)macchine virtuali (VM). L'architettura Kubernetes separa un cluster in componenti che, operando in sinergia, conservano lo stato previsto del cluster.

Cosa sono i cluster Kubernetes?

Un cluster Kubernetes è un gruppo di sistemi nodo che serve a eseguire applicazioni containerizzate 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.

L'API Kubernetes costituisce il front end del piano di controllo di Kubernetes e consente agli utenti di interagire con i cluster Kubernetes. Il server API stabilisce se una richiesta è valida e quindi procede alla sua elaborazione.

L'API Kubernetes è l'interfaccia utilizzata per gestire, creare e configurare i cluster Kubernetes, ovvero il modo con cui utenti, componenti esterni e parti del cluster comunicano tra loro.

In questo breve tutorial su Kubernetes viene illustrato come creare un cluster ed eseguire il deployment di un'applicazione. 

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

Pod:
gruppo di uno o più container distribuiti su un singolo nodo. Il pod è l'oggetto Kubernetes più piccolo e semplice.

Servizio:
metodo per esporre un'applicazione eseguita in un set di pod come servizio di rete. Consente di disaccoppiare le definizioni del lavoro dai pod.

Kubectl:
interfaccia della riga di comando che consente di gestire il cluster Kubernetes. Scopri le nozioni di base sui comandi kubectl e Helm per i principianti.

kubelet:
piccola applicazione installata in ciascun nodo, che comunica con il piano di controllo e verifica che i container vengano eseguiti in un pod.

Se vuoi sperimentare Kubernetes, Minikube è uno strumento open source che consente di configurare un cluster Kubernetes locale per provare a utilizzare Kubernetes da un portatile.

 Il funzionamento di Kubernetes si basa sullo stato definito e sullo stato effettivo. Gli oggetti Kubernetes rappresentano lo stato di un cluster e indicano a Kubernetes lo stato desiderato del tuo carico di lavoro.

Dopo aver creato e definito un oggetto, Kubernetes si assicura che tale oggetto continui ad esistere. 

I controller gestiscono attivamente lo stato degli oggetti Kubernetes ed eseguono le operazioni necessarie per portare il cluster dallo stato attuale alla condizione target. 

Gli sviluppatori e gli amministratori di sistema specificano lo stato definito inviando alcuni file YAML o JSON all'API Kubernetes. Kubernetes utilizza un controller per analizzare la differenza fra il nuovo stato definito e lo stato effettivo nel cluster.

Lo stato desiderato di un cluster Kubernetes determina le applicazioni o i carichi di lavoro da eseguire, le immagini container che utilizzano, le risorse a cui devono avere accesso e le altre informazioni di configurazione.

I dati e le informazioni di configurazione relativi allo stato del cluster si trovano in un etcd, ovvero un database contenente coppie chiave-valore. A tolleranza di errore e distribuito, un etcd è progettato per essere l'unica sorgente di dati del cluster.

Kubernetes gestisce il cluster automaticamente, in modo da ottenere lo stato desiderato. A tale scopo, i controller solitamente inviano al server API messaggi che determinano l'esecuzione delle modifiche necessarie e alcune risorse Kubernetes includono controller integrati.

Per comprendere come Kubernetes gestisce lo stato desiderato, immagina di dover distribuire un'applicazione con lo stato desiderato di "3", ovvero devono essere eseguite 3 repliche dell'applicazione.

In caso di arresto anomalo di 1 di questi container, il set di repliche Kubernetes rileva che sono in esecuzione solo 2 repliche, e ne aggiunge 1 per ottenere lo stato desiderato.

I set di repliche sono un tipo di controller con lo scopo di garantire che, in un determinato momento, sia in esecuzione un numero di pod specificato.

I deployment Kubernetes costituiscono il metodo ottimale per gestire i set di repliche e consentono di aggiornare i pod in modo dichiarativo, eliminando l'esigenza di gestirli manualmente. 

Puoi anche sfruttare la scalabilità automatica di Kubernetes per gestire la scalabilità dei tuoi servizi in base alle richieste degli utenti. Quando specifichi lo stato desiderato di un'applicazione o servizio, puoi anche richiedere al controller di mettere a disposizione ulteriori pod in caso di incremento della domanda.

Ad esempio, nei periodi più intensi la condizione target potrebbe passare dalle tre repliche abituali a dieci.

Un deployment Kubernetes è un oggetto risorsa di Kubernetes che fornisce aggiornamenti dichiarativi alle applicazioni.

Un deployment consente di descrivere il ciclo di vita dell'applicazione, specificando ad esempio le immagini da utilizzare, il numero di pod necessari e le modalità di aggiornamento relative. 

L'aggiornamento manuale delle applicazioni containerizzate è lungo e noioso, ma con un deployment Kubernetes può diventare automatico e ripetibile. 

Interamente gestiti dal backend Kubernetes, i deployment eseguono il processo di aggiornamento sul lato server, senza interagire con il client.

Un oggetto deployment Kubernetes consente di:

  • Eseguire il deployment di un set di repliche o pod
  • Aggiornare i pod e i set di repliche
  • Ripristinare versioni precedenti del deployment
  • Rendere scalabile il deployment
  • Sospendere o continuare un deployment

I modelli Kubernetes sono modelli di progettazione per applicazioni e servizi containerizzati.  

Kubernetes aiuta gli sviluppatori a scrivere applicazioni cloud native e offre una libreria di interfacce di programmazione delle applicazioni (API) e strumenti per la creazione di applicazioni. 

Non fornisce, tuttavia, a sviluppatori e architetti le linee guida su come usare questi strumenti per realizzare un sistema completo in grado di soddisfare le esigenze e gli obiettivi aziendali. 

I modelli servono a riutilizzare le architetture. Anziché creare un'architettura completamente nuova puoi sfruttare i modelli Kubernetes esistenti, che ti garantiscono anche il funzionamento corretto del sistema.

I modelli, che sono strumenti indispensabili per gli sviluppatori Kubernetes, ti mostrano come creare un sistema.

 Un operatore Kubernetes è un metodo che consente di creare il pacchetto di un'applicazione Kubernetes, eseguirne il deployment e gestirla. Per le attività di deployment e gestione di un'applicazione Kubernetes, si utilizzano l'API Kubernetes e lo strumento kubectl.

Un operatore Kubernetes è un controller specifico dell'applicazione, che estende le funzionalità dell'API Kubernetes consentendo di creare, configurare e gestire le istanze di applicazioni complesse per conto di un utente di Kubernetes.

Scopri come creare un operatore Kubernetes in 10 minuti tramite Operator SDK.

Partendo dai concetti di base delle risorse e dei controller Kubernetes, integra conoscenze specifiche relative all'applicazione o al dominio per automatizzare l'intero ciclo di vita del software che gestisce.

Per ulteriori informazioni sugli operatori Kubernetes e sulla relativa importanza, qui puoi trovare una spiegazione in termini comprensibili a tutti. 

Gli operatori consentono di scrivere il codice per l'automazione di un'attività, andando oltre le funzioni di automazione di base presenti in Kubernetes. Per i team che hanno adottato una metodologia DevOps o SRE (Site Reliability Engineering), sono disponibili operatori specifici per integrare i processi SRE in Kubernetes. 

Scopri di più sul funzionamento degli operatori Kubernetes. Impara a crearli con l'apposito framework e con gli SDK (Software Development Kit), basandoti sugli esempi concreti.

Deployment di app containerizzate con Docker, Kubernetes e Red Hat OpenShift Container Platform

Questa serie on demand di lezioni brevi e dimostrazioni approfondite fornisce un'introduzione ai container Linux e alla tecnologia di orchestrazione dei container tramite l'utilizzo di Docker, Kubernetes e di Red Hat® OpenShift® Container Platform.

Red Hat OpenShift Administration 

In questo corso viene illustrato come installare e gestire Red Hat OpenShift Container Platform. Si tratta di un corso pratico, basato su esercitazioni, in cui viene illustrato come installare, configurare e gestire cluster OpenShift e come distribuire applicazioni di esempio per comprendere meglio i possibili utilizzi della piattaforma da parte degli sviluppatori.

Questo è un corso rivolto agli sviluppatori, che fornisce un'introduzione alla creazione, al deployment, alla scalabilità e alla risoluzione dei problemi delle applicazioni Red Hat OpenShift. Considerata la crescente diffusione di OpenShift e Kubernetes, oggi gli sviluppatori avvertono più che mai l'esigenza di imparare a sviluppare, realizzare ed eseguire il deployment di applicazioni tramite una piattaforma applicativa containerizzata.

Red Hat OpenShift è 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 permette agli sviluppatori di creare nuove app containerizzate, ospitarle e distribuirle nel cloud con i livelli di scalabilità, controllo e orchestrazione necessari per trasformare una buona idea in una nuova 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

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