El problema que resuelve Kubernetes
Docker permite empaquetar una aplicación con todas sus dependencias en un contenedor. El problema surge cuando tenés muchos contenedores que gestionar:
- ¿Cómo los distribuís entre servidores?
- ¿Qué pasa si un contenedor cae?
- ¿Cómo actualizás sin downtime?
- ¿Cómo escalás automáticamente cuando sube el tráfico?
Kubernetes (K8s) es el sistema que resuelve todos esos problemas. Es un orquestador de contenedores: gestiona automáticamente dónde corren, cómo se escalan y cómo se recuperan ante fallas.
Los conceptos clave explicados simple
Pod
La unidad mínima de Kubernetes. Un Pod contiene uno o más contenedores que se ejecutan juntos.
Node (Nodo)
Un servidor que forma parte del clúster. Puede ser un Worker Node (corre las apps) o un Control Plane Node (gestiona el clúster).
Cluster
El conjunto de nodos gestionados por Kubernetes.
Deployment
Una declaración de “quiero X réplicas de esta app corriendo”. Kubernetes se encarga de que siempre haya esa cantidad.
Service
Una IP estable que apunta a un grupo de Pods, ya que los Pods se crean y destruyen dinámicamente.
Ingress
El punto de entrada HTTP/HTTPS al clúster. Funciona como un Load Balancer de nivel 7.
¿Cómo funciona en la práctica?
Describís el estado deseado en archivos YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-api
spec:
replicas: 3
selector:
matchLabels:
app: backend
template:
spec:
containers:
- name: backend
image: mi-app/backend:v2.1
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
Kubernetes lee esto y se encarga de:
- Crear 3 Pods del backend distribuidos en diferentes nodos
- Si uno cae, crear uno nuevo automáticamente
- Si hacés un deploy nuevo, actualizar gradualmente sin downtime
Lo que hace Kubernetes automáticamente
Auto-healing
Si un Pod cae o un nodo falla, Kubernetes crea reemplazos automáticamente.
Horizontal Pod Autoscaling
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
averageUtilization: 70
Si el tráfico sube, agrega más Pods. Si baja, los elimina.
Rolling Updates
Al hacer un deploy nuevo, Kubernetes reemplaza los Pods de a uno, verificando que cada nuevo Pod esté saludable antes de eliminar el viejo. Zero downtime por diseño.
¿Para qué tipo de empresa conviene?
Conviene adoptar Kubernetes cuando…
- Tenés microservicios: múltiples servicios independientes (autenticación, pagos, notificaciones, etc.)
- Necesitás alta disponibilidad real: deployments sin downtime, recuperación automática
- El tráfico es variable: picos y valles importantes donde el autoescalado ahorra plata
- Tenés un equipo DevOps: Kubernetes tiene una curva de aprendizaje pronunciada
- Múltiples entornos: desarrollo, staging y producción consistentes
No conviene cuando…
- Tenés una app monolítica simple: un VPS bien configurado es suficiente y mucho más simple
- Sos una startup en etapa temprana: el overhead de gestión mata la velocidad de iteración
- El equipo es pequeño: para un equipo de 2-3 devs sin DevOps, el costo operativo es alto
- El presupuesto es muy limitado: un clúster mínimo de producción necesita al menos 3 nodos
Kubernetes administrado vs auto-gestionado
Auto-gestionado (kubeadm)
Vos instalás y mantenés todo. Control total, pero toda la responsabilidad de actualizaciones y alta disponibilidad recae sobre vos.
Administrado (managed K8s)
El proveedor cloud gestiona el control plane. Vos solo administrás las cargas de trabajo. Ventajas:
- Control plane con alta disponibilidad automática
- Actualizaciones del clúster con un click
- Integración nativa con Load Balancers y almacenamiento
La curva de aprendizaje
Herramientas mínimas que necesitás conocer:
kubectl— CLI para interactuar con el clúster- YAML de manifests — para describir recursos
- Helm — gestor de paquetes para K8s
- Conceptos de redes en Kubernetes
Para la mayoría de los casos, un equipo puede tener un clúster productivo funcionando en 2-4 semanas de aprendizaje.
Alternativas más simples
- Docker Compose: para un solo servidor con múltiples servicios
- Docker Swarm: orquestación simple multi-nodo, mucho más fácil que K8s
- Nomad (HashiCorp): orquestador más simple que soporta contenedores y otros workloads
Si estás evaluando Kubernetes para tu empresa, consultanos — podemos ayudarte a decidir si es el camino correcto y diseñar la arquitectura.