La gestione di centinaia di migliaia di container in un sistema può diventare ingestibile e richiede una soluzione di gestione dell'orchestrazione.
È qui che entra in gioco l'orchestrazione dei container, che consente alle aziende di gestire grandi volumi durante tutto il loro ciclo di vita, offrendo:
- Provisioning
- Ridondanza
- Monitoraggio dello stato di salute
- assegnazione delle risorse
- Scalabilità e bilanciamento del carico
- Spostamento tra host fisici
Anche se esistono altre piattaforme di orchestrazione dei container (ad esempio Apache Mesos, Nomad, Docker Swarm), Kubernetes è diventato lo standard del settore.
L'architettura Kubernetes è costituita da cluster in esecuzione che consentono l'esecuzione di container su più computer e ambienti. Ogni cluster è in genere costituito da nodi di lavoro, che eseguono le applicazioni containerizzate, e danodi del piano di controllo, che controllano il cluster. Il control plane agisce come l'orchestratore del cluster Kubernetes. Include diversi componenti: il server API (gestisce tutte le interazioni con Kubernetes), il control manager (gestisce tutti i processi di controllo), il cloud controller manager (l'interfaccia con l'API del provider di cloud) e così via. I nodi di lavoro eseguono i container utilizzando i tempi di esecuzione dei container come Docker. I pod, le unità implementabili più piccole in un cluster, contengono uno o più container di app e condividono risorse, ad esempio informazioni di storage e rete.
Kubernetes consente agli sviluppatori e agli operatori di dichiarare lo stato desiderato del proprio ambiente container complessivo attraverso file YAML. Kubernetes svolge quindi tutto il lavoro di elaborazione per stabilire e mantenere quello stato, con attività che includono l'implementazione di un determinato numero di istanze di una determinata applicazione o workload, il riavvio dell'applicazione in caso di mancato funzionamento, il bilanciamento del carico, l'autoscaling, le implementazioni dei tempi di inattività azzerati e altro ancora. Anche l'orchestrazione dei container con Kubernetes è fondamentale per l'integrazione costante e la consegna costante (CI/CD) o la pipeline DevOps, che sarebbe impossibile senza l'automazione.
Nel 2015, Google ha donato Kubernetes alla Cloud Native Computing Foundation (CNCF)8, l'hub open source e vendor-neutral del cloud-native computing gestito con il supporto della Linux Foundation. Da allora Kubernetes è diventato lo strumento di orchestrazione dei container più usato in tutto il mondo per eseguire workload basati su container. In un report CNCF9, Kubernetes risulta il secondo progetto open-source più grande al mondo dopo Linux e lo strumento di orchestrazione dei container primario per il 71% delle aziende Fortune 100.