Docker vs Kubernetes: ¿en qué se diferencian?

Lección 3 del curso de Docker.

Docker frente a Kubernetes

Es muy común escuchar "Docker o Kubernetes" como si fueran alternativas, pero en realidad resuelven problemas distintos y se complementan. Docker se ocupa de crear y ejecutar contenedores; Kubernetes se ocupa de coordinar muchos contenedores repartidos entre muchos servidores.

Qué hace Docker

Docker trabaja a escala de una sola máquina: construye imágenes, ejecuta contenedores, gestiona sus redes y volúmenes locales. Es perfecto para desarrollo y para despliegues sencillos, pero no responde a preguntas como:

  • ¿Qué pasa si el servidor donde corre mi contenedor se cae?
  • ¿Cómo ejecuto 20 réplicas de mi aplicación repartidas en 5 servidores?
  • ¿Cómo actualizo la aplicación sin dejar el servicio caído?
  • ¿Cómo escalo automáticamente cuando llega más tráfico?

Qué hace Kubernetes

Kubernetes (también llamado K8s) es un orquestador de contenedores. Tú le describes el estado deseado ("quiero 5 réplicas de esta imagen siempre disponibles") y él se encarga de mantenerlo en un clúster de servidores:

  • Programación (scheduling): decide en qué servidor (nodo) arranca cada contenedor.
  • Autorrecuperación: si un contenedor o un nodo falla, lo vuelve a lanzar en otro sitio.
  • Escalado: sube o baja el número de réplicas, incluso de forma automática según la carga.
  • Actualizaciones progresivas (rolling updates): renueva la aplicación versión a versión sin interrumpir el servicio, con vuelta atrás automática si algo falla.
  • Descubrimiento de servicios y balanceo de carga: reparte el tráfico entre las réplicas.

Sus piezas básicas son los Pods (grupo mínimo de uno o más contenedores), los Deployments (que definen réplicas y actualizaciones) y los Services (que exponen los Pods con una dirección estable).

¿Compiten o se complementan?

Se complementan. Kubernetes no sustituye a Docker: de hecho, los contenedores que Kubernetes ejecuta se construyen normalmente como imágenes Docker. La relación es:

  • Docker = cómo se empaqueta y ejecuta un contenedor.
  • Kubernetes = cómo se gestionan miles de contenedores en producción.

¿Cuándo basta con Docker y cuándo necesitas Kubernetes?

Docker (y Docker Compose) es suficiente para proyectos personales, entornos de desarrollo y aplicaciones pequeñas alojadas en uno o pocos servidores. Kubernetes tiene sentido cuando operas muchos servicios, necesitas alta disponibilidad real, escalado automático o despliegues sin parada. Su coste es una curva de aprendizaje y una complejidad operativa notable: no lo adoptes antes de necesitarlo.

Un camino razonable para aprender

Si estás empezando, el orden más sensato es aprender primero Docker, después Docker Compose y solo más adelante Kubernetes. Cada paso se apoya en el anterior: los conceptos de imagen, contenedor, red y volumen son exactamente los mismos, y Kubernetes añade capas para repartirlos entre varios servidores.

Para practicar Kubernetes sin infraestructura cara puedes usar versiones ligeras pensadas para un solo equipo, que permiten experimentar con despliegues, servicios y escalado en tu ordenador. Aun así, ten presente que para la mayoría de proyectos personales y pequeños negocios el coste de mantener un clúster supera los beneficios.

Una buena señal de que quizá necesitas Kubernetes es que ya tienes muchos servicios, varios servidores y problemas reales de disponibilidad o de despliegues que no puedes resolver con Compose. Si ese no es tu caso, concéntrate en dominar Docker y sus buenas prácticas: es una inversión que te servirá igualmente si algún día das el salto.

Te puede interesar

Comentarios

Entradas populares de este blog

Cómo instalar Hermes Agent en Docker y conectarlo con tu suscripción de Antigravity

Docker: OpenBao - para qué sirve y cómo instalarlo

Cómo funciona Docker Compose