Gli strumenti utilizzati per l'orchestrazione dei container offrono un framework per la gestione delle architetture basate su container e microservizi su larga scala. Numerosi sono gli strumenti disponibili per la gestione del ciclo di vita dei container. Tra i più diffusi ricordiamo Kubernetes, Docker Swarm e Apache Mesos.
Kubernetes è uno strumento open source per l'orchestrazione dei container ideato e sviluppato in origine dagli ingegneri di Google. Nel 2015, Google ha ceduto il controllo del progetto Kubernetes alla Cloud Native Computing Foundation, di recente formazione.
L'orchestrazione di Kubernetes consente di creare servizi applicativi che si estendono su più container, programmare tali container in un cluster, gestirne la scalabilità e l'integrità nel tempo.
Consente di eliminare molti dei processi manuali previsti dal deployment e dalla scalabilità di applicazioni containerizzate, e di gestire con semplicità ed efficienza cluster di host, fisici o macchine virtuali, su cui vengono eseguiti container Linux.
Più in generale, Kubernetes garantisce l'affidabilità necessaria ad adottare un'infrastruttura containerizzata negli ambienti di produzione.
I cluster possono espandersi su più host situati su cloud pubblici, privati o ibridi. Ecco perché Kubernetes è la piattaforma ideale per l'hosting di applicazioni cloud native caratterizzate da un'elevata scalabilità.
Infine, la piattaforma semplifica il bilanciamento e la portabilità dei carichi di lavoro, perché permette di spostare le applicazioni tra diversi ambienti senza doverle riprogettare.
Componenti principali di Kubernetes:
- Cluster: un piano di controllo e uno o più sistemi di elaborazione, o nodi.
- Piano di controllo: raccolta di processi che controllano i nodi Kubernetes. È il punto di origine di tutte le attività assegnate.
- Kubelet: questo servizio viene eseguito sui nodi, legge i manifest del container e garantisce l'avvio e l'esecuzione dei container definiti.
- Pod: un gruppo di uno o più container distribuiti su un singolo nodo. Tutti i container presenti in un pod condividono indirizzo IP, IPC, nome host ed altre risorse.