Volver al curso

DevOps Moderno: CI/CD, Docker y Kubernetes

leccion
8 / 12
advanced
30 horas
Kubernetes: Orquestacion de Contenedores a Escala

Kubernetes: Auto-Scaling y Alta Disponibilidad

Lectura
45 min~2 min lectura

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: 120

Alta Disponibilidad

Para produccion, necesitas que tu aplicacion sobreviva fallos de nodos, zonas y hasta regiones:

TecnicaQue protegeConfig
Replicas multiplesFallo de pod individualreplicas: 3+
PodDisruptionBudgetMantenimiento de nodosminAvailable: 2
Anti-affinityFallo de nodoPods en nodos diferentes
Multi-AZFallo de zonatopologySpreadConstraints
Multi-regionFallo de regionFederation 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.

Alta disponibilidad

El auto-scaling bien configurado te ahorra dinero en cloud y garantiza disponibilidad.