Cos'è l'orchestrazione dei container?
L'orchestrazione dei container automatizza e semplifica il provisioning, l'implementazione e la gestione delle applicazioni containerizzate.
Iscriviti alla newsletter di IBM
Sfondo blu e nero
Cos'è l'orchestrazione dei container?

L'orchestrazione dei container automatizza provisioning, implementazione, rete, scalabilità, disponibilità e gestione del ciclo di vita dei container. Oggi Kubernetes è la piattaforma di orchestrazione dei container più ampiamente diffusa e la maggior parte dei provider di cloud pubblico - tra cui AWS (Amazon Web Services), la piattaforma Google Cloud, IBM Cloud e Microsoft Azure - offre servizi Kubernetes gestiti. Altri strumenti di orchestrazione dei container includono Docker Swarm e Apache Mesos.

Maggiori informazioni sui container e perché necessitano di orchestrazione

I container sono componenti applicativi leggeri ed eseguibili che combinano il codice sorgente dell'applicazione con tutte le librerie del sistema operativo e le dipendenze necessarie per eseguire il codice in qualsiasi ambiente. 

La capacità di creare container esiste da decenni, ma è diventata ampiamente disponibile nel 2008 quando Linux ha incluso nel proprio kernel la funzione container, e ampiamente utilizzata con l'arrivo della piattaforma di containerizzazione open-source Docker nel 2013. (Docker è così diffuso che "container Docker " e "container" sono termini spesso usati come sinonimi). 

Dato che sono più piccoli, più efficienti in termini di risorse e più portabili rispetto alle VM, i container - e più precisamente i microservizi containerizzati o le funzioni serverless - sono diventati di fatto le unità di calcolo delle moderne applicazioni native del cloud. (Per ulteriori informazioni sui vantaggi dei container, vedi la visualizzazione interattiva dei dati riportata di seguito)

In piccole quantità, i container sono abbastanza facili da implementare e gestire manualmente. Nella maggior parte delle organizzazioni, però, il numero di applicazioni containerizzate sta crescendo rapidamente e gestirle su larga scala - soprattutto nell'ambito di un'integrazione continua / fornitura continua (CI/CD) o di una pipeline DevOps - è impossibile senza automazione.

L'orchestrazione dei container automatizza le operazioni di implementazione ed esecuzione di applicazioni e servizi containerizzati. Secondo una recente ricerca IBM,  (PDF, 1,4MB), il 70% degli sviluppatori che utilizzano container dichiara di usare una soluzione di orchestrazione dei container e il 70% di questi dichiara di usare un servizio di orchestrazione dei container completamente gestito (gestito in cloud) nella propria organizzazione.

Scarica il report completo: Containers in the enterprise (1,4 MB)
Come funziona l'orchestrazione dei container

Sebbene ci siano differenze nelle metodologie e nelle capacità fra strumenti, l'orchestrazione dei container è essenzialmente un processo in tre fasi (o ciclo, quando è parte di una pipeline Agile o DevOps). 

La maggior parte degli strumenti di orchestrazione dei container supporta un modello di configurazione dichiarativo: uno sviluppatore scrive un file di configurazione (in YAML o JSON a seconda dello strumento) che definisce uno stato di configurazione desiderato e lo strumento di orchestrazione esegue il file utilizzando l'intelligenza di cui dispone per ottenere quello stato. Il file di configurazione di norma:

  • Definisce quali immagini del container costituiscono l'applicazione e dove si trovano (in quale registro)

  • Esegue il provisioning dei container con storage e altre risorse

  • Definisce e protegge le connessioni di rete tra i container

  • Specifica il controllo versioni (per rollout a fasi o canary)

Lo strumento di orchestrazione programma l'implementazione dei container (e delle repliche dei container, per la resilienza) su un host, scegliendo il migliore host in base alla capacità della CPU disponibile, della memoria o di altri requisiti o vincoli specificati nel file di configurazione. 

Una volta che i container sono implementati, lo strumento di orchestrazione gestisce il ciclo di vita dell'applicazione containerizzata in base al file delle definizioni del container (molto spesso un Dockerfile). Questo include: 

  • Gestione della scalabilità (incrementale e decrementale), bilanciamento del carico e allocazione delle risorse tra i container

  • Garanzia della disponibilità e delle prestazioni spostando i container su un altro host nel caso di un'interruzione o di una carenza di risorse del sistema

  • Raccolta e archiviazione dei dati di log e di altre telemetrie utilizzati per monitorare lo stato di integrità e le prestazioni dell'applicazione.

Vantaggi dell'orchestrazione dei container


È probabilmente chiaro che il principale vantaggio dell'orchestrazione dei container è l'automazione - e non solo perché riduce notevolmente lo sforzo e la complessità di gestire un ampio patrimonio di applicazioni containerizzate.  Automatizzando le operazioni, l'orchestrazione supporta un approccio Agile o DevOps che consente ai team di sviluppare e implementare in cicli rapidi e iterativi e di rilasciare più velocemente nuove funzioni e funzionalità.

