Karpenter : l'autoscaler intelligent pour EKS
Posté le 24 novembre 2025 • 7 min de lecture • 1 381 motsDécouvrez Karpenter, l'autoscaler moderne conçu pour EKS : plus rapide, plus flexible et plus économique que le Cluster Autoscaler.

Karpenter est un autoscaler open-source pour Kubernetes, créé par AWS.
Son rôle : ajuster automatiquement la capacité des nœuds (EC2) d’un cluster EKS en fonction de la charge réelle.
En résumé :
Mais surtout :
Il le fait plus vite, plus intelligemment et plus efficacement que l’autoscaler classique de Kubernetes (Cluster Autoscaler).
Dans cet article, on explore :
Le Cluster Autoscaler (CA) natif de Kubernetes :
Karpenter corrige tous ces problèmes.
Plus besoin de définir manuellement des dizaines d’instance types dans un ASG.
Karpenter peut décider seul :
Il sélectionne l’instance au moment du besoin, en fonction de :
Beaucoup plus rapide que :
Karpenter crée le nœud directement via l’API EC2. Il est donc ultra rapide.
Si un nœud devient vide (plus de pods utiles), Karpenter le :
Résultat : le coûts est moindre et le cluster plus propre
Quand AWS annonce une interruption Spot :
Très utile dans les périodes difficiles… comme décembre voir l’article Spot en Décembre
Karpenter utilise un Custom Resource :
Provisioner
C’est un objet qui décrit :
Ensuite, il observe les pods en Pending et crée le nœud parfait pour les accueillir.
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
name: default
spec:
requirements:
- key: karpenter.sh/capacity-type
operator: In
values: ["spot", "on-demand"]
limits:
resources:
cpu: 500
provider:
subnetSelector:
kubernetes.io/cluster/my-cluster: owned
securityGroupSelector:
kubernetes.io/cluster/my-cluster: owned| Fonction | Cluster Autoscaler | Karpenter |
|---|---|---|
| Choix intelligent d’instances | limité | dynamique |
| Rapidité | lente | très rapide |
| Gestion Spot | moyenne | excellente |
| Scaling via ASG | obligatoire | aucun ASG nécessaire |
| Suppression des nœuds inutiles | standard | optimisée |
| Simplicité | moyenne | haute |
Karpenter est beaucoup plus rapide que Cluster Autoscaler.
Parfois trop rapide.
Symptômes :
Cause :
Karpenter réagit instantanément aux pods en Pending, même si ces pods n’auraient pas dû être programmés.
Comment éviter :
maxPods et les demandes CPU/RAM de vos workloads limits:
resources:
cpu: 200
Karpenter supprime les nœuds qui semblent inutilisés.
Problèmes possibles :
Solutions :
ttlSecondsAfterEmptyKarpenter ne fonctionne pas sans :
kubernetes.io/cluster/<cluster-name>: owned
karpenter.sh/discovery: <cluster-name>Sans ces tags, aucun nœud ne pourra être créé.
Exemples :
Karpenter choisit la taille du nœud en fonction de la consommation réelle des pods.
Si vos DaemonSets consomment beaucoup :
resources.requests réalistes sur tous les DaemonSetssystem-nodesEn période saturée (ex : décembre) :
Karpenter va :
Ne jamais utiliser 100% Spot.
Toujours garder une baseline On-Demand, par exemple :
on-demand: 20–40%Beaucoup d’infrastructures utilisent :
Karpenter ignore complètement les ASG.
Il crée les instances directement via l’API EC2, sans passer par un ASG.
Si votre architecture repose sur :
Vous perdez ces mécanismes en migrant vers Karpenter.
Karpenter optimise pour :
…mais pas forcément pour minimiser le coût de votre cluster.
“J’ai demandé 2 CPU et 4 Go…
Pourquoi Karpenter m’a créé unem6i.2xlarge?”
Solution : restreindre les instance types dans les requirements.
Exemple dangereux :
requirements:
- key: karpenter.sh/capacity-type
operator: In
values: ["spot"]Si les Spot disparaissent :
Toujours :
Exemple :
Résultat :
Solution :
augmenter les TTL ou désactiver la consolidation à certains horaires.
| # | Risque | Explication | Comment éviter / Corriger |
|---|---|---|---|
| 1 | Sur-provisionnement | Scaling trop rapide → trop de nœuds créés | Limites (limits), consolidation, maxPods |
| 2 | Scale-in agressif | Nœuds supprimés trop tôt → ping-pong | TTL plus long, taints, consolidation progressive |
| 3 | Mauvaise config VPC / IAM / tags | Karpenter ne crée aucun nœud | Tags corrects, rôles IAM, subnets taggés |
| 4 | DaemonSets trop lourds | Mauvais dimensionnement automatique des nœuds | resources.requests, taints, Provisioners dédiés |
| 5 | Instabilité Spot | Pénuries → flapping de nœuds | Baseline On-Demand 20–40 %, fallback AZ |
| 6 | Perte des features ASG | Pas de hooks, warm pools, scaling EC2 | Adapter l’architecture, conserver ASG pour le système |
| 7 | Instances trop grandes | Optimisation agressive → coûts inattendus | Limiter instance families/types dans requirements |
| 8 | Provisioners trop permissifs | Spot-only → cluster down | Inclure On-Demand, fallback AZ, limiter types |
| 9 | Consolidation imprévisible | Pods déplacés trop souvent | Ajuster les TTL, désactiver consolidation à certains horaires |
Karpenter est incroyable, surtout pour :
Mais il donne beaucoup de pouvoir, et donc : il faut le configurer avec prudence.
Bien maîtrisé, c’est aujourd’hui l’un des meilleurs outils pour EKS.