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 nel loro stile di vita, grazie ai seguenti strumenti:
- 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 da nodi del piano di controllo, che controllano il cluster. Il piano di controllo ha funzione di 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 runtime 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 fornitura 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 col supporto della Linux Foundation. Da allora Kubernetes è diventato lo strumento di orchestrazione dei container più utilizzato in tutto il mondo per eseguire workload basati su container. In un report CNCF9, Kubernetes è il secondo progetto open-source più grande del mondo (dopo Linux) e lo strumento primario di orchestrazione dei container per il 71% delle aziende Fortune 100.