web-dev-qa-db-fra.com

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

Quelle est exactement la différence entre les Mesos d'Apache et les Kubernetes de Google? Je comprends que les deux sont des logiciels de gestion de cluster de serveurs. Quelqu'un peut-il préciser où se trouvent les principales différences - quand choisir quel cadre?

Pourquoi voudriez-vous utiliser Kubernetes au sommet de la mésosphère ?

359
binaryanomaly

Kubernetes est un projet open source qui apporte des fonctionnalités de gestion de grappes "à la Google" au monde des machines virtuelles ou des scénarios "on the metal". Cela fonctionne très bien avec les environnements de système d'exploitation modernes (tels que CoreOS ou Red Hat Atomic) qui offrent des "nœuds" informatiques légers 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 qui permettent aux utilisateurs de créer des applications de cluster basées sur notre expérience chez Google. Certains de ces concepts incluent:

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

Ainsi, rien qu'avec Kubernetes, vous obtiendrez quelque chose de simple, facile à obtenir, portable et extensible qui ajoutera "cluster" comme 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'un ordinateur individuel. Dans ce cas, le cluster est une ressource flexible, tout comme une machine virtuelle. C'est une unité informatique logique. Augmentez-le, utilisez-le, redimensionnez-le, baissez-le rapidement et facilement.

Avec Mesos, il y a beaucoup de chevauchement en termes de vision de base, mais les produits se trouvent à des moments assez différents de leur cycle de vie et ont des points de convergence différents. Mesos est un noyau de systèmes distribués qui assemble un grand nombre de machines différentes en un ordinateur logique. Il est né dans un monde où vous possédez de nombreuses ressources physiques pour créer un grand cluster de calcul statique. L'avantage est que de nombreuses applications de traitement de données évolutives et modernes fonctionnent bien sur Mesos (Hadoop, Kafka, Spark) et c'est agréable, car vous pouvez toutes les exécuter sur le même pool de ressources de base, avec vos applications empaquetées en conteneur standard . Il est un peu plus lourd que le projet Kubernetes, mais il devient de plus en plus facile à gérer grâce au travail de personnes comme Mésosphère.

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

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

  1. Kubernetes est un excellent point de départ si vous débutez dans le clustering. C'est le moyen le plus rapide, le plus simple et le plus léger de lancer des pneus et de commencer à expérimenter un développement orienté cluster. Il offre un très haut niveau de portabilité car il est pris en charge par de nombreux fournisseurs (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, etc.).

  2. Si vous avez des charges de travail existantes (Hadoop, Spark, Kafka, etc.), Mesos vous fournit un cadre qui vous permet d’entrelacer ces charges de travail et de mélanger quelques-uns des nouveaux éléments, notamment les applications Kubernetes.

  3. Mesos vous fournit une valve d’évacuation si vous avez besoin de fonctionnalités qui ne sont pas encore implémentées par la communauté dans le cadre de Kubernetes.

482
Craig Mcluckie

Les deux projets visent à faciliter le déploiement et la gestion d'applications dans des conteneurs de votre centre de données ou de votre 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 permettant d'exécuter des services Linux dans des cgroups 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 fonctionne au dessus de Mesos, un gestionnaire de ressources hautement évolutif, testé pour le combat et flexible. Marathon a fait ses preuves à l’échelle et fonctionne dans de nombreux environnements de production.

La pile technologique Mesos et Mesosphere fournit un environnement de type cloud pour l'exécution des 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 directe avec le centre de données. Il supprime le matériel sous-jacent (par exemple, le métal nu ou les machines virtuelles) et expose simplement les ressources. Il contient des primitives pour l'écriture d'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 nouvelles applications sont rendues possibles. Apache Spark est un exemple de nouveau framework (appelé dans le jargon Mesos) construit à l'origine pour Mesos. Cela permettait un développement très rapide - les développeurs de Spark n'avaient pas à se soucier de la mise en réseau pour répartir les tâches entre les nœuds, car il s'agissait d'une primitive essentielle dans Mesos.

À ma connaissance, Kubernetes n'est pas utilisé dans les déploiements de production actuels de Google. Pour la production, Google utilise Omega/Borg, qui est beaucoup plus similaire au modèle Mesos/Marathon. Cependant, l’avantage de pouvoir utiliser 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

62
mesospherian

Kubernetes et Mesos sont une alliance parfaite. Kubernetes active l'abstraction de pod (groupe de conteneurs co-localisés), ainsi que des étiquettes de pod pour la découverte de service, l'équilibrage de la charge et le contrôle de la réplication. Mesos fournit des allocations de ressources affinées pour les pods entre les nœuds d'un cluster et permet à Kubernetes de bien fonctionner avec d'autres infrastructures s'exécutant sur les mêmes ressources de cluster.

de readme de kubernetes-mesos

34
herodot

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

Mesos, par 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 se chargera de la planification pour vous et utilisera celle-ci comme programmateur pour Mesos (corrigez-moi si je me trompe!) Et vous pourrez les utiliser ensemble. Mesos peuvent avoir plusieurs ordonnanceurs partageant le même cluster. En théorie, vous pouvez donc exécuter simultanément kubernetes et chronos sur le même matériel.

Super simpliste: si vous voulez contrôler la façon dont vos conteneurs sont planifiés, optez pour Mesos, sinon Kubernetes est un vrai régal.

16
user2851943

J'aime cette courte vidéo ici matériel d'apprentissage mésos

avec des clusters nus, il vous faudra créer des piles telles que HDFS, SPARK, MR, etc. Ainsi, si vous lancez des tâches associées à celles-ci en utilisant uniquement la gestion des clusters nus, le démarrage sera très froid.

avec mesos, vous pouvez installer ces services sur les métaux nus et éviter le temps de mise en place de ces services de base. C'est quelque chose que les mésos font bien. et peut être utilisé par les kubernetes qui construisent dessus.

4
zinking

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

Cette déclaration n'est pas tout à fait vraie. Kubernetes ne gère pas les clusters de serveurs, il orchestre les conteneurs de manière à ce 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) livrés 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 des clusters, mais ils ne font pas partie de Kubernetes).

Les mésos, d’autre part, se rapprochent de la "gestion de grappe" en ce sens qu’ils peuvent contrôler ce qui s’exécute où, mais pas seulement en termes de planification des conteneurs. Mesos gère également des logiciels autonomes s'exécutant sur les serveurs de cluster. Même s'il est principalement utilisé en tant qu'alternative à Kubernetes, Mesos peut facilement fonctionner avec Kubernetes car, si ses fonctionnalités se chevauchent dans de nombreux domaines, Mesos peut en faire plus (mais Kubernetes a tendance à être plus performant sur les parties qui se chevauchent).

1
Andrei Dascalu