Coste de un clúster Kubernetes de pyme: la factura

Factura detallada de un clúster Kubernetes de pyme en OVHcloud y Scaleway: nodos, balanceador, almacenamiento, egress y las partidas olvidadas.

Manos de un adulto sosteniendo una calculadora blanca sobre una factura impresa colocada en un escritorio

Respuesta corta: un clúster Kubernetes gestionado que alberga de forma seria las aplicaciones de una pyme cuesta entre 80 y 250 € sin IVA al mes en OVHcloud o Scaleway, y el plano de control gratuito apenas influye. El grueso de la factura son tres nodos de trabajo (40 a 150 €), un balanceador de carga (12 a 20 €), block storage para los volúmenes persistentes y las copias de seguridad (10 a 40 €), más una serie de líneas que ningún simulador muestra: snapshots de volúmenes, object storage de respaldo, tráfico de salida, IP públicas, registro de imágenes. Comparado con tres VPS mal aprovechados, el clúster suele ser más barato a igual carga, pero solo si los requests reflejan el consumo real.

La pregunta aparece en cada preventa: «¿Kubernetes cuánto nos va a costar?». Y la respuesta que dan las páginas de tarifas siempre es falsa, porque anuncian un plano de control gratuito y un precio de nodo por hora, y luego dejan fuera la mitad de las líneas. Hemos retomado la factura real de clústeres que explotamos, partida por partida, para dar órdenes de magnitud utilizables en un presupuesto. Las tarifas citadas son las publicadas por los proveedores en la fecha de redacción; cambian, verifíquelas antes de firmar.

Manos de un adulto sosteniendo una calculadora blanca sobre una factura impresa colocada en un escritorio

Las seis líneas de una factura de Kubernetes gestionado

Empecemos por la estructura. En todos los proveedores europeos que utilizamos —OVHcloud Managed Kubernetes Service, Scaleway Kapsule— la factura se descompone siempre de la misma manera. Lo que cambia es el precio unitario y el nombre comercial.

Partida¿Se factura?Orden de magnitud mensual
Plano de control (API server, etcd)Gratuito en OVHcloud y Scaleway Kapsule, de pago en AWS EKS0 € o ~70 $ (EKS, 0,10 $/h)
Nodos de trabajo (instancias)Sí, por hora40 a 150 € para 3 nodos
Balanceador de carga / ingressSí, por unidad12 a 20 €
Block storage (PVC)Sí, por GB-mes5 a 25 €
Object storage (copias, registro)Sí, por GB-mes + peticiones3 a 15 €
Tráfico de salida (egress)Gratuito en OVHcloud y Scaleway, de pago en AWS/GCP0 € o 0,08-0,09 $/GB

Primera conclusión, y cuenta para una pyme: el plano de control gratuito y el egress no facturado en OVHcloud y Scaleway eliminan las dos partidas más imprevisibles de la factura. En AWS, el plano de control de EKS a 0,10 $ por hora y por clúster representa unos 73 $ al mes antes de la primera instancia, y el tráfico de salida se factura por GB más allá de la cuota gratuita. Para un sitio que sirve imágenes y vídeos, esta única línea puede superar el coste de los nodos.

La trampa de los entornos múltiples

Un clúster por entorno (dev, staging, producción) multiplica los balanceadores de carga, los nodos mínimos y los volúmenes. Con tres clústeres, solo los balanceadores ya cuestan 40 a 60 € al mes. La práctica que aplicamos: un clúster de producción y un clúster compartido para dev y staging, separados por namespaces, cuotas de recursos y NetworkPolicies. En EKS, donde el plano de control se factura, el ahorro es aún más claro.

La partida de nodos: la única que realmente cuenta

Los nodos representan típicamente entre el 60 y el 75 % de la factura. El dimensionamiento se juega ahí, y se calcula: no a ojo.

Partamos de una necesidad realista de pyme: una aplicación Next.js renderizada en el servidor, una API Node.js, un worker de procesamiento de imágenes, una base de datos PostgreSQL gestionada por un operador, más las herramientas (ingress controller, cert-manager, Prometheus, Velero, external-dns).

