À mesure que les charges de travail Kubernetes deviennent plus complexes, garantir une utilisation optimale des ressources tout en maintenant la performance devient un défi majeur. Un provisionnement excessif entraîne des coûts gaspillés, tandis qu’un provisionnement insuffisant peut dégrader la performance des applications. StormForge propose une approche basée sur l’apprentissage automatique pour automatiser le dimensionnement des charges de travail, aidant les équipes à trouver le juste équilibre entre coût et performance.
Cet article fournit un guide complet pour mettre en œuvre StormForge pour l’optimisation des charges de travail Kubernetes.
Conditions préalables
Avant de commencer, assurez-vous de disposer d’un cluster Kubernetes fonctionnel (en utilisant des outils comme minikube, kind, ou des services gérés comme RKS, GKE, EKS ou AKS). Vous aurez également besoin de Helm, kubectl et de l’interface en ligne de commande StormForge installés, ainsi que d’un compte StormForge actif. Une solution de surveillance comme Prometheus est recommandée mais optionnelle.
Configurez votre environnement
Assurez-vous d’avoir accès au cluster Kubernetes
Ayez un cluster Kubernetes fonctionnel (par exemple, Minikube, Kind, GKE, EKS ou AKS).
Confirmez la connectivité du cluster :
kubectl get nodes
Installez Helm
Vérifiez l’installation de Helm :
helm version
Installez Helm si nécessaire en suivant les Instructions d’installation de Helm.
Déployez une application exemple
Utilisez une application exemple simple, comme Nginx :
kubectl apply -f https://k8s.io/examples/application/deployment.yaml
Confirmez que l’application est en cours d’exécution:
kubectl get pods
Installez le CLI StormForge
Téléchargez et installez le CLI StormForge:
curl -fsSL https://downloads.stormforge.io/install | bash
Authentifiez le CLI avec votre compte StormForge:
stormforge login
Déployez l’Agent StormForge
Utilisez le CLI StormForge pour initialiser votre cluster Kubernetes:
stormforge init
Vérifiez que l’agent StormForge est déployé:
kubectl get pods -n stormforge-system
Créez une expérience StormForge
Définissez un fichier YAML d’expérience (par ex., experiment.yaml):
apiVersion optimize.stormforge.io/v1
kind Experiment
metadata
name nginx-optimization
spec
target
deployments
name nginx-deployment
containers
name nginx
requests
cpu"100m"
memory"128Mi"
limits
cpu"500m"
memory"256Mi"
Appliquez la configuration de l’expérience:
stormforge apply -f experiment.yaml
Exécutez le processus d’optimisation
Démarrez l’optimisation:
stormforge optimize run nginx-optimization
Suivez la progression de l’optimisation en utilisant le CLI ou le tableau de bord StormForge.
Examinez et Appliquez les Recommandations
Une fois l’optimisation terminée, récupérez les recommandations:
stormforge optimize recommendations nginx-optimization
Mettez à jour vos manifestes de déploiement Kubernetes avec les paramètres recommandés:
requests:
cpu: "200m"
memory: "160Mi"
limits:
cpu: "400m"
memory: "240Mi"
Appliquez la configuration mise à jour:
kubectl apply -f updated-deployment.yaml
Validez les Changements
Confirmez que le déploiement est en cours d’exécution avec les paramètres mis à jour:
kubectl get pods
Suivez l’utilisation des ressources pour vérifier les améliorations:
kubectl top pods
Intégrez avec des Outils de Surveillance (Optionnel)
Si Prometheus n’est pas installé, vous pouvez l’installer pour des métriques supplémentaires:
helm install prometheus prometheus-community/prometheus
Utilisez les métriques Prometheus pour des informations approfondies sur l’utilisation des ressources et les performances.
Automatisez pour une Optimisation Continue
Établissez un calendrier d’optimisation récurrent en utilisant les pipelines CI/CD. Ensuite, examinez régulièrement les recommandations à mesure que les charges de travail de l’application évoluent.
Conclusion
StormForge fournit une solution efficace et automatisée pour optimiser les charges de travail Kubernetes en exploitant l’apprentissage automatique pour équilibrer les performances et l’utilisation des ressources. En suivant le guide étape par étape, vous pouvez facilement intégrer StormForge dans votre environnement Kubernetes, déployer des expériences et appliquer des recommandations basées sur les données pour ajuster la taille de vos applications.
Ce processus réduit les coûts en éliminant le gaspillage de ressources et garantit des performances d’application constantes. L’intégration de StormForge dans vos flux de travail DevOps permet une optimisation continue, permettant à vos équipes de se concentrer sur l’innovation tout en maintenant des opérations Kubernetes efficaces et fiables.
Source:
https://dzone.com/articles/automating-kubernetes-workload-rightsizing-with-stormforge