¿Cuál es la diferencia entre el Mesos de Apache y los Kubernetes de Google?

385

¿Cuál es exactamente la diferencia entre el Mesos de Apache y los Kubernetes de Google? Entiendo que ambos son software de administración de clúster de servidores. ¿Alguien puede explicar dónde están las principales diferencias? ¿Cuándo sería el marco preferido?

¿Por qué querrías usar Kubernetes encima de la Mesosfera ?

anomalía binaria
fuente

Respuestas:

516

Kubernetes es un proyecto de código abierto que trae capacidades de administración de clúster 'estilo Google' al mundo de las máquinas virtuales, o escenarios 'en el metal'. Funciona muy bien con entornos modernos de sistemas operativos (como CoreOS o Red Hat Atomic) que ofrecen 'nodos' informáticos livianos que se administran por usted. Está escrito en Golang y es ligero, modular, portátil y extensible. Nosotros (el equipo de Kubernetes) estamos trabajando con varias compañías tecnológicas diferentes (incluida Mesosphere que es la curadora del proyecto de código abierto de Mesos) para establecer a Kubernetes como la forma estándar de interactuar con los clústeres informáticos. La idea es reproducir los patrones que vemos que las personas necesitan para crear aplicaciones de clúster basadas en nuestra experiencia en Google. Algunos de estos conceptos incluyen:

  • vainas : una forma de agrupar contenedores
  • Controladores de replicación : una forma de manejar el ciclo de vida de los contenedores
  • etiquetas : una forma de buscar y consultar contenedores, y
  • servicios : un conjunto de contenedores que realizan una función común.

Entonces, con Kubernetes solo, tendrá algo que es simple, fácil de poner en funcionamiento, portátil y extensible que agrega 'cluster' como un sustantivo a las cosas que maneja de la manera más liviana posible. Ejecute una aplicación en un clúster y deje de preocuparse por una máquina individual. En este caso, el clúster es un recurso flexible al igual que una VM. Es una unidad de computación lógica. Suba, use, cambie el tamaño, baje rápida y fácilmente.

Con Mesos, existe una buena cantidad de superposición en términos de la visión básica, pero los productos se encuentran en puntos bastante diferentes en su ciclo de vida y tienen diferentes puntos clave. Mesos es un núcleo de sistemas distribuidos que une muchas máquinas diferentes en una computadora lógica. Nació para un mundo donde posee muchos recursos físicos para crear un gran clúster de computación estática. Lo mejor de esto es que muchas aplicaciones modernas de procesamiento de datos escalables funcionan bien en Mesos (Hadoop, Kafka, Spark) y es agradable porque puedes ejecutarlas todas en el mismo grupo de recursos básicos, junto con tus aplicaciones empaquetadas de contenedores de la nueva era. . Es algo más pesado que el proyecto Kubernetes, pero cada vez es más fácil de manejar gracias al trabajo de personas como Mesosphere.

Ahora lo que se vuelve realmente interesante es que Mesos se está adaptando actualmente para agregar muchos de los conceptos de Kubernetes y para admitir la API de Kubernetes. Por lo tanto, será una puerta de entrada para obtener más capacidades para su aplicación Kubernetes (maestro de alta disponibilidad, semántica de programación más avanzada, capacidad de escalar a una gran cantidad de nodos) si los necesita, y es muy adecuado para ejecutar cargas de trabajo de producción (Kubernetes todavía está en un estado alfa).

Cuando me preguntan, tiendo a decir:

  1. Kubernetes es un excelente lugar para comenzar si eres nuevo en el mundo de la agrupación; Es la forma más rápida, fácil y liviana de patear los neumáticos y comenzar a experimentar con el desarrollo orientado al clúster. Ofrece un nivel muy alto de portabilidad ya que es compatible con muchos proveedores diferentes (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, etc.).

  2. Si tiene cargas de trabajo existentes (Hadoop, Spark, Kafka, etc.), Mesos le brinda un marco que le permite intercalar esas cargas de trabajo entre sí y mezclar algunas de las cosas nuevas, incluidas las aplicaciones de Kubernetes.

  3. Mesos le ofrece una válvula de escape si necesita capacidades que la comunidad aún no ha implementado en el marco de Kubernetes.