Cargarequests.cpurequests.memoryRéplicas
Front Next.js150 m512 Mi3
API Node.js200 m512 Mi2
Worker de imágenes300 m1 Gi1
PostgreSQL (primaria + réplica)500 m2 Gi2
Herramientas de sistema y supervisión~700 m~2,5 Gi—

Total solicitado: unos 2,9 vCPU y 9 Gi de memoria. A esto se añade la reserva del kubelet y de los DaemonSets en cada nodo (CNI, node-exporter, agente de logs): cuente un 10 a 15 % de CPU y algunos cientos de MiB por nodo no asignables.

Tres nodos de 4 vCPU / 8 Gi ofrecen 12 vCPU y 24 Gi brutos, es decir, grosso modo 10 vCPU y 21 Gi asignables. La carga se sostiene con un nodo entero de margen: es exactamente lo que hace falta para sobrevivir a la pérdida de un nodo o a una actualización por rotación sin que los pods se queden en Pending.

La regla que aplicamos: la suma de los requests de producción debe caber en N-1 nodos. Por debajo, una actualización de versión de Kubernetes se convierte en un incidente. Por encima, está pagando un nodo para nada.

En OVHcloud, tres instancias de uso general de 4 vCPU / 8 GB se sitúan en torno a 25-35 € sin IVA al mes cada una según la gama (B3, D2, C3), es decir, 75 a 105 € por las tres. En Scaleway, las gamas DEV y PLAY2/PRO2 permiten acercarse a los 20-40 € por nodo según la relación CPU/RAM. En ambos casos, la facturación es horaria: un nodo eliminado al mediodía no se factura por la tarde, lo que hace que los pools efímeros sean económicamente reales.

Tres ajustes que cambian la línea de nodos

  1. Dos pools separados. Un pool system de nodos pequeños (2 vCPU / 4 Gi) para el ingress, la supervisión y cert-manager, etiquetado y protegido con nodeSelector. Un pool apps con autoescalado para las cargas de aplicación. El pool de sistema no se mueve nunca, el pool de aplicaciones respira.
  2. Cluster autoscaler con un suelo honesto. minNodes: 2 en el pool de aplicaciones en días laborables, no 5 «por si acaso». El autoscaler añade un nodo en 2 a 4 minutos en OVHcloud y Scaleway; si su tráfico sube más rápido que eso, le corresponde al HPA y a KEDA tomar el relevo con pods ya listos, no a nodos sobredimensionados de forma permanente.
  3. requests medidos, no copiados. Un requests.cpu: 1 puesto por reflejo en seis despliegues son 6 vCPU reservados y facturados para un consumo real de 0,8 vCPU. Mida durante una semana con Prometheus y luego reajuste: es la única optimización de coste que no degrada nada.

Las líneas invisibles: almacenamiento, snapshots, egress, IP

Es aquí donde los presupuestos se descontrolan, porque nadie los anticipa.

Hombre escribiendo en un teclado frente a una pantalla en una sala de servidores iluminada en azul

Block storage. Los PVC se facturan por GB aprovisionado, no por GB utilizado. Un volumen de 100 Gi lleno al 8 % cuesta 100 Gi. En OVHcloud y Scaleway, el block storage de alto rendimiento se sitúa en torno a 0,08-0,10 € sin IVA por GB y mes; el almacenamiento «clásico» baja hacia los 0,04 €. Para un clúster de pyme: 50 Gi para Prometheus, 50 Gi para PostgreSQL, 20 Gi varios, o sea 120 Gi → 5 a 12 € al mes. Modesto, pero crece en silencio: cada StatefulSet eliminado deja su PVC atrás si la reclaimPolicy es Retain. Auditamos los PVC huérfanos una vez por trimestre, y siempre hay 20 a 80 Gi facturados en balde.

Snapshots y copias de seguridad. Un snapshot de volumen se almacena y se factura. Una política de copias de seguridad con Velero que conserve 30 días de snapshots diarios sobre 120 Gi de volúmenes puede superar el coste de los propios volúmenes. La buena práctica es la que describimos en el artículo sobre las copias de seguridad de Kubernetes con Velero: copias de nivel aplicativo (dumps de PostgreSQL comprimidos) hacia object storage de bajo coste para la retención larga, y snapshots de volúmenes únicamente para la retención corta. El object storage compatible con S3 ronda los 0,01 € sin IVA por GB y mes en ambos proveedores franceses: un orden de magnitud por debajo del block storage.

Balanceador de carga. Un balanceador de carga gestionado cuesta 12 a 20 € sin IVA al mes, a veces más con una segunda IP o con multizona. El error habitual: un Service de tipo LoadBalancer por aplicación. Cinco aplicaciones expuestas = cinco balanceadores = 60 a 100 € al mes, para un trabajo que un solo ingress controller o una sola Gateway hace perfectamente. Un único punto de entrada, enrutado por host y por ruta: es precisamente lo que permite la Gateway API con Kong o Traefik.

Tráfico de salida. Gratuito o muy ampliamente incluido en OVHcloud y Scaleway, facturado en AWS y GCP más allá de la cuota. Un sitio que sirve 2 TB de imágenes al mes desde EKS paga unos 160-180 $ de egress: más que sus nodos. Si su carga es de salida y voluminosa, la elección del proveedor se decide en esta línea antes que en cualquier otra consideración.

Registro de imágenes. Las imágenes Docker ocupan espacio y generan tráfico. Un registro GitLab autoalojado o la oferta del proveedor se factura por GB almacenado. Tres builds al día sin política de limpieza, y el registro pesa 200 GB en seis meses. Una regla de retención (conservar las 10 últimas etiquetas más las etiquetas semánticas) resuelve el problema; vea nuestra guía sobre las imágenes de un registro GitLab privado.

Tres facturas tipo, en euros

Estos son los órdenes de magnitud que utilizamos al presupuestar, sin incluir el servicio de explotación ni la base de datos gestionada.

PartidaClúster pequeño (1 app, staging incluido)Clúster de pyme estándarClúster multiaplicación
Nodos2 × 2 vCPU/4 Gi → ~30 €3 × 4 vCPU/8 Gi → ~90 €5 × 4 vCPU/8 Gi → ~150 €
Balanceador de carga1 → 13 €1 → 13 €2 → 26 €
Block storage40 Gi → 4 €120 Gi → 11 €300 Gi → 27 €
Object storage (copias)50 GB → 1 €200 GB → 3 €500 GB → 6 €
Registro + varios3 €6 €12 €
Total mensual sin IVA~51 €~123 €~221 €

Estos importes suponen un plano de control gratuito y un egress no facturado. Trasladados a AWS EKS, hay que añadir unos 73 $ de plano de control, el coste de las instancias EC2 y del NAT Gateway, más el egress: la misma carga supera fácilmente el doble.

Y una comparación honesta: la base de datos. Un clúster PostgreSQL gestionado de 2 vCPU / 8 GB con réplica y PITR en OVHcloud o Scaleway cuesta 100 a 200 € al mes, es decir, tanto como el clúster entero. Hemos detallado este arbitraje en el artículo sobre PostgreSQL en Kubernetes o en base de datos gestionada: la respuesta correcta depende de quién restaura a las 3 de la mañana, no del precio mostrado.

Mujer con camisa rosa sosteniendo un ordenador portátil frente a racks de servidores en un centro de datos

Medir antes de optimizar

Una optimización de coste sin medición es una apuesta. Bastan dos herramientas.

Las métricas nativas. Si ya tiene un Prometheus y un Grafana en el clúster, dispone del dato. La proporción que cuenta es la demanda frente al uso real:

sum(kube_pod_container_resource_requests{resource="cpu"})
  / sum(rate(container_cpu_usage_seconds_total{container!=""}[7d]))

Una proporción superior a 4 significa que reserva —y paga— cuatro veces lo que consume. Entre 1,5 y 2,5 es sano: queda margen para los picos sin desperdicio estructural.

Kubecost u OpenCost. OpenCost, proyecto de la CNCF, calcula un coste por namespace, despliegue y etiqueta a partir de los requests y de una tabla de tarifas que usted le proporciona. Es la forma más sencilla de responder a «cuánto cuesta la aplicación del cliente X» cuando varios proyectos comparten un clúster. Cuente media jornada de instalación y de calibrado de la tabla en un clúster OVHcloud o Scaleway, ya que las tarifas por defecto son las de los hiperescaladores.

Un detalle con su importancia contable: estas herramientas razonan en requests, no en uso. Es el referencial correcto, porque es precisamente la reserva la que desencadena la incorporación de un nodo y, por tanto, la factura.

Lo que no merece la pena

  • Las instancias spot/preemptibles para producción. Dividen el coste de los nodos, pero imponen un trabajo de tolerancia a las interrupciones que pocas aplicaciones de pyme justifican. Para un pool de workers batch idempotentes, sí. Para el front, no.
  • El downscale nocturno del clúster de producción. 8 horas de nodos ahorradas cada noche sobre 90 € de nodos son 30 € al mes frente a un riesgo de arranque en frío por la mañana. En cambio, en el clúster dev/staging es ganancia neta: un CronJob que lleve el pool a 0 nodos de 20 h a 8 h y durante el fin de semana elimina casi el 70 % de las horas facturadas.
  • Cambiar de proveedor por 15 €. El coste de migración (CI/CD, DNS, almacenamiento, pruebas de restauración) supera con creces el ahorro. Se cambia por una razón técnica o contractual, no por un descuento marginal.

Preguntas frecuentes

¿Un clúster Kubernetes cuesta más que tres VPS?

A igual capacidad bruta, algo más: el balanceador de carga y el object storage se añaden. A igual carga útil, a menudo menos, porque el clúster densifica: seis aplicaciones comparten tres nodos en lugar de ocupar seis VPS dimensionados cada uno para su pico. El verdadero sobrecoste de Kubernetes no está en la factura de cloud, está en el tiempo de explotación: actualizaciones de versión dos o tres veces al año, mantenimiento de los charts, vigilancia de las CVE.

¿El plano de control gratuito esconde límites?

Lo dimensiona el proveedor en función del número de nodos y no es ampliable a voluntad. En las ofertas gratuitas, el API server puede estar limitado en caudal de peticiones: un operador verboso o un controlador que entra en bucle lo nota. Es un argumento para evitar acumular operadores no indispensables, no para pagar un plano de control.

¿Cómo presupuestar un clúster para un ejercicio anual?

Tome el total mensual sin IVA de su perfil, añada un 20 % para el crecimiento del almacenamiento y de las copias de seguridad a doce meses, y después una línea separada para la explotación. Los compromisos anuales (instancias reservadas, descuentos por volumen) merecen la pena una vez estabilizada la arquitectura, no en un clúster que tiene tres meses.

¿Quién debe vigilar la factura?

Alguien, con nombre y apellidos. Configuramos una alerta de presupuesto en el proveedor al 120 % del importe previsto, y una revisión trimestral de los PVC huérfanos, los balanceadores de carga sin usar, los snapshots fuera de retención y las imágenes del registro. Una hora por trimestre, para un 20-30 % de ahorro recurrente en la mayoría de los casos que retomamos.

En resumen

  • Un clúster Kubernetes gestionado de pyme cuesta 80 a 250 € sin IVA al mes en OVHcloud o Scaleway: nodos, un balanceador de carga, block storage, object storage y registro.
  • El plano de control gratuito y el egress no facturado en los proveedores franceses eliminan las dos líneas más volátiles; en AWS EKS, añada ~73 $ de plano de control más el tráfico de salida.
  • Los nodos suponen el 60-75 % de la factura: dimensione para que los requests de producción quepan en N-1 nodos, con un pool de sistema fijo y un pool de aplicaciones con autoescalado.
  • Las líneas olvidadas son los PVC huérfanos, los snapshots fuera de retención, los balanceadores de carga multiplicados por aplicación y las imágenes del registro nunca limpiadas.
  • Mida la proporción entre requests y uso real con Prometheus u OpenCost antes de cualquier optimización: por encima de 4, está pagando cuatro veces su consumo.
  • El downscale nocturno merece la pena en dev/staging, no en producción; las instancias spot solo convienen a workers idempotentes.

¿Necesita un presupuesto para su contexto real o una auditoría de factura sobre un clúster existente? Nuestro equipo explota estas plataformas a diario: consulte nuestros servicios de infraestructura y explotación, nuestro enfoque del desarrollo de aplicaciones, o escríbanos directamente a través de la página de contacto.