Coût d'un cluster Kubernetes de PME : la facture

Facture détaillée d'un cluster Kubernetes de PME chez OVHcloud et Scaleway : nœuds, load balancer, stockage, egress, et les postes qu'on oublie.

Mains d'un adulte tenant une calculatrice blanche au-dessus d'une facture imprimée posée sur un bureau

Réponse courte : un cluster Kubernetes managé qui héberge sérieusement les applications d'une PME coûte entre 80 et 250 € HT par mois chez OVHcloud ou Scaleway, et le plan de contrôle gratuit n'y est pour presque rien. Le gros de la facture, c'est trois nœuds de travail (40 à 150 €), un load balancer (12 à 20 €), du block storage pour les volumes persistants et les sauvegardes (10 à 40 €), plus une série de lignes qu'aucun simulateur n'affiche : snapshots de volumes, object storage de sauvegarde, trafic sortant, IP publiques, registre d'images. Comparé à trois VPS mal exploités, le cluster est souvent moins cher à charge égale — mais seulement si les requests reflètent la consommation réelle.

La question revient à chaque avant-vente : « Kubernetes, ça va nous coûter combien ? » Et la réponse donnée par les pages tarifaires est toujours fausse, parce qu'elles annoncent un plan de contrôle gratuit et un prix de nœud à l'heure, puis laissent de côté la moitié des lignes. Nous avons repris la facture réelle de clusters que nous exploitons, poste par poste, pour donner des ordres de grandeur utilisables dans un budget. Les tarifs cités sont ceux publiés par les fournisseurs à la date de rédaction ; ils bougent, vérifiez-les avant de signer.

Mains d'un adulte tenant une calculatrice blanche au-dessus d'une facture imprimée posée sur un bureau

Les six lignes d'une facture Kubernetes managé

Commençons par la structure. Chez tous les fournisseurs européens que nous utilisons — OVHcloud Managed Kubernetes Service, Scaleway Kapsule — la facture se décompose toujours de la même façon. Ce qui change, c'est le prix unitaire et le nom commercial.

PosteFacturé ?Ordre de grandeur mensuel
Plan de contrôle (API server, etcd)Gratuit chez OVHcloud et Scaleway Kapsule, payant chez AWS EKS0 € ou ~70 $ (EKS, 0,10 $/h)
Nœuds de travail (instances)Oui, à l'heure40 à 150 € pour 3 nœuds
Load balancer / ingressOui, à l'unité12 à 20 €
Block storage (PVC)Oui, au Go-mois5 à 25 €
Object storage (sauvegardes, registre)Oui, au Go-mois + requêtes3 à 15 €
Trafic sortant (egress)Gratuit chez OVHcloud et Scaleway, payant chez AWS/GCP0 € ou 0,08–0,09 $/Go

Première conclusion, et elle compte pour une PME française : le plan de contrôle gratuit et l'egress non facturé chez OVHcloud et Scaleway suppriment les deux postes les plus imprévisibles de la facture. Sur AWS, le plan de contrôle EKS à 0,10 $ par heure et par cluster représente environ 73 $ par mois avant la première instance, et le trafic sortant se facture au Go au-delà du quota gratuit. Pour un site qui sert des images et des vidéos, cette seule ligne peut dépasser le coût des nœuds.

Le piège des environnements multiples

Un cluster par environnement (dev, staging, production) multiplie les load balancers, les nœuds minimaux et les volumes. Sur trois clusters, les seuls load balancers coûtent déjà 40 à 60 € par mois. La pratique que nous appliquons : un cluster de production, un cluster partagé pour dev et staging, séparés par namespaces, quotas de ressources et NetworkPolicies. Sur EKS, où le plan de contrôle est facturé, l'économie est encore plus nette.

Le poste nœuds : le seul qui compte vraiment

Les nœuds représentent typiquement 60 à 75 % de la facture. Le dimensionnement se joue donc là, et il se calcule — pas au doigt mouillé.

Partons d'un besoin réaliste de PME : une application Next.js rendue côté serveur, une API Node.js, un worker de traitement d'images, une base PostgreSQL gérée par un opérateur, plus l'outillage (ingress controller, cert-manager, Prometheus, Velero, external-dns).

