Container, Docker e Kubernetes – Introduzione (3)
Per ambienti dove sono presenti cluster medio-grandi che eseguono applicazioni più complesse, lo strumento più utilizzato per l’orchestrazione è Kubernetes (K8S).
Kubernetes: è un progetto open source di Google, consigliato per la gestione di cluster di medie e grandi dimensioni e di applicazioni complesse; anche se molti paragonano K8S a Docker Swarm (entrambi effettuano l’orchestrator di Docker container), in realtà K8S è una soluzione più estesa e personalizzabile che consente di coordinare cluster di nodi su larga scala in produzione in modo più efficiente.
Grazie a K8S possiamo:
- Eseguire containers su molte macchine eterogenee;
- Aumentare o ridurre la scala modificando proporzionalmente (aggiungendo o anche rimuovendo) i containers (maggiore domanda implica deploy di maggiori containers e viceversa);
- Mantenere l’archiviazione coerente con più istanze di un’applicazione;
- Ripartire il carico tra containers;
- Avviare nuovi contenitori su macchine diverse se qualcosa dovesse fallire.
Sfruttando questa nuova tecnologia, Google cerca di ricoprire tutte le esigenze nell’ambito della contenierizzazione, permettendo di:
- usare diversi cluster di cloud server gestiti per eseguire dozzine di container tramite il servizio Google Container Engine (un container-as-a-service ospitato direttamente sulla Google Cloud Platform)
- costruire da sé i propri cluster, sia su un’infrastruttura pubblica che privata, attraverso Kubernetes,
- eseguire i container in un contesto pubblico gestito attraverso Google App Engine.
Se volessimo effettuare una comparazione tra Docker e Kubernetes, potremmo dire che:
Kubernetes | Docker Swarm |
---|---|
Sviluppato da Google | Sviluppato da Docker |
numerosa community Open Source | community open source meno numerosa rispetto a Kubernetes |
Facilmente scalabile e personalizzabile | Difficile effettuare customizzazioni |
startup/setup complesso | Facilità d'uso e bene integrato nell’ecosistema Docker |
fault tolerance elevato (pensato per datacenter) | fault tolerance adeguato |
Pensato per la gestione di cluster di grandi dimensioni e di applicazioni complesse | Utilizzato in ambienti in cui si predilige la semplicità e la velocità di sviluppo |
Abilita il bilanciamento del carico di lavoro quando i pod di container sono definiti “as a service”. | Bilanciamento automatico del carico interno tramite qualsiasi nodo nel cluster. |
In realtà, Kubernetes può integrarsi con il motore Docker per coordinare la pianificazione e l’esecuzione dei contenitori Docker su Kubelets (vedremo più avanti cosa sono i Kubelets); se utilizzati insieme, sia Docker che Kubernetes sono ottimi strumenti per lo sviluppo di una moderna architettura cloud, ma sono fondamentalmente diversi nel loro nucleo. È importante comprendere le differenze di alto livello tra le tecnologie durante la creazione dello stack.
← Container, Docker e Kubernetes – Introduzione (2)
Kubernetes (1) →