Craig Mcluckie
fuente
44
Gran resumen Dos breves pensamientos: 1) ¿Creo que Kubernetes ahora es beta en lugar de alfa? 2) Añadir información sobre Maratón?
Knite
57
Para resumir (para la lectura rápida, espero hacerlo bien): kubernetes es un administrador de clúster para contenedores (¿solo?) Mientras que mesos es un núcleo de sistema distribuido que hará que su clúster se vea como un sistema de computadora gigante para todos los marcos compatibles y aplicaciones creadas para ejecutarse en mesos. Sin embargo, kubernetes es un marco (entre otros) que se puede ejecutar en mesos. Por lo tanto, combinando ambos terminas con un clúster que no es un clúster y un administrador de clúster que no tiene ningún clúster para administrar. Great new world :-) (J / K hay muchos beneficios que obtienes de esto ya que kub. Es más que clst. Phys. Res.)
masi
77
Aquí está Mesosphere hablando exactamente de esto en el evento de lanzamiento de Kubernetes 1.0: youtube.com/… - descargo de responsabilidad: este soy yo.
Aire
68

Ambos proyectos apuntan a facilitar la implementación y administración de aplicaciones dentro de contenedores en su centro de datos o nube.

Para implementar aplicaciones sobre Mesos, uno puede usar Marathon o Kubernetes para Mesos.

Marathon es un sistema de control e inicio de todo el clúster para ejecutar servicios de Linux en cgroups y contenedores Docker. Marathon tiene varias características diferentes de implementación canaria y es un proyecto muy maduro.

Marathon corre sobre Mesos, que es un administrador de recursos altamente escalable, probado en batalla y flexible. Se ha comprobado que Marathon escala y se ejecuta en muchos entornos de producción.

La pila de tecnología Mesos y Mesosphere proporciona un entorno similar a la nube para ejecutar cargas de trabajo Linux existentes, pero también proporciona un entorno nativo para construir nuevos sistemas distribuidos.

Mesos es un núcleo de sistemas distribuidos, con una API completa para programar directamente contra el centro de datos. Extrae el hardware subyacente (p. Ej., Metal desnudo o máquinas virtuales) y simplemente expone los recursos. Contiene primitivas para escribir aplicaciones distribuidas (por ejemplo, Spark fue originalmente una aplicación de Mesos, Chronos, etc.) como Pasar mensajes, Ejecución de tareas, etc. Por lo tanto, se hacen posibles aplicaciones completamente nuevas. Apache Spark es un ejemplo de un nuevo marco (llamado en la jerga de Mesos) que se creó originalmente para Mesos. Esto permitió un desarrollo realmente rápido: los desarrolladores de Spark no tenían que preocuparse por las redes para distribuir tareas entre los nodos, ya que este es un elemento primitivo central en Mesos.

Que yo sepa, Kubernetes no se usa dentro de Google en las implementaciones de producción de hoy. Para la producción, Google usa Omega / Borg, que es mucho más similar al modelo Mesos / Marathon. Sin embargo, lo mejor de usar Mesos como base es que tanto Kubernetes como Marathon pueden correr sobre él.

Más recursos sobre Marathon:

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

Video: https://www.youtube.com/watch?v=hZNGST2vIds

mesospherian
fuente
37

Kubernetes y Mesos son una combinación hecha en el cielo. Kubernetes habilita la abstracción Pod (grupo de contenedores de ubicación conjunta), junto con etiquetas Pod para descubrimiento de servicios, equilibrio de carga y control de replicación. Mesos proporciona las asignaciones de recursos de grano fino para los pods entre los nodos en un clúster y puede hacer que Kubernetes juegue muy bien con otros marcos que se ejecutan en los mismos recursos del clúster.

de readme de Kubernetes-mesos

