Je travaille sur un cluster Kubernetes où, à l'heure actuelle, environ 95 % des processeurs et 90 % de la mémoire ont été alloués aux pods. Cependant, selon le tableau de bord Kubernetes, la charge instantanée globale des CPU sur le cluster n'est que de 5 % environ du nombre total de cœurs du cluster, et la mémoire totale utilisée n'est que de 33 % environ de la mémoire totale du cluster. Il est donc clair que certains, voire la plupart des Les pods fonctionnant sur le cluster sont largement surdimensionnés. La plupart de l'unité centrale et de la mémoire demandées ne sont pas réellement utilisées à un moment donné.
Comment puis-je savoir dont les pods sont les plus à blâmer pour cela ? Le tableau de bord me montrera la quantité de ressources allouées à chaque nœud, et la quantité de ressources réellement utilisées par chaque pod en cours d'exécution. Mais pour voir les requêtes d'un pod, je dois kubectl describe
Je n'arrive pas à trouver les demandes dans le tableau de bord. De plus, lorsqu'un pod se termine et est nettoyé, il disparaît, et je ne connais aucun moyen de poser des questions du type "Quelle portion de la mémoire demandée ce module complet a-t-il utilisé au maximum ?" ou "Combien d'heures de base ce module a-t-il demandé mais n'a pas utilisé au cours de sa vie ?" .
Quels outils existent pour trouver et diagnostiquer les ressources gaspillées, demandées mais non consommées dans les clusters Kubernetes ? Et quelles sont les meilleures pratiques à employer pour adapter les pods aux charges de travail ? Je pense que nous nous sommes retrouvés dans cette situation en laissant tous les utilisateurs doubler leurs demandes de ressources jusqu'à ce que leurs pods cessent d'être expulsés.