Cos'è l'orchestrazione di contenitori?

Pubblicato il 22 ottobre 2024
Più razzi verde acqua disposti diagonalmente su uno sfondo verde chiaro, ognuno proietta un'ombra soffusa
By Stephanie Susnjara and Ian Smalley

Definizione dell'orchestrazione dei container

L'orchestrazione dei container prevede, implementa, scala e gestisce automaticamente il ciclo di vita delle applicazioni in container. Gli sviluppatori utilizzano l'orchestrazione dei container per semplificare i workflow Agile o DevOps, fornendo la flessibilità e la velocità necessarie per supportare le moderne infrastrutture di multicloud ibrido.

Attualmente Kubernetes è la piattaforma di orchestrazione dei container più diffusa e la maggior parte dei principali fornitori di servizi cloud, tra cui Amazon Web Services (AWS), Google Cloud Platform, IBM Cloud e Microsoft Azure, offrono Kubernetes service gestiti. Altri strumenti di orchestrazione dei container includono Docker Swarm e Apache Mesos.

Perché i container necessitano di orchestrazione?

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

La possibilità di creare container esiste da decenni, ma è diventata ampiamente disponibile nel 2008 quando Linux® ha incluso le funzioni dei container nel suo kernel. È diventata ancora più essenziale dopo l'arrivo della piattaforma di containerizzazione open source Docker nel 2013. (Docker è così popolare che "container Docker" e "container" vengono spesso utilizzati in modo intercambiabile.) Oggi, i container sono compatibili con molti altri sistemi operativi oltre a Linux, incluso Windows.

Poiché sono più piccoli, più efficienti in termini di risorse e più portabili rispetto alle macchine virtuali (VM), i container e, più specificamente, i microservizi in container o le funzioni serverless sono diventati de facto le unità di calcolo delle moderne applicazioni cloud-native.

 

In piccole quantità, i container sono abbastanza facili da implementare e gestire manualmente. Tuttavia, le applicazioni in container e la necessità di gestirle su larga scala sono ormai presenti ovunque nella maggior parte delle organizzazioni di grandi dimensioni.

Ad esempio, una pipeline di integrazione continua/distribuzione continua (CI/CD)DevOps è impossibile senza l'orchestrazione dei container, che automatizza le attività operative relative all'implementazione e all'esecuzione di applicazioni e servizi in container.

In uno studio di IBM, il 70% degli sviluppatori intervistati utilizza soluzioni di orchestrazione dei container e il 70% di coloro che utilizzano una soluzione dichiara di usare un servizio di orchestrazione dei container completamente gestito (in cloud) nella propria organizzazione.

Come funziona l'orchestrazione dei container?

L'architettura dell'orchestrazione dei container consiste nell'esecuzione di cluster di container su più macchine e ambienti. Ogni cluster è in genere costituito da un gruppo di nodi (chiamati anche istanze del server). I nodi di lavoro eseguono i container utilizzando tempi di esecuzione dei container, come ad esempio Docker. Un gruppo di nodi del piano di controllo ha funzione di orchestrare i cluster. Gli utenti possono gestire e monitorare i workload con strumenti dotati di caratteristiche che dispongono di application programming interface (API) e interfacce utente grafiche (GUI).

Sebbene vi siano differenze nelle metodologie e nelle funzionalità tra piattaforme e strumenti, l'orchestrazione dei container è essenzialmente un processo in tre fasi (o ciclo, quando è parte di una pipeline Agile o DevOps):

  1. Provisioning
  2. Distribuzione
  3. Gestisci il ciclo di vita

1. Provisioning

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 lo stato desiderato. Lo strumento di orchestrazione che esegue il file utilizza la propria intelligence per raggiungere quello stato. Solitamente, il file di configurazione:

  • Definisce quali immagini container compongono l'applicazione e dove si trovano (in quale container registry).
  • Fornisce ai container lo storage e altre risorse.
  • Definisce e protegge le connessioni di rete tra i container.
  • Specifica le versioni (per rollout a fasi o canary).

2. Implementazione

Lo strumento di orchestrazione pianifica l'implementazione dei container (e delle repliche degli stessi per la resilienza) su un host. Sceglie l'host migliore in base alla capacità disponibile dell'unità di elaborazione centrale (CPU), alla memoria o ad altri requisiti o vincoli specificati nel file di configurazione.

3. Gestione del ciclo di vita

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

Le attività di gestione del ciclo di vita includono:

  • Gestione della scalabilità (in aumento e in diminuzione), bilanciamento del carico e allocazione delle risorse tra i container.
  • Aiuta a garantire la disponibilità e le prestazioni spostando i container su un altro host in caso di interruzioni o di carenza di risorse del sistema.
  • Raccolta e memorizzazione dei dati di log e di altre telemetrie che monitorano lo stato di salute e le prestazioni dell'applicazione.

Guarda questo video per vedere più da vicino come funziona l'orchestrazione dei container:

Vantaggi dell'orchestrazione dei contenitori

I principali benefici dell'orchestrazione dei container includono:

  • Automation
  • Resilienza
  • Utilizzo e prestazioni delle risorse migliorati
  • Convenienza
  • Velocità e agilità
  • Maggiore protezione
  • Aumento della produttività

Automazione

Il beneficio principale dell'orchestrazione dei container è l'automazione, che riduce notevolmente le attività manuali e la complessità della gestione di un'elevata quantità di applicazioni in container.

Resilienza

Le soluzioni di orchestrazione dei container migliorano la resilienza riavviando o ridimensionando i container in caso di guasti. Questa funzionalità contribuisce a garantire la disponibilità e a incrementare il tempo di attività delle applicazioni.

Utilizzo e prestazioni delle risorse migliorati

La selezione automatizzata dell'host e l'allocazione delle risorse possono massimizzare l'uso efficiente delle risorse informatiche. Ad esempio, una soluzione di orchestrazione dei container può regolare la memoria e lo storage della CPU in base a un singolo container, il che impedisce l'overprovisioning e migliora le prestazioni complessive.

Convenienza

L'orchestrazione dei container consente di non dover intervenire manualmente, riducendo i costi operativi. Inoltre, i container richiedono meno risorse rispetto alle VM, il che può ridurre le esigenze e i costi generali a livello di infrastruttura IT.

Velocità e agilità

Gli strumenti di orchestrazione dei container aiutano a velocizzare lo sviluppo e l'implementazione delle app, fornendo un supporto critico per i processi cloud-native moderni.

Maggiore protezione

I container migliorano la sicurezza isolando le applicazioni dal sistema host e tra di loro, riducendo le superfici di attacco. Molte piattaforme contengono scansioni automatizzate per rilevare le vulnerabilità e proteggere i registri delle immagini, migliorando quindi la protezione complessiva.

Aumento della produttività

Automatizzando le operazioni, l'orchestrazione dei container supporta un approccio Agile o DevOps. Consente ai team di sviluppare e implementare in cicli rapidi e iterativi e di rilasciare più velocemente nuove caratteristiche e funzionalità.

IBM DevOps

Cos'è DevOps?

Andrea Crawford spiega cos'è DevOps, il suo valore e in che modo le pratiche e gli strumenti DevOps ti aiutano a spostare le tue app nell'intera delivery pipeline, dall'ideazione alla produzione. Guidato dai principali leader di pensiero IBM, il curriculum è progettato con lo scopo di aiutare i leader aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti nell'AI che possono promuovere la crescita.

Vantaggi dell'utilizzo di Kubernetes

Sviluppato da Google e rilasciato nel 2014, Kubernetes è diventato uno dei progetti a più rapida crescita nella storia del software open source. Attualmente, Kubernetes è gestito dalla Cloud Native Computing Foundation (CNCF). Da quando Kubernetes è entrato a far parte del CNCF nel 2016, il numero di collaboratori è cresciuto da 731 a 8.012.1

Insieme ad altri strumenti nell'ecosistema dei container, Kubernetes consente alle aziende di offrire soluzioni Platform as a Service (PaaS) altamente produttive. Questo modello di cloud computing risolve molte attività e problemi relativi all'infrastruttura e alle operazioni, in relazione allo sviluppo di applicazioni cloud-native, affinché i team di sviluppo possano concentrarsi esclusivamente sulla codifica e sull'innovazione.

 

I vantaggi di Kubernetes rispetto ad altre soluzioni di orchestrazione sono in gran parte un risultato delle sue funzioni più complete e sofisticate in diversi settori:

  • Distribuzione dei container
  • Rollout
  • Rilevamento dei servizi
  • Provisioning dello storage
  • Bilanciamento del carico e scalabilità
  • Ingegneria della piattaforma per l'alta disponibilità
  • Supporto e portabilità tra più provider di servizi cloud
  • Ecosistema open source

Implementazione dei container

Kubernetes implementa un numero specifico 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 agli sviluppatori di avviare, sospendere, riprendere o annullare i rollout.

Rilevamento dei servizi

Kubernetes può esporre automaticamente un container a internet o ad altri container, utilizzando un nome Domain Name System (DNS) o un indirizzo IP per scoprire i servizi.

Provisioning dello storage

