Scaling Automatico en Kubernetes
Una de las mayores ventajas de Kubernetes es su capacidad de escalar automaticamente basandose en metricas. El Horizontal Pod Autoscaler (HPA) ajusta el numero de replicas de tu aplicacion segun CPU, memoria o metricas custom.
# hpa.yml - Auto-scaling basado en CPU
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: mi-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: mi-app
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Percent
value: 50
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Percent
value: 25
periodSeconds: 120Alta Disponibilidad
Para produccion, necesitas que tu aplicacion sobreviva fallos de nodos, zonas y hasta regiones:
| Tecnica | Que protege | Config |
|---|---|---|
| Replicas multiples | Fallo de pod individual | replicas: 3+ |
| PodDisruptionBudget | Mantenimiento de nodos | minAvailable: 2 |
| Anti-affinity | Fallo de nodo | Pods en nodos diferentes |
| Multi-AZ | Fallo de zona | topologySpreadConstraints |
| Multi-region | Fallo de region | Federation o multi-cluster |
# Pod Anti-Affinity: distribuir pods entre nodos
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values: ['mi-app']
topologyKey: kubernetes.io/hostname
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: mi-app🚀 Dato Clave
Minimo para produccion en LATAM: 3 replicas, PodDisruptionBudget, anti-affinity por nodo. Para SLAs de 99.9%+, agrega multi-AZ y monitoring con Prometheus.
El auto-scaling bien configurado te ahorra dinero en cloud y garantiza disponibilidad.