Optimiser Kubernetes

les limites CPU

optimiser-performances-kubernetes
Philippe Escalle CTO

Comprendre les Requêtes et Limites de CPU

Request CPU

La request CPU est comme la promesse de Kubernetes à votre application : "Je te garantis au moins cette quantité de CPU." C'est la même idée qu'avoir un abonnement de base à Netflix – vous savez que vous aurez toujours accès à un minimum de contenu, après les pub ! Une request trop basse peut rendre votre application aussi lente qu'un escargot, tandis qu'une request trop élevée peut gaspiller des ressources précieuses.

Limit CPU

La limit CPU est le plafond de verre de votre application. C'est le moment où Kubernetes vous dit : "Stop ! Tu ne peux pas utiliser plus de CPU que ça." (Bon ok, Kubernetes ne parles pas !!! mais c'est tout comme... un jour peut-être !)
Si votre application essaie de dépasser cette limite, elle sera throttled, ce qui peut entraîner des ralentissements et des erreurs. C'est comme tonton moustache qui aime aller au buffet à volonté, mais avec une limite de trois assiettes – frustrant, non ?

Throttling

Le throttling se produit lorsque votre application atteint ou dépasse la limit CPU. C'est comme si votre application était un enfant gourmand qui essaie de manger tout le gâteau d'anniversaire – Kubernetes intervient et dit : "Non, non, non, tu en as déjà eu assez ! allez... zou ! " Un taux de throttling élevé indique que votre application a besoin de plus de ressources que ce qui est autorisé par la limit.

Analyser et Configurer les Ressources CPU

1. Vérifier les Requêtes et Limites Actuelles

Commencez par vérifier les configurations actuelles de request et limit CPU de votre déploiement Kubernetes. Comme pour la cuisine, on check les ingrédients avant de commencer... enfin normalement.

resources: requests: cpu: "0.5" limits: cpu: "1"

2. Monitorer le Throttling

Utilisez des outils de monitoring comme Prometheus, Grafana, ou les métriques intégrées de Kubernetes pour surveiller le taux de throttling de votre application. Grafana pour bien comprendre c'est votre coach qui va vous faire comprendre que justement tu as mangé trop de gâteau !

3. Ajuster les Requêtes et Limites

En fonction des résultats de votre monitoring, ajustez les paramètres de request et limit CPU :

  • Augmenter la Request CPU : Si votre application a besoin de plus de ressources, augmentez la request CPU pour garantir qu'elle ait suffisamment de CPU disponible. Vous vous souvenez de ma métaphore avec Netflix ? C'est comme passer à un abonnement premium.

  • Ajuster la Limit CPU : Si votre application a des pics de charge, vous pourriez augmenter la limit CPU pour permettre à votre application d'utiliser plus de ressources lorsqu'elle en a besoin. Mais attention, trop de gâteau peut rendre malade !

4. Optimiser le Code

En plus de configurer les ressources CPU, il est également important d'optimiser votre application pour qu'elle utilise moins de ressources. En général le DevOps à horreur de voir des 5xx poper et échange beaucoup avec l'équipe Dev. 
Ce n'est pas une 5xx en soit, mais un exemple typique serait que Livewire ne se charge pas sur un POD alors que tout est bien paramétrer... la raison viendra de la config NgNinx car il ne faut pas "cacher" livewire... généralement on arrive à résoudre le problème en faisant travailler les services entre eux.

5. Tester et Itérer

Après avoir ajusté les paramètres, testez votre application sous différentes charges pour vous assurer que les performances sont optimales. Utilisez des outils de test de charge comme Apache JMeter ou Locust pour simuler des conditions réelles. C'est mieux de comme goûter votre plat avant de le servir... toujours une bonne idée !

Ok et comment on fait ?

Voici un exemple de configuration YAML pour un déploiement Kubernetes avec des paramètres de request et limit CPU ajustés :

apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 template: spec: containers: - name: my-container image: my-image resources: requests: cpu: "0.5" limits: cpu: "1"

L'oeil du CTO

" Les erreurs 5XX après la migration vers Kubernetes peuvent souvent être attribuées à une mauvaise configuration des ressources CPU. En comprenant et en ajustant correctement les paramètres de request et limit CPU, ainsi qu'en surveillant le throttling, vous pouvez améliorer les performances et la stabilité de votre application. N'oubliez pas que la request protège votre processus en garantissant un minimum de ressources, tandis que la limit protège les autres processus en empêchant une surconsommation de ressources. Et surtout, gardez le sourire – même les maîtres Jedi ont parfois besoin de réajuster leur sabre laser ! "