¿Por qué la Orquestación de Contenedores?
Cuando ejecutas decenas o cientos de contenedores en producción, necesitas un sistema para gestionar el despliegue, escalado, redes y monitoreo de salud. Esto es lo que hacen los orquestadores de contenedores.
¿Qué Manejan los Orquestadores?
- Planificación: Decidir qué servidor ejecuta cada contenedor
- Escalado: Agregar o eliminar réplicas de contenedores según la demanda
- Balanceo de Carga: Distribuir tráfico entre contenedores
- Auto-recuperación: Reiniciar contenedores fallidos automáticamente
- Actualizaciones Progresivas: Desplegar nuevas versiones sin tiempo de inactividad
Ejemplo de Deployment en Kubernetes
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-api
spec:
replicas: 3
selector:
matchLabels:
app: mi-api
template:
metadata:
labels:
app: mi-api
spec:
containers:
- name: api
image: miapp:v1.0.0
ports:
- containerPort: 3000
resources:
limits:
memory: "512Mi"
cpu: "500m"
Comandos Esenciales de kubectl
# Aplicar configuración
kubectl apply -f deployment.yaml
# Obtener recursos
kubectl get pods
kubectl get deployments
kubectl get services
# Escalar un deployment
kubectl scale deployment mi-api --replicas=5
# Actualización progresiva
kubectl set image deployment/mi-api api=miapp:v2.0.0
# Revertir
kubectl rollout undo deployment/mi-api
Docker Compose vs Kubernetes
- 🐳 Docker Compose: Configuraciones multi-contenedor simples, desarrollo, despliegues pequeños
- ☸️ Kubernetes: Orquestación de grado productivo, auto-escalado, sistemas distribuidos grandes
- 💡 Comienza con Compose para desarrollo, migra a K8s cuando necesites orquestación de producción