Karpenter : Comment fonctionne cet outil ? A quoi sert-il ?

-
3
 m de lecture
-

Dans l'écosystème en constante évolution de la gestion des conteneurs et des orchestrateurs, de nouvelles solutions continuent d'émerger pour faciliter et optimiser le processus. L'une de ces solutions innovantes est Karpenter, un projet open source de la fondation AWS qui se positionne comme un cluster autoscaler pour Kubernetes.

Alors que les plateformes traditionnelles de gestion des conteneurs peuvent parfois lutter pour équilibrer efficacement les ressources, Karpenter promet une allocation optimale et efficace des nœuds, permettant d’économiser du temps et des ressources. 

Comment fonctionne Karpenter ?

Il est primordial de comprendre comment fonctionne Karpenter. Il s’agit d’un contrôleur Kubernetes qui automatise la gestion des nœuds et l’allocation des ressources. Il se distingue par sa capacité à prendre des décisions en temps réel sur la manière d’allouer des ressources en fonction des demandes des pods, assurant ainsi une utilisation optimale des ressources.
En comparaison avec d’autres outils de gestion de clusters Kubernetes, Karpenter se démarque par son approche centrée sur les pods. Là où d’autres outils allouent des ressources en fonction des nœuds, Karpenter les alloue en fonction des besoins des pods. Cette différence peut sembler subtile, mais elle a un impact profond sur l’efficacité de l’allocation des ressources. À ce titre, Karpenter possède plusieurs caractéristiques clés qui le distingue des autres solutions de gestion de noeuds Kubernetes :
Image Allocation de ressources basée sur les pods Karpenter décide de l'allocation des ressources en fonction des besoins spécifiques des pods, ce qui permet une utilisation optimale des ressources.
Image Support multi-cloud et on-premise Conçu pour fonctionner avec plusieurs fournisseurs de services cloud, comme AWS, Google Cloud, et Azure, mais aussi dans des environnements on-premise.
Image Libération proactive des pods Libération des pods de manière proactive afin de libérer des ressources pour des pods en attente, améliorant ainsi l'efficacité de l'utilisation des ressources.
Image Scalabilité rapide Il est capable de mettre rapidement à l'échelle les nœuds en fonction de la demande, ce qui permet de répondre efficacement aux fluctuations de la charge de travail.
Image Utilisation de n'importe quel type de nœud Karpenter peut travailler avec n'importe quel type de nœud disponible dans le cluster, offrant une flexibilité accrue.
Image Recyclage des nœuds inutilisés Karpenter peut identifier et réutiliser les nœuds sous-utilisés, contribuant à réduire les coûts et à améliorer l'efficacité.

Mise en place de Karpenter

L’installation et la mise en place de Karpenter nécessite d’avoir une infrastructure Kubernetes fonctionnelle, et un accès à la console AWS.

1. Installer le repository Helm

2. Mettre à jour le repository

				
					helm repo add karpenter https://charts.karpenter.sh
helm repo update
helm fetch karpenter/karpenter — untar
				
			

3. Récupérer les charts et vérifier les valeurs : les 2 plus importantes sont « clusterName » et « clusterEndpoint« , et elles peuvent être trouvées dans votre console AWS.

4. Installer Karpenter

				
					helm upgrade --install karpenter . --values values.yaml -n karpenter --create-namespace
				
			

5. Vous devriez voir les pods “webhook” et “controller” être déployés

À présent que Karpenter est installé sur votre infrastructure, il est temps de créer un “provisioner” qui surveillera les pods non planifiés afin de prendre les actions nécessaires.

Un provisioner est une ressource Kubernetes qui définit les règles d’allocation de nœuds pour Karpenter. Vous pouvez créer un provisioner en appliquant un fichier YAML comme celui-ci :

				
					apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
  name: default
spec:
  ttlSeconds: 600
  requirements:
  - key: node.kubernetes.io/instance-type
    operator: In
    values: ["m5.large", "m5.2xlarge"]
				
			

Ce fichier YAML crée un provisioner qui configure Karpenter pour allouer des nœuds qui sont soit de type m5.large, soit de type m5.2xlarge. Les nœuds qui ne reçoivent pas de travail pendant 600 secondes sont automatiquement supprimés (ttlSeconds: 600).

Enfin, pour vérifier que tout fonctionne correctement, vous pouvez créer un déploiement qui demande des ressources qui nécessiteraient l’allocation de nouveaux nœuds. Vous devriez voir Karpenter allouer de nouveaux nœuds pour répondre à cette demande.

Quelles sont les limites de Karpenter ?

Bien qu’il offre des avantages indéniables comparé aux clusters autoscaler standard, il à néanmoins des limitations. Les plus importantes étant les suivantes : 

  • Limitations liées au fournisseur de cloud : Bien que Karpenter supporte plusieurs fournisseurs de services cloud, la gamme complète de ses fonctionnalités peut ne pas être disponible pour tous les fournisseurs.
  • Gestion des applications sensibles aux performances : Pour les applications très sensibles aux performances, l’allocation de ressources basée sur les pods de Karpenter pourrait ne pas être suffisante. Dans certains cas, une gestion plus fine des ressources au niveau des nœuds peut être nécessaire.
  • Compatibilité avec d’autres outils de gestion des clusters Kubernetes : Karpenter peut ne pas être entièrement compatible avec certains autres outils de gestion des clusters Kubernetes. Il est donc important de tester Karpenter dans votre environnement spécifique avant de l’adopter à grande échelle.
  • Nouveau sur le marché : En tant que nouvel arrivant sur le marché, Karpenter peut encore avoir des bugs ou des problèmes inconnus. Il est recommandé de garder cela à l’esprit et de suivre de près les mises à jour et les nouvelles versions.
  • Documentation et soutien communautaire limités : Parallèlement au point précédent, la documentation et le soutien communautaire peuvent être limités par rapport à des solutions plus établies. Cependant, cela devrait s’améliorer avec le temps à mesure que la communauté autour de Karpenter grandit.

Pour conclure

Karpenter est une solution d’autoscaling puissante qui offre de nombreux avantages par rapport aux clusters autoscaler standard. Avec sa capacité à optimiser l’utilisation des ressources, à personnaliser l’escalade et à être facile à utiliser, Karpenter est un outil indispensable pour les utilisateurs de Kubernetes.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?