¿Realmente necesita Kubernetes (K8)?

Ilustración que muestra los logotipos de Docker y Kubernetes

Kubernetes tiene fama de ser complicado. Si bien es una pieza de software fantástica, a veces los beneficios pueden no superar la complejidad adicional, especialmente para las pequeñas empresas que administran implementaciones simples. ¿Es lo suficientemente bueno Docker?

En qué es bueno Kubernetes

Kubernetes (K8s) se usa con Docker con mucha frecuencia en entornos profesionales, y esto puede hacer que parezca una versión mejorada o más organizada de Docker. Si bien esto es cierto en algunos aspectos, no es el propósito exacto de los K8.

Kubernetes es un «sistema de orquestación de contenedores» y es importante recordar lo que eso significa. El plano de control de Kubernetes maneja todos los detalles de «orquestar» qué contenedores se ejecutarán en qué nodos. Separa el hardware del software y permite que sus máquinas se ejecuten simplemente como nodos de trabajo, que idealmente es todo lo que deberían ser.

Kubernetes es fantástico cuando tiene una gran implementación de producción que debe poder escalarse, repararse y administrarse automáticamente. Cuando administra cientos de contenedores en muchos servidores, tener que lidiar con el equilibrio de carga y mover contenedores de un servidor a otro puede resultar molesto. K8s maneja esto por usted con opciones de configuración adicionales.

Gráfico que muestra la arquitectura del clúster de Kubernetes
Gráfico que muestra la arquitectura del clúster de Kubernetes

Kubernetes también es similar a la infraestructura como código (IaC), otro concepto útil. Le permite controlar sus servicios utilizando archivos de configuración que se pueden rastrear a través de Git. Esto puede mejorar drásticamente sus procesos de implementación al permitir que se rastreen a lo largo de las ramas, se prueben, se versionen y se reviertan si es necesario.

Lo que Kubernetes no es bueno en

El principal inconveniente de Kubernetes es que es notablemente complicado. Es posible que esto no sea un gran problema si ya está familiarizado con él, pero en cualquier caso, agrega más tiempo y complejidad para poner en funcionamiento sus aplicaciones. Es una gran herramienta para aprender, y una buena habilidad para tener. Pero funciona mejor con implementaciones más grandes, y si está ejecutando solo algunos servidores o algunos contenedores, es posible que el esfuerzo adicional de Kubernetes no valga la pena.

Kubernetes es un intermediario, pero siempre puedes ir a la vieja escuela y asumir el rol de orquestador tú mismo. Lo bueno de Docker es que facilita el proceso de creación y movimiento de aplicaciones con la creación de contenedores. Crear un nuevo servidor es relativamente simple y podría tener una nueva instancia EC2 de AWS ejecutando su contenedor en cuestión de minutos.

Sin Kubernetes, el único problema adicional que tiene es la necesidad de ejecutar comandos manualmente en sus servidores con el docker CLI o docker-compose API. Si necesita agregar un nuevo contenedor o mover un contenedor a otro nodo, deberá ejecutar esos comandos nuevamente. Esto puede ser un problema si, por ejemplo, experimenta un tráfico inesperadamente alto y necesita lanzar más instancias automáticamente. K8s resolvería ese problema. Pero en muchos casos, su tráfico puede ser relativamente estable, o al menos predecible semana a semana, especialmente para los servicios de back-end que realmente no necesitan escalar automáticamente.

Esencialmente, el propio Docker ya mejora en gran medida el proceso de ejecución de aplicaciones portátiles. Es una gran mejora con respecto a tener que instalar aplicaciones a la antigua usanza. Kubernetes mejora un poco a Docker y automatiza algunas tareas necesarias para redes grandes, pero agrega mucha complejidad.

El valor dependerá de cuánto tiempo realmente le ahorre. Si esta complejidad es aceptable para usted y termina ahorrándole tiempo, debe usar K8, pero si no es así, no debe perder el tiempo con él, especialmente cuando siempre puede simplemente cambiarlo más tarde si es necesario. .

¿Qué debería usar en su lugar?

Es bueno dar un paso atrás y ver para qué estás considerando realmente Kubernetes. Si desea que su red se escale automáticamente, administre sus recursos automáticamente y lance pods en diferentes servidores según la configuración, Kubernetes es una excelente herramienta para aprender. Si le preocupa la complejidad, los proveedores de nube como AWS tienen servicios gestionados de Kubernetes como EKSque puede manejar parte del trabajo sucio por usted, especialmente cuando se trata de recursos de administración y aprovisionamiento.

Sin embargo, si todo lo que desea es una forma de administrar sus contenedores más fácilmente o actualizarlos automáticamente, existen herramientas mucho más simples para el trabajo. Es posible que no tengan tantas funciones como Kubernetes, pero serán más simples y pueden ahorrarle tiempo.

Si desea escalar automáticamente ciertos servicios, casi siempre necesitará comunicarse con la API de un proveedor de la nube para aprovisionar nuevos recursos. Kubernetes puede manejar esto por usted para muchas plataformas, pero los servicios como AWS, Azure y GCP tienen servicios de contenedores simples con funciones de escalado automático. El servicio ECS de AWS se puede configurar fácilmente para escalar automáticamente para satisfacer la alta demanda.

RELACIONADO: Cómo comenzar con las implementaciones de contenedores de escalado automático en AWS ECS

Si necesita actualizar automáticamente los contenedores cada vez que envía nuevas versiones a su registro de Docker, puede usar un servicio como Watchtower. Se ejecuta en un nodo trabajador como un servicio de Docker en sí mismo, con el socket de Docker expuesto y observa los cambios. Una vez que se envía un nuevo contenedor, Watchtower reiniciará el contenedor. Esto le ahorrará tiempo al ejecutar reinicios de contenedores y es una buena alternativa a las actualizaciones de Kubernetes.

docker run --detach 
--name watchtower 
--volume /var/run/docker.sock:/var/run/docker.sock 
containrrr/watchtower

Si desea ser más organizado en general con la forma en que administra sus contenedores, debe considerar configurar un GUI de gestión de Docker como Portainer. Portainer es una GUI basada en web para administrar implementaciones de Docker. Funciona con varios nodos de trabajo, al igual que Kubernetes, pero le permite manejar el trabajo de orquestación, configurando contenedores en los servidores que desee.

Portainer es realmente fácil de configurar ya que está empaquetado como un contenedor. Si desea obtener más información, puede leer nuestra guía para configurarlo y trabajar con él.

RELACIONADO: Cómo comenzar con Portainer, una interfaz de usuario web para Docker

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad