Escalado horizontal y vertical de Pods en Kubernetes: una guía práctica
Kubernetes ofrece mecanismos potentes para gestionar y escalar aplicaciones contenerizadas. Dos pilares clave son el Horizontal Pod Autoscaler HPA y el Vertical Pod Autoscaler VPA. Ambos ajustan dinámicamente los recursos de tu aplicación según la demanda para equilibrar rendimiento y coste. En Q2BSTUDIO, expertos en software a medida, aplicaciones a medida, servicios cloud AWS y Azure, inteligencia artificial e ingeniería de plataformas, aplicamos estas técnicas en entornos productivos de clientes exigentes. Si estás migrando o optimizando cargas en la nube, puedes apoyarte en nuestros servicios cloud en AWS y Azure.
1. Introducción
En arquitecturas de microservicios modernas el tráfico es irregular y difícil de predecir. Escalar pods a mano para acompañar los picos y valles consume tiempo y es propenso a errores. HPA y VPA automatizan esa tarea para mantener el rendimiento sin sobredimensionar la infraestructura.
HPA en una frase: ajusta el número de réplicas de pods según métricas como CPU, memoria o métricas personalizadas, incrementando réplicas con carga y reduciéndolas cuando baja. Su objetivo es mantener una utilización media objetivo. VPA en una frase: recomienda o actualiza automáticamente las solicitudes y límites de CPU y memoria de cada pod, sin cambiar el número de réplicas, para que cada pod tenga los recursos adecuados.
2. Prerrequisitos
Cluster Kubernetes 1.8 o superior, preferiblemente administrado EKS, GKE o AKS para simplificar operación; servidor de métricas metrics-server instalado para exponer uso de CPU y memoria al Resource Metrics API se puede instalar con kubectl apply -f y el manifiesto oficial del proyecto; adaptador de métricas personalizadas opcional como Prometheus Adapter si vas a escalar por RPS, latencia o longitud de cola; componentes de VPA desplegados y su admission controller habilitado según la versión de tu cluster.
3. Horizontal Pod Autoscaler HPA
Características principales: escalado basado en recursos CPU y memoria; soporte de métricas personalizadas y externas; combinación de múltiples métricas; objetivos de utilización configurable por recurso.
Ejemplo de HPA que escala un Deployment my-app por CPU: apiVersion autoscaling/v2; kind HorizontalPodAutoscaler; metadata name my-app-hpa; spec scaleTargetRef apiVersion apps/v1 kind Deployment name my-app; minReplicas 2; maxReplicas 10; metrics - type Resource resource name cpu target type Utilization averageUtilization 70
Explicación rápida: scaleTargetRef indica el recurso escalable que gobierna; minReplicas y maxReplicas fijan el rango; metrics define la señal de escalado en este caso CPU; averageUtilization marca el objetivo medio de utilización 70 por ciento.
Ventajas: escalado automático según carga; mejor utilización de recursos; alta disponibilidad al absorber picos; operaciones simplificadas. Desventajas: latencia de reacción ante picos muy bruscos; riesgo de sobreescalado si el objetivo es demasiado bajo; depende de requests bien definidos en los pods; potencial efecto manada si muchas réplicas compiten por dependencias compartidas.
4. Vertical Pod Autoscaler VPA
Características principales: ajuste automático de requests y limits de CPU y memoria; modo recomendación sin aplicar cambios; modo auto que actualiza recursos; modo off para desactivar; histórico de consumo para afinar sugerencias.
Ejemplo de VPA para el Deployment my-app: apiVersion autoscaling.k8s.io/v1; kind VerticalPodAutoscaler; metadata name my-app-vpa; spec targetRef apiVersion apps/v1 kind Deployment name my-app; updatePolicy updateMode Auto
Modos de actualización: Off solo recomienda; Initial fija recursos al crear el pod y no los toca después; Recreate evacúa y recrea para aplicar cambios implicando una pausa; Auto intenta actualizar sin reinicio cuando es seguro y si no recrea el pod. Aplica el manifiesto con kubectl apply -f vpa.yaml.
Ventajas: asignación óptima por pod que reduce desperdicio y evita OOM y throttling; menos ajuste manual; datos reales para planificación de capacidad. Desventajas: posibles reinicios para aplicar cambios con impacto temporal; riesgo de sobredimensionar si no se monitoriza; mayor complejidad; puede chocar con HPA si ambos usan CPU o memoria como señal principal.
5. HPA y VPA juntos
Funcionan mejor en tándem si se separan responsabilidades: VPA optimiza recursos por pod requests y limits y HPA regula el número de réplicas. Recomendación práctica si usas ambos, deja a VPA CPU y memoria y alimenta a HPA con métricas de negocio o personalizadas como RPS, latencia p95 o profundidad de cola; así evitas bucles o decisiones contradictorias.
6. Buenas prácticas operativas
Define requests y limits realistas antes de activar HPA; establece ventanas de estabilización y cooldown para evitar oscilaciones; usa PodDisruptionBudgets y readinessProbes para minimizar impacto en escalados y recreaciones; si estás en la nube acompaña con Cluster Autoscaler para que los nodos también crezcan y decrezcan; prueba con cargas sintéticas y canary antes de activar modos Auto; monitoriza con Prometheus y paneles de observabilidad midiendo tasa de decisiones de HPA, pending pods, throttling y OOMKills; documenta y versiona tus políticas de autoscaling junto con el código.
7. Conclusión
HPA ajusta réplicas frente a la demanda y VPA asigna los recursos correctos a cada pod. Juntos ayudan a alcanzar rendimiento, elasticidad y eficiencia de costes en Kubernetes. En Q2BSTUDIO acompañamos a empresas en su adopción de cloud nativo con diseño de arquitecturas, automatización de procesos, CI CD y seguridad, además de soluciones de inteligencia artificial, agentes IA y analítica avanzada. Si buscas acelerar tus iniciativas con servicios cloud aws y azure, modernizar plataformas o impulsar tu estrategia de datos e informes con power bi y servicios inteligencia de negocio, o reforzar tu ciberseguridad y pentesting, nuestro equipo puede ayudarte con software a medida e ia para empresas alineada al negocio.