Marathon vs Kubernetes vs Docker Swarm su DC / OS con container Docker


101

Sto cercando alcuni pro e contro se utilizzare Marathon e Chronos, Docker Swarm o Kubernetes quando si eseguono container Docker su DC / OS.

Ad esempio, quando è meglio usare Marathon / Chronos rispetto a Kubernetes e viceversa?

In questo momento sono principalmente interessato a sperimentare, ma spero di iniziare a utilizzare uno di questi servizi in produzione dopo l'estate. Ciò potrebbe squalificare Docker Swarm poiché non sono sicuro che la produzione sarà pronta per allora.

Quello che mi piace di Docker Swarm è che essenzialmente sono solo "comandi Docker" e non devi imparare qualcosa di completamente nuovo. Lo stiamo già utilizzando docker-composee funzionerà immediatamente con Docker Swarm (almeno in teoria), quindi sarebbe un grande vantaggio. La mia preoccupazione principale con Docker Swarm è se coprirà tutti i casi d'uso necessari per eseguire un sistema in produzione.

Risposte:


167

Cercherò di analizzare gli aspetti unici di ogni framework di orchestrazione dei container su Mesos.

Usa Docker Swarm se:

Utilizza Kubernetes-Mesos se:

  • Vuoi avviare K8s Pods, che sono gruppi di contenitori co-programmati e collocati insieme, condividendo risorse.
  • Desideri avviare un servizio insieme a uno o più contenitori sidekick (ad es. Archiviatore di log, monitoraggio metriche) che risiedono accanto al contenitore padre.
  • Si desidera utilizzare il rilevamento dei servizi, il bilanciamento del carico e il controllo della replica basati su etichette K8.
  • Vedi http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Usa Marathon se:

  • Vuoi avviare Docker o app / servizi non Docker a esecuzione prolungata.
  • Si desidera utilizzare gli attributi Mesos per la pianificazione basata su vincoli.
  • Si desidera utilizzare gruppi di applicazioni e dipendenze per avviare, ridimensionare o aggiornare i servizi correlati.
  • Si desidera utilizzare i controlli di integrità per riavviare automaticamente servizi non integri o eseguire il rollback di distribuzioni / aggiornamenti non integri.
  • Desideri integrare HAProxy o Consul per il rilevamento dei servizi.
  • Desideri avviare e monitorare le app tramite un'interfaccia utente Web o un'API REST.
  • Vuoi utilizzare un framework creato dall'inizio con Mesos in mente.

Usa Chronos se:

  • Si desidera avviare Docker o attività non Docker che dovrebbero uscire.
  • Si desidera pianificare l'esecuzione di un'attività in un orario / programma specifico (a la cron).
  • Si desidera pianificare un flusso di lavoro del DAG di attività dipendenti.
  • Si desidera avviare e monitorare i lavori tramite un'interfaccia utente Web o un'API REST.
  • Vuoi utilizzare un framework creato dall'inizio con Mesos in mente.

1
Volevo solo aggiungere che a partire da K8s 1.6 supporta quanto segue (alcuni dei quali per lungo tempo): * Docker-CRI (beta) e cri-o, frakti, rkt (alpha) per contenitori non Docker. * Controlli di integrità per vedere quando un contenitore è stato avviato / non risponde più. * Ricreazione di baccelli malsani. * Lavori simili a Cron, sia ricorrenti che una volta. * Lavori in batch (avviati manualmente e vengono eseguiti fino al completamento una volta). Dal momento che Mesosphere stesso afferma che K8s è un cittadino di prima classe su Mesos, anche l'argomento "costruito dall'inizio" sembra un po 'vago ...
Jonas Schubert Erlandsson

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.