herodot
fuente
18

Mesos y Kubernetes se pueden usar para administrar un grupo de máquinas y abstraer el hardware.

Mesos, por diseño, no le proporciona un planificador (para decidir dónde y cuándo ejecutar procesos y qué hacer si el proceso falla), puede usar algo como Marathon o Chronos, o escribir el suyo propio.

Kubernetes hará la programación para usted de inmediato, y puede usarse como un programador para Mesos (¡corríjame si me equivoco aquí!), Que es donde pueden usarlos juntos. Mesos puede tener múltiples programadores que comparten el mismo clúster, por lo que, en teoría, podría ejecutar kubernetes y cronos juntos en el mismo hardware.

Súper simplista: si quieres controlar cómo están programados tus contenedores, elige Mesos, de lo contrario, Kubernetes es genial.

usuario2851943
fuente
1
Esta respuesta es inexacta y confusa. No hay una manera fácil de ejecutar Mesos en Kubernetes, y de hecho, eso sería una inversión de la arquitectura. Como Kubernetes tiene un enfoque menos general que Mesos, tiene más sentido ejecutarlo encima de Mesos.
ssk2
1
Sí, me refería a kubernetes que se ejecuta sobre Mesos. Kubernetes proporciona la lógica de programación para el marco de trabajo de mesos y mesos se encarga del trabajo en ejecución, etc. Lo siento si eso no estaba claro.
usuario2851943
2
@air ¿Me interesa saber cómo definirías el planificador aquí? ¿Mesos en sí no parece proporcionar ninguna de las lógicas de programación? ¿Todo esto se maneja en Chronos / Marathon / etc? (¡quizás me he perdido algo! :))
user2851943
66
Creo que entiendo a qué te refieres: Mesos es un marco que permite que los programadores se conecten. Estaba confundido por la redacción que sugiere que Mesos omitió algo importante ("Mesos no te proporciona"), cuando eso es diseño. Me quité mi voto negativo.
Aire
55
Esta respuesta es precisa. Mesos se enfoca en la gestión de recursos y desacopla la programación al permitir marcos conectables. Un buen ejemplo es lo que hizo Netflix al escribir un marco de programación: Fenzo techblog.netflix.com/2015/08/…
Camilo Crespo
5

Me gusta este breve video aquí material de aprendizaje mesos

con clústeres de metal desnudo, necesitaría generar pilas como HDFS, SPARK, MR, etc., por lo que si inicia tareas relacionadas con estos utilizando solo la administración de clúster de metal desnudo, habrá mucho tiempo de arranque frío.

con mesos, puede instalar estos servicios sobre los metales desnudos y puede evitar el tiempo de activación de esos servicios básicos. Esto es algo que mesos hace bien. y puede ser utilizado por kubernetes construyendo encima de él.

zinc
fuente
3

"Entiendo que ambos son software de administración de clúster de servidores".

Esta afirmación no es del todo cierta. Kubernetes no gestiona los clústeres de servidores, organiza los contenedores para que funcionen juntos con una mínima molestia y exposición. Kubernetes le permite definir partes de su aplicación como "pods" (uno o más contenedores) que son entregados por "despliegues" o "conjuntos de demonios" (y algunos otros) y expuestos al mundo exterior a través de servicios. Sin embargo, Kubernetes no administra el clúster en sí (hay herramientas que pueden aprovisionar, configurar y escalar clústeres por usted, pero no forman parte de Kubernetes).

Mesos, por otro lado, se acerca a la "gestión de clústeres", ya que puede controlar qué se está ejecutando dónde, pero no solo en términos de programación de contenedores. Mesos también gestiona software independiente que se ejecuta en los servidores del clúster. Aunque se usa principalmente como una alternativa a Kubernetes, Mesos puede trabajar fácilmente con Kubernetes, ya que mientras la funcionalidad se superpone en muchas áreas, Mesos puede hacer más (pero en las partes superpuestas, Kubernetes tiende a ser mejor).

Andrei Dascalu
fuente