Autentia

Blog

Nomad vs. Kubernetes

Anteriormente hemos hablado de las características principales de las arquitecturas orientadas a microservicios. Puede leer el post al respecto aquí.

A continuación vamos a ver dos alternativas distintas para orquestar el despliegue y supervisión de contenedores: Kubernetes y Nomad.

 

Kubernetes


Kubernetes, también conocido como K8S, es un sistema open-source para la automatización del despliegue, escalado y monitorización de contenedores.

Kubernetes ofrece soluciones a la mayoría de problemas de un despliegue distribuido como pueden ser: escalado horizontal, autoescalado, monitorización del estado del clúster y cada servicio, descubrimiento y balanceo de los servicios, gestión de secretos y configuración, abstracciones a nivel de red, despliegues y rollbacks automatizados, gestión de volúmenes de almacenamiento, etc.

Kubernetes fue diseñado y utilizado inicialmente por Google. Actualmente es de código abierto y es utilizado como base de la mayoría de servicios de orquestación de contenedores dockers en la nube.

Google Cloud ofrece un sistema de Kubernetes administrado que se puede arrancar y configurar a través de su web de manera muy sencilla. Su nombre es Kubernetes Engine.

Amazon pese a tener su propio sistema de orquestación de contenedores llamado Amazon ECS, ya ofrece un servicio administrado de Kubernetes que ha llamado EKS.

Azure tiene su servicio basado en Kubernetes al que ha llamado AKS.

IBM ofrece también en su Cloud un servicio administrado de Kubernetes llamado IBM Cloud Kubernetes Service.

Nomad


Nomad es una herramienta gratuita que pertenece a HashiCorp, quien es también creador de otras piezas de software que encajan muy bien como Consul y Vault.

Es un planificador de despliegues que se encarga de ejecutar de manera distribuida los procesos que se le indiquen, escalarlos y supervisar su ejecución para lanzar nuevas instancias en caso de caídas.

Así mismo, es una pequeña pieza de software que se instala como un simple binario. El clúster debe contar con 3 servidores (para evitar pérdida de información) que se encargarán de la gestión de los despliegues y la monitorización y de tantos clientes como se requiera para alojar estos despliegues.

Permite el despliegue de contenedores dockers, aplicaciones java, procesos spark, VMs, etc. Y es compatible con Linux, Windows y MacOS.

Nomad no incluye funcionalidad de descubrimiento para resolver las ubicaciones en las que se ha desplegado cada aplicación; pero se integra fácilmente con Consul para esta función.

Del mismo modo, Nomad no ofrece funciones de balanceo de carga para enviar las peticiones a los nodos donde está desplegada la aplicación; pero se integra muy bien con Nginx o HAProxy con configuración automática basándose en Consul.

Nomad tampoco dispone de una gestión de secretos pero para ello se integra perfectamente con Vault.

Como se puede ver, Nomad no es una solución completa de orquestación de contenedores. Su enfoque es ser muy sencillo y eficaz con su cometido y encajar con distintas piezas para cada funcionalidad extra que pueden ser utilizadas o no en función de las necesidades y contexto del cliente.

Si quieres saber un poco más de Nomad te comparto mi tutorial ‘Nomad – Despliegue y supervisión sencilla de aplicaciones‘ publicado en adictosaltrabajo.com

Nomad vs Kubernetes

Conclusiones


En Autentia apostamos por el uso de herramientas de orquestación de contenedores para entornos productivos. Hemos utilizado Kubernetes y Nomad en función del cliente y entendemos que dependiendo del contexto global puede ser más útil una solución u otra.

Por ejemplo, si la arquitectura se va a montar sobre una nube pública como AWS, Google Cloud o Azure, solemos recomendar Kubernetes por ser una solución completa y que es totalmente administrada. De esta manera, sin una difícil administración se puede contar con un sistema completo de orquestación de contenedores con autodescubrimiento, balanceo de carga, gestión de volúmenes, abstracción de red, gestión de secretos y configuración, etc.

En cambio cuando la arquitectura se va a montar en los servidores propios del cliente es posible que no merezca la pena la instalación, configuración y mantenimiento de un clúster de Kubernetes y se pueda instalar una solución más sencilla basada en el stack de HashiCorp. Nomad enfoca la solución con una arquitectura mucho más simple y se apoya en otras piezas externas para añadir las funcionalidades de coordinación y balanceo de carga.

Conoce nuestro curso relacionado

Integración y despliegue continuo con Docker

VER CURSO
Por Miguel Ángel Hernández Castro 20 Sep 2018

¿Cómo podemos ayudarte?

HABLEMOS