Quelle est la différence entre les Mesos d'Apache et les Kubernetes de Google


Réponses:


516

Kubernetes est un projet open source qui apporte des capacités de gestion de cluster de «style Google» au monde des machines virtuelles ou des scénarios «sur le métal». Il fonctionne très bien avec les environnements de systèmes d'exploitation modernes (comme CoreOS ou Red Hat Atomic) qui offrent des «nœuds» informatiques légers qui sont gérés pour vous. Il est écrit en Golang et est léger, modulaire, portable et extensible. Nous (l'équipe Kubernetes) travaillons avec un certain nombre de sociétés technologiques différentes (y compris Mesosphere qui organise le projet open source Mesos) pour établir Kubernetes comme moyen standard d'interagir avec les clusters informatiques. L'idée est de reproduire les modèles dont nous voyons les gens avoir besoin pour créer des applications de cluster en fonction de notre expérience chez Google. Certains de ces concepts incluent:

  • pods - un moyen de regrouper les conteneurs
  • contrôleurs de réplication - un moyen de gérer le cycle de vie des conteneurs
  • étiquettes - un moyen de rechercher et d'interroger des conteneurs, et
  • services - un ensemble de conteneurs remplissant une fonction commune.

Ainsi, avec Kubernetes seul, vous aurez quelque chose qui est simple, facile à mettre en place, portable et extensible qui ajoute `` cluster '' comme un nom aux choses que vous gérez de la manière la plus légère possible. Exécutez une application sur un cluster et arrêtez de vous soucier d'une machine individuelle. Dans ce cas, le cluster est une ressource flexible tout comme une machine virtuelle. Il s'agit d'une unité informatique logique. Montez-le, utilisez-le, redimensionnez-le, baissez-le rapidement et facilement.

Avec Mesos, il y a beaucoup de chevauchements en termes de vision de base, mais les produits sont à des stades tout à fait différents de leur cycle de vie et ont des points faibles différents. Mesos est un noyau de systèmes distribués qui assemble un grand nombre de machines différentes dans un ordinateur logique. Il est né pour un monde où vous possédez beaucoup de ressources physiques pour créer un grand cluster informatique statique. La grande chose à ce sujet est que beaucoup d'applications de traitement de données évolutives modernes fonctionnent bien sur Mesos (Hadoop, Kafka, Spark) et c'est bien parce que vous pouvez les exécuter toutes sur le même pool de ressources de base, avec vos nouvelles applications packagées de conteneurs d'âge . Il est un peu plus lourd que le projet Kubernetes, mais devient de plus en plus facile à gérer grâce au travail de gens comme Mesosphere.

Ce qui devient vraiment intéressant, c'est que Mesos est actuellement en cours d'adaptation pour ajouter de nombreux concepts Kubernetes et prendre en charge l'API Kubernetes. Ce sera donc une passerelle pour obtenir plus de fonctionnalités pour votre application Kubernetes (maître haute disponibilité, sémantique de planification plus avancée, possibilité d'évoluer vers un très grand nombre de nœuds) si vous en avez besoin, et est bien adapté pour exécuter des charges de travail de production (Kubernetes est toujours dans un état alpha).

Lorsqu'on me le demande, j'ai tendance à dire:

  1. Kubernetes est un excellent point de départ si vous êtes nouveau dans le monde du clustering; c'est le moyen le plus rapide, le plus simple et le plus léger de donner un coup de pied aux pneus et de commencer à expérimenter le développement orienté cluster. Il offre un très haut niveau de portabilité car il est pris en charge par de nombreux fournisseurs différents (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, etc.).

  2. Si vous avez des charges de travail existantes (Hadoop, Spark, Kafka, etc.), Mesos vous offre un cadre qui vous permet d'entrelacer ces charges de travail les unes avec les autres et de mélanger certaines des nouvelles choses, y compris les applications Kubernetes.

  3. Mesos vous offre une soupape d'échappement si vous avez besoin de capacités qui ne sont pas encore implémentées par la communauté dans le cadre de Kubernetes.