Chargerequests.cpurequests.memoryRéplicas
Front Next.js150 m512 Mi3
API Node.js200 m512 Mi2
Worker images300 m1 Gi1
PostgreSQL (primaire + réplica)500 m2 Gi2
Outillage système et supervision~700 m~2,5 Gi—

Total demandé : environ 2,9 vCPU et 9 Gi de mémoire. À cela s'ajoute la réserve du kubelet et des DaemonSets sur chaque nœud (CNI, node-exporter, agent de logs) — comptez 10 à 15 % de CPU et quelques centaines de Mio par nœud non allouables.

Trois nœuds à 4 vCPU / 8 Gi offrent 12 vCPU et 24 Gi bruts, soit grosso modo 10 vCPU et 21 Gi allouables. On tient la charge avec un nœud entier de marge : c'est exactement ce qu'il faut pour survivre à la perte d'un nœud ou à une mise à jour par rotation sans que les pods restent en Pending.

La règle que nous appliquons : la somme des requests de production doit tenir sur N-1 nœuds. En dessous, une mise à jour de version Kubernetes devient un incident. Au-dessus, vous payez un nœud pour rien.

Chez OVHcloud, trois instances de type général à 4 vCPU / 8 Go se situent autour de 25 à 35 € HT par mois chacune selon la gamme (B3, D2, C3), soit 75 à 105 € pour les trois. Chez Scaleway, les gammes DEV et PLAY2/PRO2 permettent d'approcher les 20 à 40 € par nœud selon le ratio CPU/RAM. Dans les deux cas, la facturation est horaire : un nœud supprimé à midi n'est pas facturé l'après-midi, ce qui rend les pools éphémères économiquement réels.

Trois réglages qui changent la ligne nœuds

  1. Deux pools séparés. Un pool system de petits nœuds (2 vCPU / 4 Gi) pour l'ingress, la supervision et cert-manager, taggé et protégé par des nodeSelector. Un pool apps autoscalé pour les charges applicatives. Le pool système ne bouge jamais, le pool applicatif respire.
  2. Cluster autoscaler avec un plancher honnête. minNodes: 2 sur le pool applicatif en semaine, pas 5 « au cas où ». L'autoscaler ajoute un nœud en 2 à 4 minutes chez OVHcloud et Scaleway ; si votre trafic monte plus vite que ça, c'est au HPA et à KEDA de prendre le relais avec des pods déjà prêts, pas à des nœuds surdimensionnés en permanence.
  3. Des requests mesurées, pas copiées. Un requests.cpu: 1 posé par réflexe sur six déploiements, c'est 6 vCPU réservés et facturés pour une consommation réelle de 0,8 vCPU. Mesurez sur une semaine avec Prometheus, puis réajustez : c'est la seule optimisation de coût qui ne dégrade rien.

Les lignes invisibles : stockage, snapshots, egress, IP

C'est là que les budgets dérapent, parce que personne ne les anticipe.

Homme tapant sur un clavier devant un écran dans une salle serveurs éclairée en bleu

Block storage. Les PVC se facturent au Go provisionné, pas au Go utilisé. Un volume de 100 Gi rempli à 8 % coûte 100 Gi. Chez OVHcloud et Scaleway, le block storage haute performance se situe autour de 0,08 à 0,10 € HT par Go et par mois ; le stockage « classique » descend vers 0,04 €. Pour un cluster de PME : 50 Gi pour Prometheus, 50 Gi pour PostgreSQL, 20 Gi divers, soit 120 Gi → 5 à 12 € par mois. Modeste, mais il grossit en silence : chaque StatefulSet supprimé laisse son PVC derrière lui si la reclaimPolicy est Retain. Nous auditons les PVC orphelins une fois par trimestre, c'est systématiquement 20 à 80 Gi facturés pour rien.

Snapshots et sauvegardes. Un snapshot de volume est stocké et facturé. Une politique de sauvegarde Velero qui conserve 30 jours de snapshots quotidiens sur 120 Gi de volumes peut dépasser le coût des volumes eux-mêmes. La bonne pratique est celle que nous décrivons dans l'article sur les sauvegardes Kubernetes avec Velero : sauvegardes applicatives (dumps PostgreSQL compressés) vers de l'object storage peu coûteux pour la rétention longue, snapshots de volumes pour la rétention courte uniquement. L'object storage S3 compatible tourne autour de 0,01 € HT par Go et par mois chez les deux fournisseurs français — un ordre de grandeur sous le block storage.

