2015-03-22 32 views
83

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

Ad esempio, quando è meglio utilizzare Marathon/Chronos di Kubernetes e viceversa?

In questo momento sono principalmente in sperimentazione, ma speriamo di iniziare a utilizzare uno di questi servizi in produzione dopo l'estate. Questo potrebbe squalificare Docker Swarm poiché non sono sicuro che sarà pronto per la produzione.

Quello che mi piace di Docker Swarm è che si tratta essenzialmente di "comandi Docker" e non è necessario imparare qualcosa di completamente nuovo. Stiamo già utilizzando docker-compose e funzionerà immediatamente con Docker Swarm (almeno in teoria), quindi sarebbe un grande vantaggio. La mia preoccupazione principale per Docker Swarm è se coprirà tutti i casi di utilizzo necessari per l'esecuzione di un sistema in produzione.

risposta

151

Proverò a suddividere gli aspetti univoci di ogni framework di orchestrazione di container su Mesos.

Uso Docker Swarm se:

Uso Kubernetes-Mesos se:

  • si vuole lanciare K8S baccelli, che sono gruppi di contenitori co-programmata e co-locati insieme, la condivisione delle risorse.
  • Si desidera avviare un servizio accanto a uno o più contenitori sidekick (ad es. Archiviatore di registro, monitor di metriche) che vivono accanto al contenitore principale.
  • Si desidera utilizzare il servizio di rilevamento, bilanciamento del carico e replica basato su etichetta K8s.
  • Vedi http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Uso Marathon se:

  • si vuole lanciare Docker o-Docker non a lungo in esecuzione applicazioni/servizi.
  • Si desidera utilizzare gli attributi Mesos per la pianificazione basata sui vincoli.
  • Si desidera utilizzare i gruppi di applicazioni e le dipendenze per avviare, ridimensionare o aggiornare i servizi correlati.
  • Si desidera utilizzare i controlli integrità per riavviare automaticamente i servizi non sani o eseguire il rollback di implementazioni/aggiornamenti non funzionanti.
  • Si desidera integrare HAProxy o Consul per l'individuazione dei servizi.
  • Si desidera avviare e monitorare le app tramite un'interfaccia utente Web o API REST.
  • Si desidera utilizzare un framework costruito dall'inizio con Mesos in mente.

Uso Chronos se:

  • si desidera avviare le attività Docker o non Docker che ci si aspetta per uscire.
  • Si desidera pianificare un'attività da eseguire in un orario/pianificazione specifici (a la cron).
  • Si desidera pianificare un flusso di lavoro DAG di attività dipendenti.
  • Si desidera avviare e monitorare i lavori tramite un'interfaccia utente Web o API REST.
  • Si desidera utilizzare un framework costruito dall'inizio con Mesos in mente.
+1

Volevo solo aggiungere che a partire dal K8S 1,6 al supporta i seguenti (alcune delle quali per lungo tempo): * Docker-CRI (beta) e cri-o, frakti, RKT (alpha) per contenitori non Docker. * Lo stato di integrità controlla quando un container è stato avviato/non risponde più. * Ricreazione di cialde non salutari. * Cron come i lavori, sia ricorrenti che una volta. * Lavori batch (avviati manualmente e eseguiti fino al completamento una volta). Poiché [Mesosphere stessi] (https://mesosphere.com/blog/2015/09/25/kubernetes-and-the-dcos/) dice che K8s è un cittadino di prima classe su Mesos l'argomento "costruito dall'inizio" si sente un po 'peggio pure ... –

12

Anche se è un po 'obsoleto, potrebbe essere utile leggere What's the difference between Apache's Mesos and Google's Kubernetes, per ottenere alcune delle nozioni di base giuste. Inoltre, si noti che Mesos opera su un livello diverso rispetto a Kubernetes/Marathon/Chronos. Ultimo ma non meno importante, vedi Docker Swarm + Mesos di Timothy Chen, tenendo presente che Marathon e Swarm possono operare simultaneamente sullo stesso cluster Mesos.

Problemi correlati