Qué hace Kubernetes
Un contenedor de Docker en una máquina se ejecuta a mano sin problema. Cincuenta contenedores repartidos en diez máquinas no: hay que reiniciarlos cuando fallan, moverlos cuando una máquina se cae, repartir el tráfico entre ellos y actualizarlos sin cortes. Kubernetes (abreviado K8s) es el sistema que se encarga de esa gestión por ti.
¿Qué es Kubernetes?
Kubernetes es una plataforma de código abierto para la orquestación de contenedores. Fue creada por Google en 2014 basándose en 15 años de experiencia gestionando contenedores a gran escala, y ahora es mantenida por la Cloud Native Computing Foundation (CNCF).
La orquestación, en concreto: una orquesta sinfónica necesita un director que mantenga a tiempo a decenas de músicos.
- Los músicos son tus contenedores, cada uno sabe tocar su instrumento
- El director de orquesta es Kubernetes, que coordina a todos los músicos
- La partitura es la configuración que define cómo deben tocar juntos
Sin un director, cada músico tocaría por su cuenta. Con Kubernetes, todos los contenedores trabajan en armonía para hacer funcionar tu aplicación.
El Nombre Kubernetes
El nombre proviene del griego κυβερνήτης (kybernetes), que significa “timonel” o “piloto”. El logo con el timón de siete radios representa precisamente este concepto. La abreviación K8s surge del hecho de que hay 8 letras entre la “K” y la “s”.
¿Por Qué Se Necesita Kubernetes?
Docker resuelve el problema de crear y ejecutar contenedores individuales. Pero en producción las cosas se complican:
- ¿Qué pasa si un contenedor falla a las 3 de la madrugada?
- ¿Cómo distribuyes el tráfico entre 10 instancias de la misma aplicación?
- ¿Cómo actualizas la aplicación sin tiempo de inactividad?
- ¿Cómo gestionas 50 microservicios que necesitan comunicarse entre sí?
Kubernetes responde a todas estas preguntas.
Docker vs Kubernetes: no son alternativas
Un malentendido común es pensar que Kubernetes reemplaza a Docker. En realidad trabajan juntos:
| Herramienta | Rol | Analogía |
|---|---|---|
| Docker | Crea y ejecuta contenedores individuales | El músico que toca el violín |
| Kubernetes | Orquesta y gestiona muchos contenedores | El director de orquesta |
Kubernetes puede usar Docker (u otros runtimes como containerd) para ejecutar los contenedores. No tienes que elegir entre uno u otro: los usas ambos.
Para Qué Sirve Kubernetes: 6 Problemas que Resuelve
1. Self-Healing: Contenedores que Se Reparan Solos
Si un contenedor falla, Kubernetes lo detecta y automáticamente inicia uno nuevo. No hace falta que alguien esté despierto a las 3 de la madrugada para reiniciar manualmente los servicios.
| |
2. Escalado Automático
¿Tienes un pico de tráfico? Kubernetes puede aumentar automáticamente el número de contenedores. ¿El tráfico baja? Los reduce para ahorrar recursos.
| |
3. Balanceo de Carga Integrado
Kubernetes distribuye automáticamente el tráfico entre todos los contenedores disponibles. Si un contenedor está sobrecargado o no responde, el tráfico se redirige a los demás.
4. Rolling Updates: Actualizaciones Sin Tiempo de Inactividad
Cuando despliegas una nueva versión, Kubernetes:
- Inicia los nuevos contenedores con la versión actualizada
- Verifica que funcionen correctamente
- Gradualmente transfiere el tráfico a los nuevos contenedores
- Termina los contenedores antiguos
Si algo sale mal, puede hacer rollback automático a la versión anterior.
5. Service Discovery
En un sistema con muchos microservicios, ¿cómo encuentra el servicio A al servicio B? Kubernetes proporciona un sistema DNS interno: cada servicio tiene un nombre y Kubernetes se encarga de traducirlo a la dirección correcta.
| |
6. Gestión de Secrets y Configuraciones
Contraseñas, API keys, configuraciones: Kubernetes los gestiona de forma segura y los inyecta en los contenedores sin hardcodearlos en el código.
| |
Conceptos de Kubernetes: Pod, Node, Cluster, Deployment, Service
Pod
El Pod es la unidad básica de Kubernetes. Contiene uno o más contenedores que comparten red y almacenamiento. En la mayoría de los casos, un Pod contiene un solo contenedor.
Node
Un Node es una máquina (física o virtual) que ejecuta los Pods. Un cluster de Kubernetes típicamente tiene varios Nodes para garantizar alta disponibilidad.
Cluster
El Cluster es el conjunto de todos los Nodes gestionados por Kubernetes. Incluye:
- Control Plane: el “cerebro” que toma decisiones (dónde colocar los Pods, cuándo escalarlos, etc.)
- Worker Nodes: las máquinas que realmente ejecutan los contenedores
Deployment
Un Deployment describe el estado deseado de tu aplicación: qué imagen usar, cuántas réplicas, cómo actualizarla. Kubernetes se asegura de que el estado real corresponda siempre al estado deseado.
Service
Un Service expone los Pods a la red. Proporciona una dirección IP estable y balanceo de carga, incluso cuando los Pods subyacentes cambian.
| |
Kubernetes vs Docker Swarm
Docker tiene su propio orquestador integrado: Docker Swarm. ¿Cuál es la diferencia?
| Característica | Kubernetes | Docker Swarm |
|---|---|---|
| Complejidad | Alta | Baja |
| Curva de aprendizaje | Pronunciada | Suave |
| Funcionalidades | Muy ricas | Esenciales |
| Ecosistema | Enorme | Limitado |
| Escalado | Muy potente | Bueno |
| Adopción empresarial | Estándar de facto | Nicho |
| Configuración mínima | Compleja | Simple |
Cuándo elegir Docker Swarm:
- Proyectos pequeños/medianos
- Equipos con poca experiencia en orquestación
- Necesidad de empezar rápidamente
Cuándo elegir Kubernetes:
- Proyectos empresariales o en crecimiento
- Necesidad de funcionalidades avanzadas
- Equipo dispuesto a invertir en aprendizaje
- Requisitos de escalado importantes
Cuándo NO Usar Kubernetes
Kubernetes no siempre es la respuesta correcta. Evítalo si:
- Tienes pocos contenedores: gestionar 2-3 contenedores con K8s es como usar un camión para llevar la compra
- El equipo es pequeño: la complejidad operacional puede superar los beneficios
- La aplicación es monolítica: K8s brilla con los microservicios
- No tienes requisitos de escalado: si el tráfico es constante y predecible, podrías no necesitarlo
- Presupuesto limitado: los clusters de Kubernetes tienen costes operacionales significativos
Alternativas Más Simples
| Escenario | Alternativa a Kubernetes |
|---|---|
| Pocos contenedores, un servidor | Docker Compose |
| Orquestación simple | Docker Swarm |
| Serverless | AWS Lambda, Azure Functions |
| PaaS gestionado | Heroku, Railway, Render |
En un solo host, Docker Compose cubre casi todo aquello por lo que la gente recurre primero a Kubernetes.
Cómo Empezar con Kubernetes
Si quieres explorar Kubernetes sin volverte loco, aquí tienes un camino gradual:
1. Aprende los Fundamentos de Docker
Si aún no lo has hecho, empieza con Docker. Kubernetes orquesta contenedores, así que primero necesitas saber crearlos.
2. Experimenta en Local con Minikube
Minikube crea un cluster de Kubernetes en tu ordenador. Perfecto para aprender sin costes de cloud.
| |
3. Explora kubectl
kubectl es el comando para interactuar con Kubernetes. Aprende las operaciones básicas:
| |
4. Prueba un Cluster Gestionado
Cuando estés listo para producción, usa un servicio gestionado:
- Google Kubernetes Engine (GKE)
- Amazon Elastic Kubernetes Service (EKS)
- Azure Kubernetes Service (AKS)
Estos servicios gestionan el Control Plane por ti, reduciendo la complejidad operacional.
¿Necesitas Kubernetes de verdad?
Kubernetes compensa su complejidad cuando ejecutas muchos servicios, en más de una máquina, con un uptime que importa. El self-healing, el autoescalado y los rolling updates son difíciles de construir por tu cuenta, y Kubernetes te los da hechos.
Por debajo de ese punto cuesta más de lo que devuelve. Un puñado de contenedores en un servidor va bien con Docker Compose. Un cluster pequeño con necesidades modestas va bien con Docker Swarm. Pasa a Kubernetes cuando esos se queden cortos, no antes.
Para aprenderlo sin pagar un cluster de producción, empieza con Minikube en tu propia máquina y ve trabajando los conceptos de arriba de uno en uno.