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

Quelle est la différence entre Mesos et Google Kubernetes? Je comprends que les deux sont des logiciels de gestion de grappe de serveurs. Quelqu’un peut-il préciser où se situent les principales différences – quand préférer ce cadre?

Pourquoi voudriez-vous utiliser Kubernetes par-dessus Mesosphere ?

Kubernetes est un projet open source qui apporte des fonctionnalités de gestion de grappes de type «Google» au monde des machines virtuelles ou des scénarios «sur le métal». Cela fonctionne très bien avec les environnements de systèmes d’exploitation modernes (tels que CoreOS ou Red Hat Atomic) qui offrent des «nœuds» informatiques légers et 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 faire de Kubernetes le moyen standard d’interagir avec les grappes informatiques. L’idée est de reproduire les modèles dont les utilisateurs ont 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 des 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 effectuant une fonction commune.

Ainsi, avec Kubernetes seul, vous aurez quelque chose de simple, facile à mettre en place, portable et extensible qui ajoute le terme «cluster» aux noms 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é de calcul logique. Montez-le, utilisez-le, redimensionnez-le, éteignez-le rapidement et facilement.

Avec Mesos, il y a beaucoup de chevauchement en termes de vision de base, mais les produits sont à des moments très différents de leur cycle de vie et ont des points forts différents. Mesos est un kernel de systèmes dissortingbués qui relie plusieurs machines différentes sur un ordinateur logique. Il est né pour un monde où vous possédez beaucoup de ressources physiques pour créer un grand cluster de calcul statique. Ce qui est génial, c’est que beaucoup d’applications de traitement de données évolutives modernes fonctionnent bien sur Mesos (Hadoop, Kafka, Spark) et que c’est bien parce que vous pouvez les exécuter sur le même pool de ressources de base . C’est un peu plus lourd que le projet Kubernetes, mais il devient de plus en plus facile à gérer grâce au travail de gens comme Mesosphere.

Maintenant, ce qui devient vraiment intéressant, c’est que Mesos est actuellement en cours d’adaptation pour append beaucoup de concepts Kubernetes et pour supporter l’API Kubernetes. Il s’agira donc d’une passerelle permettant d’obtenir plus de fonctionnalités pour votre application Kubernetes (maître de la haute disponibilité, sémantique de planification plus avancée, capacité de mise à niveau vers un très grand nombre de nœuds) et bien adaptée aux charges de travail de production (Kubernetes est toujours dans un état alpha).

Lorsque demandé, j’ai tendance à dire:

  1. Kubernetes est un excellent sharepoint départ si vous êtes nouveau dans le monde du clustering; C’est le moyen le plus rapide, le plus facile et le plus léger de lancer les pneus et de commencer à expérimenter le développement orienté cluster. Il offre un très haut niveau de portabilité car il est supporté 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 offre un cadre qui vous permet d’entrelacer ces charges de travail les unes avec les autres, et d’intégrer certaines des nouvelles fonctionnalités, notamment les applications Kubernetes.

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

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

Pour déployer des applications sur Mesos, on peut utiliser Marathon ou Kubernetes for Mesos.

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

Marathon s’appuie sur Mesos, un gestionnaire de ressources flexible, hautement évolutif et hautement évolutif. Marathon a fait ses preuves et fonctionne dans de nombreux environnements de production.

La stack de technologies Mesos et Mesosphere offre un environnement de type cloud pour l’exécution des charges de travail Linux existantes, mais elle fournit également un environnement natif pour la création de nouveaux systèmes dissortingbués.

Mesos est un kernel de systèmes dissortingbué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 machines virtuelles) et expose simplement les ressources. Il contient des primitives pour écrire des applications dissortingbué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 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’avaient pas à s’inquiéter 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é dans Google lors des déploiements de production actuels. 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 fonctionner au-dessus.

Plus de ressources sur Marathon:

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

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

Les Kubernetes et les Mesos sont un match fait au paradis. Kubernetes active l’abstraction Pod (groupe de conteneurs co-situés), ainsi que les étiquettes Pod pour la détection de service, l’équilibrage de la charge et le contrôle de réplication. Mesos fournit les allocations de ressources fines pour les modules d’un nœud à l’autre, et permet à Kubernetes de jouer avec d’autres infrastructures s’exécutant sur les mêmes ressources de cluster.

du readme de kubernetes-mesos

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

Mesos, de par sa conception, ne vous fournit pas de planificateur (pour décider où et quand exécuter les processus et que 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 et peut être utilisé comme un planificateur pour Mesos (corrigez-moi si je me trompe ici!), Où vous pouvez les utiliser ensemble. Les mesos peuvent avoir plusieurs ordonnanceurs partageant le même cluster. En théorie, vous pouvez exécuter des kubernetes et des chronos sur le même matériel.

Super simpliste: si vous voulez contrôler la façon dont vos conteneurs sont programmés, optez pour Mesos, sinon les roches de Kubernetes.

J’aime cette petite vidéo ici

avec les grappes de métal nu, vous devrez créer des stacks comme HDFS, SPARK, MR etc … Ainsi, si vous lancez des tâches liées à celles-ci en utilisant uniquement la gestion de grappes nues, le temps de démarrage sera très froid.

Avec mesos, vous pouvez installer ces services au-dessus des métaux nus et vous pouvez éviter le temps de montée de ces services de base. C’est quelque chose que les mesos font bien. et peut être utilisé par la construction de kubernetes par dessus.