Accedi / Registrati Account

Container

Elementi fondamentali di Kubernetes

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 applicazioni containerizzate, legacy e cloud native su vasta scala, 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.

 

Architettura di Kubernetes

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

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. 

 

Altri componenti di un cluster Kubernetes

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 hai voglia di sperimentare Kubernetes, Minikube è uno strumento open source che consente di configurare un cluster Kubernetes locale per provare a utilizzare Kubernetes da un portatile.

 

Kubernetes: come funziona 

Il funzionamento di Kubernetes si basa sullo stato definito e lo 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 a quello desiderato. 

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 lo stato desiderato potrebbe passare dalle 3 repliche abituali a 10.

 

Deployment Kubernetes

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

 

Modelli Kubernetes

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

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

Non fornisce tuttavia 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.

 

Operatori Kubernetes 

Un operatore Kubernetes è un metodo che consente di creare il pacchetto di un'applicazione Kubernetes, eseguire il deployment dell'applicazione 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 metodi 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.

 

Supportare DevOps con Kubernetes

DevOps si basa 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, (CI/CD), che consente di aumentare la frequenza di distribuzione delle applicazioni ai clienti e la convalida della qualità del software, riducendo al minimo gli interventi manuali.

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

 

Risorse di formazione su Kubernetes

Deploying Containerized Applications Tech Overview 

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.

 

Introduction to OpenShift Applications

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.

 

Kubernetes per l'ambiente enterprise 

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

Gli strumenti necessari per lavorare con Kubernetes

Red Hat OpenShift product logo

Sviluppa, distribuisci e gestisci i tuoi container in modo scalabile in qualsiasi ambiente, con la versione enterprise di Kubernetes.

Permette di controllare cluster e applicazioni Kubernetes da una singola console utilizzando i criteri di sicurezza integrati. 

Scopri gli altri vantaggi di Kubernetes