4
Super aperçu. Deux brèves réflexions: 1) Je crois que Kubernetes est maintenant bêta plutôt qu'alpha? 2) Ajouter des informations sur Marathon?
knite

57
Pour résumer (pour la lecture rapide - j'espère que je comprends bien): kubernetes est un gestionnaire de cluster pour les conteneurs (seulement?) Tandis que mesos est un noyau de système distribué qui fera ressembler votre cluster à un système informatique géant pour tous les cadres pris en charge et les applications conçues pour être exécutées sur mesos. Pourtant, kubernetes est un (parmi d'autres) framework qui peut être exécuté sur mesos. Ainsi, en combinant à la fois vous vous retrouvez avec un cluster qui n'est pas un cluster et un gestionnaire de cluster qui n'a pas de cluster à gérer. Grand nouveau monde :-) (J / K il y a beaucoup d'avantages que vous en retirez puisque kub. Est plus que clst. Phys. Res.)
masi

7
Voici Mésosphère parler exactement de cela lors de l'événement de lancement de Kubernetes 1.0: youtube.com/… - avertissement: c'est moi.
Air

68

Les deux projets visent à faciliter le déploiement et la gestion des applications à l'intérieur des conteneurs de votre centre de données ou cloud.

Afin de déployer des applications au-dessus de Mesos, on peut utiliser Marathon ou Kubernetes pour Mesos.

Marathon est un système d'initialisation et de contrôle à l'échelle du cluster pour exécuter des services Linux dans des groupes de contrôle et des conteneurs Docker. Marathon a un certain nombre de fonctionnalités de déploiement de canaris et est un projet très mature.

Marathon se déroule au-dessus de Mesos, qui est un gestionnaire de ressources hautement évolutif, testé et flexible. Marathon a fait ses preuves et évolue dans de nombreux environnements de production.

La pile technologique Mesos et Mesosphere fournit un environnement de type cloud pour exécuter les charges de travail Linux existantes, mais elle fournit également un environnement natif pour la construction de nouveaux systèmes distribués.

Mesos est un noyau de systèmes distribués, avec une API complète pour la programmation directement sur le centre de données. Il résume le matériel sous-jacent (par exemple, le métal nu ou les VM) et expose simplement les ressources. Il contient des primitives pour écrire des applications distribuées (par exemple, Spark était à l'origine une application Mesos, Chronos, etc.) telles que la transmission de messages, l'exécution de tâches, etc. Ainsi, de toutes nouvelles applications sont rendues possibles. Apache Spark est un exemple d'un nouveau framework (dans le jargon Mesos appelé) qui a été construit à l'origine pour Mesos. Cela a permis un développement très rapide - les développeurs de Spark n'ont pas eu à se soucier de la mise en réseau pour répartir les tâches entre les nœuds car il s'agit d'une primitive de base dans Mesos.

À ma connaissance, Kubernetes n'est pas utilisé à l'intérieur de Google dans les déploiements de production aujourd'hui. Pour la production, Google utilise Omega / Borg, qui est beaucoup plus similaire au modèle Mesos / Marathon. Cependant, la grande chose à propos de l'utilisation de Mesos comme base est que Kubernetes et Marathon peuvent courir dessus.

Plus de ressources sur Marathon:

https://mesosphere.github.io/marathon/

Vidéo: https://www.youtube.com/watch?v=hZNGST2vIds


37

Kubernetes et Mesos sont une alliance faite au paradis. Kubernetes permet l'abstraction du pod (groupe de conteneurs colocalisés), ainsi que des étiquettes de pod pour la découverte de service, l'équilibrage de charge et le contrôle de la réplication. Mesos fournit les allocations de ressources à granularité fine pour les pods sur les nœuds d'un cluster, et peut faire en sorte que Kubernetes joue bien avec d'autres infrastructures fonctionnant sur les mêmes ressources de cluster.

depuis le fichier lisez-moi de kubernetes-mesos


18

Mesos et Kubernetes peuvent tous deux être utilisés pour gérer un cluster de machines et retirer le matériel.

Mesos, de par sa conception, ne vous fournit pas de planificateur (pour décider où et quand exécuter des processus et quoi faire si le processus échoue), vous pouvez utiliser quelque chose comme Marathon ou Chronos, ou écrire le vôtre.

Kubernetes fera la planification pour vous hors de la boîte, et peut être utilisé comme un planificateur pour Mesos (veuillez me corriger si je me trompe ici!), C'est là que vous pouvez les utiliser ensemble. Mesos peut avoir plusieurs ordonnanceurs partageant le même cluster, donc en théorie, vous pouvez exécuter kubernetes et chronos ensemble sur le même matériel.

De manière très simpliste: si vous voulez contrôler la façon dont vos conteneurs sont planifiés, optez pour Mesos, sinon Kubernetes bascule.


1
Cette réponse est inexacte et déroutante. Il n'y a pas de moyen facile d'exécuter Mesos sur Kubernetes - et en fait, ce serait une inversion de l'architecture. Étant donné que Kubernetes est moins général que Mesos, il est plus logique de l'exécuter au-dessus de Mesos.
ssk2

1
Oui, je voulais dire que kubernetes fonctionnait au-dessus de Mesos .. Kubernetes fournit la logique de planification pour le framework mesos et mesos s'occupe du travail en cours d'exécution etc .. Désolé si ce n'était pas clair.
user2851943

2
@air Je suis intéressé de savoir comment vous définiriez le planificateur ici? Mesos lui-même ne semble fournir aucune logique de programmation? Tout est géré dans Chronos / Marathon / etc? (peut-être que j'ai raté quelque chose! :))
user2851943

6
Je pense que je vois où vous en êtes - Mesos est un cadre qui permet de brancher les ordonnanceurs. J'ai été troublé par le libellé suggérant que Mesos a omis quelque chose d'important ("Mesos ne vous fournit pas"), quand c'est par conception. J'ai supprimé mon downvote.
Air

5
Cette réponse est exacte. Mesos se concentre sur la gestion des ressources et il dissocie la planification en permettant des cadres enfichables. Un bon exemple est ce que Netflix a fait en écrivant un cadre de planification: Fenzo techblog.netflix.com/2015/08/…
Camilo Crespo

5

J'aime cette courte vidéo ici le matériel d'apprentissage mesos

avec des clusters bare metal, vous devrez générer des piles comme HDFS, SPARK, MR etc ... donc si vous lancez des tâches liées à celles-ci en utilisant uniquement la gestion de cluster bare metal, il y aura beaucoup de temps de démarrage très froid.

avec mesos, vous pouvez installer ces services au-dessus des métaux nus et vous pouvez éviter le temps de mise en place de ces services de base. C'est quelque chose que mesos fait bien. et peut être utilisé par kubernetes en construisant dessus.


3

"Je comprends que les deux sont des logiciels de gestion de cluster de serveurs."

Cette affirmation n'est pas entièrement vraie. Kubernetes ne gère pas les clusters de serveurs, il orchestre les conteneurs de sorte qu'ils fonctionnent ensemble avec un minimum de tracas et d'exposition. Kubernetes vous permet de définir des parties de votre application comme des "pods" (un ou plusieurs conteneurs) qui sont fournis par des "déploiements" ou des "ensembles de démons" (et quelques autres) et exposés au monde extérieur via des services. Cependant, Kubernetes ne gère pas le cluster lui-même (il existe des outils qui peuvent provisionner, configurer et mettre à l'échelle les clusters pour vous, mais ceux-ci ne font pas partie de Kubernetes lui-même).

Mesos, d'autre part, se rapproche de la "gestion de cluster" en ce sens qu'il peut contrôler ce qui se passe où, mais pas seulement en termes de planification des conteneurs. Mesos gère également des logiciels autonomes exécutés sur les serveurs de cluster. Même s'il est principalement utilisé comme alternative à Kubernetes, Mesos peut facilement fonctionner avec Kubernetes car, tandis que la fonctionnalité se chevauche dans de nombreux domaines, Mesos peut faire plus (mais sur les parties qui se chevauchent, Kubernetes a tendance à être meilleur).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.