Contenedores, Docker o Kubernetes: ¿cuál es el ideal?

Juan José López Torres

El desarrollo con contenedores es ideal para un enfoque basado en microservicios para el diseño de apps. Bajo este modelo, las apps complejas se dividen en unidades más discretas.

María Melba Calero

Hoy en día es imposible no escuchar hablar sobre software de contenedores: Kubernetes, Mesos, Docker . Incluso gigantes como Google, Microsoft o Amazon se han unido a esta tendencia en el último año.

Al hablar de ellos, pensemos en contenedores físicos como los que transportan los barcos. Si estos no existieran y la mercancía tuviera que enviarse como antiguamente, a granel, el transporte sería muy complicado. Imagínese pasar cualquier mercancía, una a una, desde un barco hasta un camión. El trabajo sería eterno. Sin embargo, los camiones cargan en los puertos los contenedores y estos son repartidos a su lugar de destino fácilmente. Además, es mucho más fácil saber qué cantidad de artículos caben en un contenedor y así evitar errores y pérdida de mercancía.

Lea: Operadores CoreOS permiten ejecutar apps con Kubernetes

Lo que se esconde detrás del software de contenedores es prácticamente lo mismo. De acuerdo con Andrés Arroyo, Software Practice Leader de GBM, los contenedores son un método de empaquetar el código, las configuraciones y las dependencias de su aplicación en un único objeto. Comparten un sistema operativo entre todos los contenedores, y se ejecutan como procesos aislados de los recursos, lo que garantiza implementaciones rápidas, fiables y consistentes sea cual sea el entorno en el que se realizan.

“Los contenedores son más livianos (ya que trabajan directamente sobre el Kernel) que las máquinas virtuales, no es necesario instalar un sistema operativo por contenedor, menor uso de los recursos de la máquina, mayor cantidad de contenedores por equipo físico, mejor portabilidad”, afirma Arroyo.

Por su parte, Docker es una de las palabras más de moda en el mundo del software, por el valor que los contenedores y el desarrollo con instancias de Docker aporta tanto a los programadores como a los administradores de software, y especialmente a aquellos que hayan adoptado un flujo de trabajo centrado en DevOps. 

El especialista de GBM expone que el Docker permite que estos equipos de desarrollo alcancen una eficiencia muy alta en la entrega y el despliegue de software, al solucionar muchos de los retos que presenta la virtualización tradicional.

“Un contenedor Docker, a diferencia de una máquina virtual, no requiere una plataforma ni un sistema operativo. De hecho, podemos tener varios contenedores Docker en el mismo servidor físico utilizando el mismo sistema operativo”, explica Ricardo Romero, Gerente IT de IBW

En cambio los Kubernetes son un orquestador y administrador de contenedores que se encarga de gestionar el ciclo de vida de los contenedores de una aplicación, entre las funciones del kubernetes están el manejo del clúster (permitir añadir o quitar nodos al clúster), gestión del ciclo de vida de los contenedores, service Discovery y Auto Scaling, que es cuando un contenedor llega a un 80% de procesamiento de Cpu, Kubernetes crea otro contenedor para soportar la carga de trabajo.

El Kubernete es más como un proyecto que como un producto: en efecto, Kubernetes se apoya en muchos otros productos ya previamente existentes (como etcd) y los combina con otros desarrollos propios. 

“Instalar y configurar un clúster de Kubernetes on-premises no es algo sencillo y es precisamente por eso que los servicios de Kubernetes “manejados” son tan populares. Estos servicios permiten disponer de un clúster Kubernetes correctamente instalado y levantado en cuestión minutos”, asegura Romero.

Para cualquier sistema

El tipo de desarrollo de aplicaciones en contenedor es más ágil, flexible y automatizado, y el contenedor se puede ejecutar en cualquier sistema operativo que tenga Docker instalado, no se tiene que programar y configurar el software para diferentes tipos de plataformas de hardware o sistemas. 

“Se obtiene una mayor consistencia entre los entornos de pruebas y los entornos de producción. Cuando se desarrolla con Docker, se hacen pruebas de la app dentro de un contenedor, y la despliegas dentro de un ambiente de kubernetes para obtener todos los beneficios del orquestador. Eso significa que el entorno de pruebas es idéntico al entorno en el que se va a ejecutar el software. En consecuencia, los desarrolladores ganan la tranquilidad y la confianza que los usuarios finales no se van a encontrar con problemas que el equipo que probó el software hubiera pasado por alto”, exhorta Arroyo.

También: ¿Cuáles son las tendencias de TI para la innovación?

Asimismo,  explica que las nubes públicas como IBM Cloud, Amazon Web Services, Google Cloud Platform, ya cuentan con servicios de contenedores bajo la modalidad CAAS (Container as a Service). Por su experiencia de años en el mercado IBM y Google Cloud pueden llegar a ser las mejores opciones para utilizar tanto Kubernetes como Docker en Cloud Público.

“En Hybrid Cloud o en Nube Privada las mejores opciones son IBM con ICP y Red Hat con OpenShift por sus años de experiencia en el mercado de contenedores”, finalizó.

Este artículo está clasificado como: , ,

Comentarios

Para poder comentar debe iniciar su sesión:

INGRESAR