Gli sviluppatori possono impostare Kubernetes in modo da fornire uno storage permanente, locale o su cloud, ai propri container, in base alle necessità.

Bilanciamento del carico e scalabilità

Quando il traffico verso un container aumenta, Kubernetes può impiegare il bilanciamento del carico e la scalabilità automatica per distribuire il traffico nella rete e contribuire ad assicurare stabilità e prestazioni. Questa funzionalità risparmia anche agli sviluppatori la fatica di impostare un programma di bilanciamento del carico.

Ingegneria della piattaforma 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 requisiti di verifica dello stato di salute di un'organizzazione.

Supporto e portabilità tra più provider di servizi cloud

Kubernetes si avvale di un ampio supporto offerto da tutti i principali provider di servizi cloud. Questa funzionalità è essenziale per le organizzazioni che implementano applicazioni su un hybrid cloud (la combinazione di cloud pubblico, cloud privato e infrastruttura on-premise) o multicloud (l'uso di cloud service di più provider di cloud).

Ecosistema open source

Kubernetes dispone inoltre di una quantità di strumenti di fruibilità e rete in continua espansione per migliorare le proprie funzionalità tramite l'API Kubernetes. Questi includono Knative, che consente l'esecuzione dei container come workload serverless, e Istio, una mesh di servizi open source.

Che cosa sono i Container as a Service (CaaS)?

Container as a Service (CaaS) è un servizio gestito che consente agli sviluppatori di gestire e distribuire applicazioni in container, fornendo alle aziende l'accesso a soluzioni cloud portatili e facilmente scalabili. Nel 2022, il mercato globale CaaS è stato valutato quasi 2 miliardi di dollari.2 I ricercatori prevedono che il mercato avrà un valore di oltre 7 miliardi di dollari entro il 2027, con un CAGR del 30,2% durante tale periodo.

I fornitori di CaaS offrono alle aziende molti benefici, tra cui container, livelli di orchestrazione, gestione dello storage e integrazione con altri servizi. Importanti provider pubblici offrono servizi gestiti di orchestrazione dei container, molti dei quali utilizzano Kubernetes come tecnologia di base.

I principali fornitori di soluzioni CaaS includono:

  • Amazon Elastic Container Service (Amazon ECS) di AWS
  • Google Kubernetes Engine (GKE) di Google Cloud
  • IBM Cloud Kubernetes Service
  • Microsoft Azure Container Instances (ACI)
  • Red Hat OpenShift

Orchestrazione dei container e AI

Le piattaforme di orchestrazione in container come Kubernetes possono automatizzare parti dell'intelligenza artificiale (AI) e dell'apprendimento automatico (ML), come i workflow di manutenzione predittiva (inclusi controlli in tempo reale dello stato di salute e della pianificazione delle risorse).

Il machine learning si basa su modelli linguistici di grandi dimensioni (LLM) per eseguire elaborazione del linguaggio naturale (NLP) di alto livello, come la classificazione del testo, l'analisi del sentiment e la traduzione automatica. L'orchestrazione dei container aiuta a velocizzare l'implementazione di modelli linguistici di grandi dimensioni (LLM) per automatizzare il processo NLP. Inoltre, le organizzazioni utilizzano l'orchestrazione dei container per eseguire e scalare i modelli di AI generativa, ottenendo un elevato livello di disponibilità e tolleranza ai guasti.

Autori

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Soluzioni correlate
IBM Instana Observability

Sfrutta la potenza dell'AI e dell'automazione per risolvere in modo proattivo i problemi in tutto lo stack di applicazioni.

Esplora IBM Instana Observability
Soluzioni DevOps

Utilizza il software e gli strumenti DevOps per creare, implementare e gestire app cloud-native su più dispositivi e ambienti.

Esplora le soluzioni DevOps
Servizi di consulenza cloud

Accelera l'agilità e la crescita della tua azienda. Modernizza costantemente le applicazioni su tutte le tue piattaforme usufruendo dei nostri servizi di consulenza per il cloud.

Esplora i servizi di consulenza cloud
Fasi successive

Dal rilevamento proattivo dei problemi con IBM Instana alle analisi in tempo reale su tutto il tuo stack, puoi mantenere le applicazioni cloud-native in esecuzione in modo affidabile.

  1. Scopri IBM Instana
  2. Esplora le soluzioni DevOps
Note a piè di pagina

1 K Ubernetes Project Journey Report, Cloud Native Computing Foundation, 8 giugno 2023.

2 Containers as a Service Market worth USD 5.6 billion by 2027 - Studio esclusivo di MarketsandMarkets, Cision, 30 novembre 2022.

3 Container as a Service Global Market Report 2023, Yahoo Finance, 1° giugno 2023.