Load balancer. Un load balancer managé coûte 12 à 20 € HT par mois, parfois plus avec une seconde IP ou du multi-zone. L'erreur courante : un Service de type LoadBalancer par application. Cinq applications exposées = cinq load balancers = 60 à 100 € par mois, pour un travail qu'un seul ingress controller ou une seule Gateway fait très bien. Un unique point d'entrée, du routage par hôte et par chemin : c'est précisément ce que permet la Gateway API avec Kong ou Traefik.

Trafic sortant. Gratuit ou très largement inclus chez OVHcloud et Scaleway, facturé chez AWS et GCP au-delà du quota. Un site qui sert 2 To d'images par mois depuis EKS paie environ 160 à 180 $ d'egress — davantage que ses nœuds. Si votre charge est sortante et volumineuse, le choix du fournisseur se joue sur cette ligne avant toute autre considération.

Registre d'images. Les images Docker occupent de l'espace et génèrent du trafic. Un registre GitLab auto-hébergé ou l'offre du fournisseur se facture au Go stocké. Trois builds par jour sans politique de nettoyage, et le registre pèse 200 Go en six mois. Une règle de rétention (garder les 10 derniers tags plus les tags sémantiques) règle le problème ; voir notre guide sur les images d'un registre GitLab privé.

Trois factures type, en euros

Voici les ordres de grandeur que nous utilisons en chiffrage, hors prestation d'exploitation et hors base de données managée.

PostePetit cluster (1 app, staging inclus)Cluster PME standardCluster multi-apps
Nœuds2 × 2 vCPU/4 Gi → ~30 €3 × 4 vCPU/8 Gi → ~90 €5 × 4 vCPU/8 Gi → ~150 €
Load balancer1 → 13 €1 → 13 €2 → 26 €
Block storage40 Gi → 4 €120 Gi → 11 €300 Gi → 27 €
Object storage (sauvegardes)50 Go → 1 €200 Go → 3 €500 Go → 6 €
Registre + divers3 €6 €12 €
Total mensuel HT~51 €~123 €~221 €

Ces montants supposent un plan de contrôle gratuit et un egress non facturé. Transposés sur AWS EKS, il faut ajouter environ 73 $ de plan de contrôle, le coût des instances EC2 et NAT Gateway, plus l'egress : la même charge dépasse facilement le double.

À comparer honnêtement : la base de données. Un cluster PostgreSQL managé à 2 vCPU / 8 Go avec réplica et PITR chez OVHcloud ou Scaleway coûte 100 à 200 € par mois, soit autant que le cluster entier. Nous avons détaillé cet arbitrage dans l'article sur PostgreSQL sur Kubernetes ou en base managée : la bonne réponse dépend de qui restaure à 3 h du matin, pas du prix affiché.

Femme en chemise rose tenant un ordinateur portable devant des baies de serveurs dans un centre de données

Mesurer avant d'optimiser

Une optimisation de coût sans mesure est un pari. Deux outils suffisent.

Les métriques natives. Si vous avez déjà un Prometheus et un Grafana sur le cluster, vous disposez de la donnée. Le ratio qui compte est la demande sur l'usage réel :

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

Un ratio supérieur à 4 signifie que vous réservez — et payez — quatre fois ce que vous consommez. Entre 1,5 et 2,5, c'est sain : il reste de la marge pour les pics sans gaspillage structurel.

Kubecost ou OpenCost. OpenCost, projet de la CNCF, calcule un coût par namespace, déploiement et label à partir des requests et d'une grille tarifaire que vous fournissez. C'est la façon la plus simple de répondre à « combien coûte l'application du client X » quand plusieurs projets partagent un cluster. Comptez une demi-journée d'installation et de calibrage de la grille sur un cluster OVHcloud ou Scaleway, les tarifs par défaut étant ceux des hyperscalers.

