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

101

Je recherche des avantages et des inconvénients pour savoir s'il faut utiliser 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 plutôt que Kubernetes et vice versa?

En ce moment, je suis principalement dans l'expérimentation, mais j'espère que nous commencerons à utiliser l'un de ces services en production après l'été. Cela peut disqualifier Docker Swarm car je ne sais pas s'il sera prêt pour la production d'ici là.

Ce que j'aime dans Docker Swarm, c'est qu'il ne s'agit essentiellement que de "commandes Docker" et que vous n'avez pas besoin d'apprendre quelque chose de complètement nouveau. Nous utilisons déjà docker-composeet cela fonctionnera directement avec Docker Swarm (du moins en théorie), ce serait donc un gros plus. Ma principale préoccupation avec Docker Swarm est de savoir s'il couvrira tous les cas d'utilisation nécessaires pour exécuter un système en production.

Johan
la source

Réponses:

167

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

Utilisez Docker Swarm si:

Utilisez Kubernetes-Mesos si:

  • Vous souhaitez lancer K8s Pods, qui sont des groupes de conteneurs co-programmés et colocalisés, partageant des ressources.
  • Vous souhaitez lancer un service avec un ou plusieurs conteneurs secondaires (par exemple, archiveur de journaux, moniteur de métriques) qui vivent à 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 les étiquettes K8.
  • Voir http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Utilisez Marathon si:

  • Vous souhaitez lancer des applications / services de 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 les services associés.
  • Vous souhaitez utiliser les vérifications de l'état pour redémarrer automatiquement les services défectueux ou annuler les déploiements / mises à niveau défectueux.
  • 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 construit dès le départ avec Mesos à l'esprit.

Utilisez Chronos si:

  • Vous souhaitez lancer des tâches Docker ou non-Docker qui devraient se terminer.
  • Vous souhaitez planifier une tâche à exécuter à une heure / planification spécifique (a la cron).
  • Vous souhaitez planifier un workflow 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 construit dès le départ avec Mesos à l'esprit.
Adam
la source
1
Je voulais juste ajouter qu'à partir de K8s 1.6, il prend en charge les éléments suivants (certains d'entre eux depuis longtemps): * Docker-CRI (beta) et cri-o, frakti, rkt (alpha) pour les conteneurs non Docker. * Vérifications de l'état pour voir quand un conteneur a démarré / ne répond plus. * Recréation de gousses malsaines. * Cron comme des emplois, récurrents et ponctuels. * Tâches par lots (démarrées manuellement et exécutées jusqu'à la fin une fois). Puisque Mesosphere eux-mêmes disent que K8s est un citoyen de première classe sur Mesos, l'argument "construit dès le début" se sent aussi un peu wague ...
Jonas Schubert Erlandsson
15

Bien qu'il soit un peu obsolète, il peut être utile de lire Quelle est la différence entre Apache Mesos et Kubernetes de Google , pour bien comprendre certaines bases. Notez également que Mesos fonctionne à un niveau différent de celui de Kubernetes / Marathon / Chronos. Enfin, 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.

Michael Hausenblas
la source