In aggiunta, l'intelligenza di uno strumento di orchestrazione può migliorare o estendere molti dei vantaggi intrinseci della containerizzazione. Ad esempio, l'automazione della selezione dell'host e dell'allocazione delle risorse, basata sulla configurazione dichiarativa aumenta al massimo l'uso efficiente delle risorse di calcolo; il monitoraggio dello stato di integrità e la riassegnazione dei container aumentano al massimo la disponibilità.

Kubernetes

Come abbiamo osservato, Kubernetes è la più diffusa piattaforma di orchestrazione dei container. Insieme ad altri strumenti nell'ecosistema dei container, Kubernetes consente a un'azienda di fornire una PaaS (platform-as-a-service) altamente produttiva che affronta molti dei compiti e dei problemi relativi alle infrastrutture e alle operazioni nello sviluppo di applicazioni native del cloud, in modo che i team di sviluppo possano concentrarsi esclusivamente su codifica e innovazione.

I vantaggi di Kubernetes rispetto ad altre soluzioni di orchestrazione sono in gran parte un risultato della sua funzione più completa e sofisticata in diversi settori, tra cui:

  • Implementazione dei container. Kubernetes implementa un numero definito di container su un host specifico e li mantiene in esecuzione in uno stato desiderato.

  • Rollout. Un rollout è una modifica a un'implementazione. Kubernetes consente di iniziare, sospendere, riprendere o eseguire il ripristino dello stato precedente dei rollout.

  • Rilevamento dei servizi. Kubernetes può automaticamente esporre un container su Internet o su altri container utilizzando un nome DNS o un indirizzo IP.

  • Provisioning dello storage. Gli sviluppatori possono impostare Kubernetes in modo da fornire storage permanente, locale o in cloud, ai tuoi container, in base alle necessità.

  • Bilanciamento del carico di lavoro e scalabilità. In caso di picco di traffico su un container, Kubernetes può eseguire il bilanciamento del carico ed eseguire la scalabilità per distribuire il traffico nella rete, in modo da assicurare stabilità e prestazioni. (Inoltre evita agli sviluppatori il lavoro di impostare un programma di bilanciamento del carico).

  • Correzione automatica per l'alta disponibilità. Quando un container non funziona, Kubernetes lo può riavviare o sostituire automaticamente. Può anche disattivare i container che non soddisfano i tuoi requisiti di controllo dello stato di integrità.

     
  • Supporto e portabilità su più provider di servizi cloud. Come osservato in precedenza, Kubernetes si avvale di un ampio supporto offerto da tutti i principali provider di servizi cloud. Questo è particolarmente importante per le organizzazioni che implementano applicazioni in un ambiente cloud ibrido o multicloud ibrido.

  • Un crescente ecosistema di strumenti open source. Kubernetes dispone inoltre di un parco strumenti di usabilità e rete in continua espansione per migliorare le proprie funzionalità attraverso l'API di Kubernetes. Questi includono Knative, che consente l'esecuzione dei container come carichi di lavoro serverless, e Istio, una mesh dei servizi open source. 

Scopri di più su Kubernetes

Soluzioni correlate
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud si avvale di OpenShift in ambienti pubblici e ibridi per una maggiore velocità, reattività al mercato, scalabilità e affidabilità.

Esplora Red Hat OpenShift su IBM Cloud
IBM Cloud Satellite

Con IBM Cloud Satellite, puoi avviare servizi cloud coerenti ovunque, in ambienti on-premise, sull'edge e in ambienti di cloud pubblico.

Esplora IBM Cloud Satellite
IBM Cloud Code Engine

Esegui immagini di container, processi batch o codice sorgente come carichi di lavoro serverless - senza necessità di dimensionamento, implementazione, rete o scalabilità.

Esplora IBM Cloud Code Engine
Risorse Ricerca sui container nell'azienda

Una nuova ricerca di IBM documenta il crescente slancio dell'adozione di container e Kubernetes.

Combina le migliori caratteristiche del cloud e dell'IT tradizionale

L'orchestrazione del container è un componente chiave di una strategia di cloud ibrido che ti consente di creare e gestire carichi di lavoro da qualsiasi ubicazione.

Cos'è Docker?

Docker è una piattaforma open source per la creazione, l'implementazione e la gestione delle applicazioni containerizzate.

Passa alla fase successiva

Red Hat OpenShift on IBM Cloud offre agli sviluppatori un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes.Delega attività noiose e ripetitive che coinvolgono la gestione della sicurezza, la gestione della conformità, la gestione dell'implementazione e la gestione continua del ciclo di vita.Poiché IBM gestisce OCP (OpenShift Container Platform), avrai più tempo per concentrarti sulle tue attività principali.

Esplora Red Hat OpenShift su IBM Cloud