web-dev-qa-db-fra.com

Marathon vs Kubernetes vs Docker Swarm sur DC / OS avec des conteneurs Docker

Je recherche des avantages et des inconvénients, que ce soit avec Marathon et Chronos, Docker Swarm ou Kubernetes lors de l’exécution de conteneurs Docker sur DC/OS.

Par exemple, quand est-il préférable d'utiliser Marathon/Chronos que Kubernetes et vice versa?

Actuellement, je suis principalement expérimenté, mais j'espère que nous utiliserons l'un de ces services en production après l'été. Cela pourrait disqualifier Docker Swarm car je ne suis pas sûr que sa production soit prête d'ici là.

Ce que j'aime chez Docker Swarm, c’est qu’il s’agit essentiellement de "commandes Docker" et que vous n’avez pas à apprendre quelque chose de complètement nouveau. Nous utilisons déjà docker-compose et ça marchera avec Docker Swarm (du moins en théorie), donc ce serait un gros plus. Mon souci principal avec Docker Swarm est de savoir s'il couvre tous les cas d'utilisation requis pour faire fonctionner un système en production.

98
Johan

Je vais essayer de décomposer les aspects uniques de chaque framework d'orchestration de conteneurs sur Mesos.

Utilisez Docker Swarm si:

Utilisez Kubernetes-Mesos si:

  • Vous souhaitez lancer les pods K8, qui sont des groupes de conteneurs co-planifiés et co-localisés, partageant des ressources.
  • Vous souhaitez lancer un service avec un ou plusieurs conteneurs sidekick (archiveur de journaux, moniteur de mesures, par exemple) situés à côté du conteneur parent.
  • Vous souhaitez utiliser la découverte de service, l'équilibrage de charge et le contrôle de réplication basés sur des étiquettes K8s.
  • Voir http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Utilisez Marathon si:

  • Vous souhaitez lancer des applications/services longue durée Docker ou non-Docker.
  • Vous souhaitez utiliser les attributs Mesos pour la planification basée sur des contraintes.
  • Vous souhaitez utiliser des groupes d'applications et des dépendances pour lancer, mettre à l'échelle ou mettre à niveau des services associés.
  • Vous souhaitez utiliser des vérifications de l'état pour redémarrer automatiquement des services défectueux ou annuler des déploiements/mises à niveau insalubres.
  • Vous souhaitez intégrer HAProxy ou Consul pour la découverte de services.
  • Vous souhaitez lancer et surveiller des applications via une interface utilisateur Web ou une API REST.
  • Vous souhaitez utiliser un framework créé dès le départ avec Mesos en tête.

Utilisez Chronos si:

  • Vous souhaitez lancer des tâches Docker ou non Docker qui sont censées se terminer.
  • Vous souhaitez planifier l'exécution d'une tâche à une heure/un programme spécifique (à la cron).
  • Vous souhaitez planifier un flux de travail DAG de tâches dépendantes.
  • Vous souhaitez lancer et surveiller des travaux via une interface utilisateur Web ou une API REST.
  • Vous souhaitez utiliser un framework créé dès le départ avec Mesos en tête.
166
Adam

Bien que ce soit un peu obsolète, il peut être utile de lire Quelle est la différence entre les Mesos d’Apache et les Kubernetes de Google , pour bien comprendre les bases. Notez également que Mesos opère à un niveau différent de celui de Kubernetes/Marathon/Chronos. Dernier point mais non le moindre, voir Docker Swarm + Mesos de Timothy Chen, en gardant à l’esprit que Marathon et Swarm peuvent fonctionner simultanément sur le même cluster Mesos.

15
Michael Hausenblas