Marathon vs Kubernetes vs Docker Swarm en DC / OS con contenedores Docker

101

Estoy buscando algunos pros y contras de si usar Marathon y Chronos, Docker Swarm o Kubernetes al ejecutar contenedores Docker en DC / OS.

Por ejemplo, ¿cuándo es mejor usar Marathon / Chronos que Kubernetes y viceversa?

En este momento estoy principalmente en experimentar, pero espero que comencemos a usar uno de estos servicios en producción después del verano. Esto puede descalificar a Docker Swarm ya que no estoy seguro si estará listo para producción para entonces.

Lo que me gusta de Docker Swarm es que se trata esencialmente de "comandos de Docker" y no tienes que aprender algo completamente nuevo. Ya lo estamos usando docker-composey eso funcionará de inmediato con Docker Swarm (al menos en teoría), por lo que sería una gran ventaja. Mi principal preocupación con Docker Swarm es si cubrirá todos los casos de uso necesarios para ejecutar un sistema en producción.

Johan
fuente

Respuestas:

167

Intentaré desglosar los aspectos únicos de cada marco de orquestación de contenedores en Mesos.

Utilice Docker Swarm si:

Utilice Kubernetes-Mesos si:

  • Desea lanzar K8s Pods, que son grupos de contenedores programados y ubicados juntos, que comparten recursos.
  • Desea lanzar un servicio junto con uno o más contenedores secundarios (por ejemplo, archivador de registros, monitor de métricas) que se encuentran junto al contenedor principal.
  • Desea utilizar el control de detección de servicios, equilibrio de carga y replicación basado en etiquetas de K8.
  • Ver http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Utilice Marathon si:

  • Desea iniciar aplicaciones / servicios de larga duración de Docker o no Docker.
  • Desea utilizar los atributos de Mesos para la programación basada en restricciones.
  • Desea utilizar grupos de aplicaciones y dependencias para iniciar, escalar o actualizar servicios relacionados.
  • Desea usar verificaciones de estado para reiniciar automáticamente los servicios en mal estado o revertir las implementaciones / actualizaciones en mal estado.
  • Desea integrar HAProxy o Consul para el descubrimiento de servicios.
  • Desea iniciar y monitorear aplicaciones a través de una interfaz de usuario web o API REST.
  • Desea utilizar un marco creado desde el principio con Mesos en mente.

Utilice Chronos si:

  • Desea iniciar Docker o tareas que no son de Docker que se espera que salgan.
  • Desea programar una tarea para que se ejecute en un horario / horario específico (a la cron).
  • Desea programar un flujo de trabajo DAG de tareas dependientes.
  • Desea iniciar y supervisar trabajos a través de una interfaz de usuario web o una API REST.
  • Desea utilizar un marco creado desde el principio con Mesos en mente.
Adán
fuente
1
Solo quería agregar que a partir de K8s 1.6 es compatible con lo siguiente (algunos de ellos durante mucho tiempo): * Docker-CRI (beta) y cri-o, frakti, rkt (alpha) para contenedores que no son Docker. * Verificaciones de estado para ver cuando un contenedor se ha iniciado o ya no responde. * Recreación de vainas insalubres. * Trabajos similares a Cron, tanto recurrentes como únicos. * Trabajos por lotes (se inician manualmente y se ejecutan hasta su finalización una vez). Dado que la propia Mesosfera dice que K8 es un ciudadano de primera clase en Mesos, el argumento de "construido desde el principio" también se siente un poco vago ...
Jonas Schubert Erlandsson