Aller au contenu
edixos
Tous les services

PROTOCOL_ID: FO-09 CLASS: COST_ENGINEERING

FinOps Kubernetes et maîtrise des coûts

Nous rendons la facture du cluster visible, la réduisons là où le gaspillage se trouve vraiment, et inscrivons la discipline pour qu'elle le reste.

Difficulté: 2 / 3

FinOps Kubernetes et maîtrise des coûts — Nous rendons la facture du cluster visible, la réduisons là où le gaspillage se trouve vraiment, et inscrivons la discipline pour qu'elle le reste.
Vue d'ensemble

Vue d'ensemble

La plupart des factures Kubernetes ne sont pas élevées parce que la plateforme coûte cher. Elles le sont parce que personne ne voit où part l'argent. La facture arrive par instance quand l'organisation raisonne par équipe et par application, et dans cet écart de traduction les requests surdimensionnées, les nœuds inactifs et les environnements oubliés s'accumulent tranquillement pendant des trimestres. Le premier travail n'est pas de couper — c'est de rendre la dépense assez lisible pour que la coupe devienne évidente.

Le levier qui déplace le plus le chiffre, c'est la façon dont les nœuds sont provisionnés. Karpenter, projet CNCF, remplace des groupes de nœuds devinés à l'avance par un provisioning piloté par les pods : il lit ce qui est réellement en attente, choisit le type d'instance, la taille et le mode d'achat qui conviennent, et mélange spot et on-demand selon la politique définie. Sa boucle de consolidation est la partie qui compose — elle repère en continu que les mêmes charges tiendraient sur des nœuds moins chers ou moins nombreux et reconstruit la flotte en conséquence, si bien que le cluster continue de se resserrer après notre départ. Associée à de la capacité spot pour les travaux qui tolèrent une reprise, c'est là que les remises de 70 à 90 % par unité cessent d'être une diapositive pour devenir la facture.

Karpenter tourne en production sur EKS et AKS. Il n'a ni provider OVHcloud ni provider Scaleway, et nous le disons avant que vous posiez la question plutôt qu'après signature. Sur ces plateformes nous y arrivons par le cluster autoscaler managé, réglé sur une conception de node pools qui reflète votre vrai mélange de charges, un rightsizing piloté par la consommation mesurée au lieu de valeurs par défaut héritées, et de la capacité préemptible là où c'est sûr. La mécanique diffère ; la discipline et, le plus souvent, le résultat non.

Sous ces deux chemins se trouvent les deux couches qui décident si tout cela dure. OpenCost attribue la dépense réelle jusqu'au namespace, au contrôleur et au pod, et l'exporte vers Prometheus : le coût s'affiche sur les mêmes tableaux de bord que la latence et trouve un propriétaire plutôt qu'un tableur. Les policies Kyverno tiennent la ligne sous forme de code : pas de workload sans requests, pas de famille d'instances que vous avez décidé de ne pas payer, pas de label d'équipe manquant. Chacun de ces contrôles est une pull request relue et réconciliée par Argo CD — c'est ce qui distingue une économie qui tient d'un grand nettoyage héroïque qui s'érode au trimestre suivant.

Schéma des objectifs de niveau de service et de la dérive GitOps

Schéma illustratif, hors télémétrie réelle

Outils de cet engagement

Outils de cet engagement

  • Kubernetes
  • Karpenter
  • OpenCost
  • Prometheus
  • Kyverno
  • Argo CD
Trajectoire de livraison

De l'audit à la production

  1. 01

    Inform

    Déployer l'attribution et lire les vrais chiffres : dépense par namespace et par workload, ratio requests/consommation, capacité inactive, et les environnements que personne n'a regardés depuis des mois.

  2. 02

    Rightsizing

    Fixer requests et limits sur la consommation mesurée plutôt que sur des suppositions héritées, en mode recommandation d'abord pour que rien ne bouge avant que les chiffres soient compris.

  3. 03

    Autoscaling et spot

    Introduire Karpenter avec consolidation et une politique spot calibrée sur la tolérance des charges — ou un autoscaler managé bien réglé là où Karpenter n'a pas de provider — une fois les disruption budgets validés.

  4. 04

    Gouvernance as code

    Encoder les garde-fous dans Kyverno et le dépôt de la plateforme pour que la posture de coût soit relue, réconciliée et auditable plutôt que mémorisée.

  5. 05

    Operate

    Transmettre les tableaux de bord, la responsabilité par équipe et l'alerting sur anomalies, pour que la boucle tourne sans nous et que le gain ne s'érode pas.

Spécification technique

Écosystèmes, outillage et livrables

