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.
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.
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:
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:
È 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à.
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:
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à.
Con IBM Cloud Satellite, puoi avviare servizi cloud coerenti ovunque, in ambienti on-premise, sull'edge e in ambienti di cloud pubblico.
Esegui immagini di container, processi batch o codice sorgente come carichi di lavoro serverless - senza necessità di dimensionamento, implementazione, rete o scalabilità.
Una nuova ricerca di IBM documenta il crescente slancio dell'adozione di container e Kubernetes.
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.
Docker è una piattaforma open source per la creazione, l'implementazione e la gestione delle applicazioni containerizzate.