Un détail qui a son importance comptable : ces outils raisonnent en requests, pas en usage. C'est le bon référentiel, parce que c'est bien la réservation qui déclenche l'ajout d'un nœud et donc la facture.

Ce qui ne vaut pas le détour

  • Les instances spot/préemptibles pour la production. Elles divisent le coût des nœuds, mais imposent un travail de tolérance aux interruptions que peu d'applications de PME justifient. Pour un pool de workers batch idempotents, oui. Pour le front, non.
  • Le downscale nocturne du cluster de production. 8 heures de nœuds économisées par nuit sur 90 € de nœuds, ce sont 30 € par mois contre un risque de démarrage à froid le matin. En revanche, sur le cluster dev/staging, c'est du gain net : un CronJob qui ramène le pool à 0 nœud de 20 h à 8 h et le week-end supprime près de 70 % des heures facturées.
  • Changer de fournisseur pour 15 €. Le coût de migration (CI/CD, DNS, stockage, tests de restauration) dépasse largement l'économie. On change pour une raison technique ou contractuelle, pas pour un rabais marginal.

Questions fréquentes

Un cluster Kubernetes coûte-t-il plus cher que trois VPS ?

À capacité brute égale, légèrement — le load balancer et le stockage objet sont en plus. À charge utile égale, souvent moins, parce que le cluster densifie : six applications se partagent trois nœuds au lieu d'occuper six VPS dimensionnés chacun pour son pic. Le vrai surcoût de Kubernetes n'est pas sur la facture cloud, il est dans le temps d'exploitation : mises à jour de version deux à trois fois par an, maintenance des charts, veille sur les CVE.

Le plan de contrôle gratuit cache-t-il des limites ?

Il est dimensionné par le fournisseur en fonction du nombre de nœuds et il n'est pas extensible à volonté. Sur les offres gratuites, l'API server peut être limité en débit de requêtes : un opérateur bavard ou un contrôleur qui boucle s'en ressent. C'est un argument pour éviter d'empiler les opérateurs non indispensables, pas pour payer un plan de contrôle.

Comment chiffrer un cluster pour un budget annuel ?

Prenez le total mensuel HT de votre profil, ajoutez 20 % pour la croissance du stockage et des sauvegardes sur douze mois, puis une ligne séparée pour l'exploitation. Les engagements annuels (instances réservées, remises sur volume) valent le coup une fois l'architecture stabilisée, pas sur un cluster qui a trois mois.

Qui doit surveiller la facture ?

Quelqu'un, nommément. Nous posons une alerte de budget chez le fournisseur à 120 % du montant attendu, et une revue trimestrielle des PVC orphelins, des load balancers inutilisés, des snapshots hors rétention et des images du registre. Une heure par trimestre, pour 20 à 30 % d'économie récurrente dans la majorité des cas que nous reprenons.

En résumé

  • Un cluster Kubernetes managé de PME coûte 80 à 250 € HT par mois chez OVHcloud ou Scaleway : nœuds, un load balancer, block storage, object storage et registre.
  • Le plan de contrôle gratuit et l'egress non facturé chez les fournisseurs français suppriment les deux lignes les plus volatiles ; sur AWS EKS, ajoutez ~73 $ de plan de contrôle plus le trafic sortant.
  • Les nœuds pèsent 60 à 75 % de la facture : dimensionnez pour que les requests de production tiennent sur N-1 nœuds, avec un pool système fixe et un pool applicatif autoscalé.
  • Les lignes oubliées sont les PVC orphelins, les snapshots hors rétention, les load balancers multipliés par application et les images du registre jamais nettoyées.
  • Mesurez le ratio requests / usage réel avec Prometheus ou OpenCost avant toute optimisation : au-delà de 4, vous payez quatre fois votre consommation.
  • Le downscale nocturne vaut le coup sur dev/staging, pas sur la production ; les instances spot ne conviennent qu'aux workers idempotents.

Besoin d'un chiffrage sur votre contexte réel, ou d'un audit de facture sur un cluster existant ? Notre équipe exploite ces plateformes au quotidien : voyez nos prestations d'infrastructure et d'exploitation, notre approche du développement applicatif, ou écrivez-nous directement via la page contact.