Écosystèmes cibles
  • AWS EKS et Azure AKS, où Karpenter tourne nativement
  • OVHcloud et Scaleway via un autoscaling managé bien réglé
  • GKE, et clusters auto-gérés sur bare metal
  • Parcs multi-clusters avec refacturation par équipe
Outillage
  • Kubernetes
  • Karpenter
  • OpenCost
  • Prometheus
  • Kyverno
  • Argo CD
Livrables
  • Attribution des coûts par namespace, workload et équipe
  • Rapport de rightsizing avec les baselines de requests avant/après
  • Politique d'autoscaling et de spot versionnée dans votre dépôt
  • Garde-fous Kyverno contre la régression des coûts
  • Tableaux de bord de coût Grafana et alerting sur anomalies
Prérequis
  • Un cluster en fonctionnement avec quelques semaines de métriques
  • Un accès en lecture au compte de facturation cloud
  • Des PodDisruptionBudgets, ou la volonté de les définir
  • Un propriétaire nommé par namespace, ou l'envie d'en désigner un

Réponses directes

Questions fréquentes

Qu'est-ce que le FinOps Kubernetes, concrètement ?

Le FinOps Kubernetes consiste à rendre la dépense d'un cluster visible, réductible et durable. Il suit la boucle Inform, Optimize, Operate de la FinOps Foundation : attribuer la dépense aux équipes et aux applications qui la génèrent, agir sur le gaspillage que cette attribution révèle, puis inscrire la discipline dans la plateforme pour que les gains ne s'érodent pas. Sur Kubernetes c'est un travail précis — requests et limits, politique d'autoscaling, capacité spot, attribution des coûts par namespace — pas une revue générique de facture cloud.

Pourquoi Karpenter plutôt que le cluster autoscaler ?

Le cluster autoscaler fait varier des groupes de nœuds définis à l'avance : vos économies sont donc plafonnées par la qualité de votre pari initial sur les types d'instances. Karpenter provisionne des nœuds taillés pour les pods réellement en attente, en choisissant type, taille et mode d'achat par charge de travail, et il consolide — il détecte que les mêmes pods tiendraient sur des nœuds moins chers ou moins nombreux et reconstruit la flotte en conséquence. C'est cette boucle de consolidation qui produit l'essentiel du gain récurrent, parce qu'elle continue de travailler après la mission. La contrepartie est le churn : les nœuds sont remplacés plus souvent, donc les PodDisruptionBudgets et l'arrêt gracieux doivent être corrects avant de l'activer.

Nous sommes sur OVHcloud ou Scaleway. Karpenter fonctionne-t-il ?

Non, et nous préférons le dire d'emblée. Karpenter dispose de providers de production pour AWS et Azure ; il n'existe pas de provider OVHcloud ni Scaleway. Sur ces plateformes le travail de coût est la même discipline avec une mécanique différente : le cluster autoscaler managé réglé sur une conception réaliste des node pools, un rightsizing piloté par la consommation mesurée plutôt que par des valeurs par défaut héritées, et de la capacité spot ou préemptible là où la charge tolère une reprise. Les couches d'attribution et de gouvernance — OpenCost, policy as code — sont agnostiques du fournisseur et se comportent à l'identique. D'après notre expérience, le rightsizing seul rapporte généralement plus que le choix de l'autoscaler : le chemin OVHcloud et Scaleway n'est donc pas un lot de consolation.

Comment surveiller les coûts Kubernetes après la mission ?

Le coût devient un signal sur les mêmes tableaux de bord que le reste. OpenCost, projet CNCF, attribue la dépense cloud réelle jusqu'au namespace, au contrôleur et au pod ; nous l'exportons vers Prometheus pour que le coût soit à côté de la latence et du taux d'erreur, et non dans un outil financier que personne dans l'équipe n'ouvre. Vous obtenez une dépense par namespace avec un propriétaire, des alertes sur les anomalies de coût et le pourcentage de ressources inactives, et un chiffre mensuel que chaque équipe reconnaît comme le sien. C'est la visibilité avec responsabilité qui empêche la facture de remonter.

Quelle place pour le GitOps dans l'optimisation des coûts Kubernetes ?

C'est ce qui rend le gain durable plutôt que saisonnier. La politique d'autoscaling, les requests, les définitions de NodePool et les garde-fous de coût vivent dans le même dépôt que le reste de la plateforme, réconciliés par Argo CD. Un changement de posture de coût est une pull request relue avec sa trace d'audit, pas une modification console que quelqu'un oublie. La policy as code avec Kyverno tient la ligne en dessous : refuser les workloads sans requests, bloquer les familles d'instances que vous avez décidé de ne pas payer, exiger le label d'équipe dont dépend l'attribution.

Aller plus loin
Notes techniques

La preuve par la production

Soumettez-nous votre problème de plateforme le plus difficile

Réserver un échange