Container, Docker e Kubernetes – Introduzione (3)

Published by Lello on

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:

KubernetesDocker Swarm
Sviluppato da GoogleSviluppato da Docker
numerosa community Open Sourcecommunity open source meno numerosa rispetto a Kubernetes
Facilmente scalabile e personalizzabileDifficile effettuare customizzazioni
startup/setup complessoFacilità 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 complesseUtilizzato 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) →