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.
Comentarios
Publicar un comentario