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 ?
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. | |
---|---|---|
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. | |
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. | |
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. | |
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. | |
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.