Calculadora de capacity planning para Kubernetes y cloud
En equipos DevOps, SRE y platform engineering hispanohablantes, el capacity planning de Kubernetes sigue siendo una de las disciplinas donde la terminología técnica se mantiene casi íntegra en inglés — requests, limits, HPA, VPA, bin-packing, headroom — porque la documentación canónica (Google SRE Book, Kubernetes Docs, CNCF) vive en inglés y la comunidad práctica conversa mezclando ambos idiomas. Esta calculadora traduce la operación práctica al español, pero conserva los términos técnicos que usarías en un PR review o un postmortem.
Fórmulas base
Utilización = Demanda ÷ Capacidad Headroom objetivo = 30% (estándar SRE) Ley de Little: L = λ × W (concurrencia = tasa de llegada × tiempo en el sistema) Costo por unidad de trabajo = Costo cloud mensual ÷ Requests servidos al mes
La regla operacional del Google SRE Book es mantener la utilización P95 de CPU de un servicio por debajo de 70% en régimen sostenido, con headroom del 30% reservado para picos sostenidos, tolerancia a caída de zona (fail-over), deployments rolling y HPA reaccionando sin tail-latency spike. Esto aplica a workloads con latencia crítica (request/response). Para workloads batch asíncronos se puede operar más cerca del 85-90% sin degradar SLO.
Rightsize de requests y limits
El error más común — y el más caro — es definir requests con el valor pico observado en load test y limits con 2× o 3× ese valor 'por seguridad'. Eso reserva CPU y memoria que el scheduler no podrá usar para bin-packing y duplica la factura de EKS, GKE o AKS sin mejorar el servicio.
Protocolo práctico, alineado al post de Sysdig Kubernetes Capacity Planning (citado ampliamente en la comunidad SRE LatAm) y a las mejores prácticas de Datadog y Grafana Cloud:
- Mide el uso real de CPU y memoria P95 en los últimos 7 días por contenedor. No uses P50 ni el pico absoluto.
- Define
request = P95 observado. - Define
limit = request × 1.5para CPU (throttle tolerable) ylimit = request × 1.5–2.0para memoria (recuerda: superar el limit de memoria dispara OOMKill, no throttling). - Suma los requests totales del cluster × 1.3 como overhead para kube-system, daemonsets, coredns, cni, monitoring agent.
- Divide entre la capacidad asignable por nodo (ej. m5.xlarge en AWS entrega ~3.8 vCPU y ~14.5 GiB asignables) para estimar nodos.
- Suma 20-30% de buffer para HPA, spikes y mantenimiento de nodos (drain durante upgrades).
Ejemplo numérico. Cluster EKS con 200 pods, requests totales 380 vCPU y 1,200 GiB. Factor overhead 1.3 → 494 vCPU, 1,560 GiB. Nodos m5.xlarge (3.8 vCPU, 14.5 GiB asignables): 494 ÷ 3.8 = 130 nodos por CPU y 1,560 ÷ 14.5 = 108 nodos por memoria. El bottleneck es CPU → 130 nodos + buffer 25% = 163 nodos a régimen actual. Factura AWS on-demand: ~18,000 USD/mes. Migración a 40% Reserved Instances + 30% Savings Plans + 30% on-demand baja la factura a ~11,500 USD/mes, un ahorro anual de 78 KUSD sin tocar el workload.
HPA, VPA y cluster autoscaler
Los tres autoscalers de Kubernetes resuelven problemas distintos y se usan en capas:
- HPA (Horizontal Pod Autoscaler). Escala el número de réplicas del pod basándose en CPU, memoria o métricas custom (RPS, queue length vía Prometheus Adapter o KEDA). Umbral típico: 70% CPU o 70% de la métrica target.
- VPA (Vertical Pod Autoscaler). Recomienda o aplica automáticamente nuevos requests/limits basándose en uso histórico. Útil para workloads con patrón de uso estable pero mal dimensionados inicialmente.
- Cluster Autoscaler (o Karpenter en AWS). Agrega o quita nodos cuando los pods pendientes (pending) no caben o cuando hay nodos sub-utilizados que se pueden consolidar.
Regla práctica: HPA para elasticidad horaria, VPA para corrección de rightsize (en modo 'recommend' para evitar restarts en horas pico), Karpenter para manejo del pool de nodos. Combinar los tres sin coordinación produce oscilación (thrashing); por eso VPA típicamente se deja en modo Off o Recreate con ventana de mantenimiento, no en Auto.
Costo por request y unit economics cloud
FinOps — la disciplina que emergió 2020-2025 con presión del CFO sobre cloud spend — mide costo cloud por unidad de trabajo: costo por request, por transacción, por usuario activo. Si el costo por request sube mientras el tráfico cae, tu cluster tiene waste. Kubecost, OpenCost, Vantage, CloudHealth y Cast AI exponen estas métricas; la calculadora las estima con inputs de tu factura mensual y tu RPS promedio.
Según el State of Cloud Costs 2025 de Datadog y el State of FinOps 2025 de la FinOps Foundation, entre 30% y 45% del gasto en compute cloud es waste — capacidad reservada pero no usada, instancias sobredimensionadas, ambientes dev que nunca se apagan, snapshots huérfanos. El rightsize sistemático + reserved instances + spot para workloads tolerantes a interrupción suele recortar el 20-35% de la factura en 90 días sin impacto en SLO.