Surveillance des ressources du cluster Kubernetes

Surveillance des ressources du cluster Kubernetes

J'ai créé Kube Eagle - un exportateur Prometheus. Cela s’est avĂ©rĂ© ĂȘtre une bonne chose qui aide Ă  mieux comprendre les ressources des clusters de petite et moyenne taille. En fin de compte, j'ai Ă©conomisĂ© des centaines de dollars parce que j'ai sĂ©lectionnĂ© les bons types de machines et configurĂ© les limites de ressources d'application pour les charges de travail.

je vais vous parler des avantages Aigle Kube, mais je vais d’abord expliquer ce qui a causĂ© tout ce tapage et pourquoi une surveillance de haute qualitĂ© Ă©tait nĂ©cessaire.

J'ai gĂ©rĂ© plusieurs clusters de 4 Ă  50 nƓuds. Chaque cluster contient jusqu'Ă  200 microservices et applications. Pour mieux utiliser le matĂ©riel existant, la plupart des dĂ©ploiements ont Ă©tĂ© configurĂ©s avec des ressources RAM et CPU extensibles. De cette façon, les pods peuvent utiliser les ressources disponibles si nĂ©cessaire, tout en n'interfĂ©rant pas avec les autres applications sur ce nƓud. Eh bien, n'est-ce pas gĂ©nial ?

Et bien que le cluster consommait relativement peu de CPU (8 %) et de RAM (40 %), nous avions constamment des problĂšmes de prĂ©emption des pods lorsqu'ils tentaient d'allouer plus de mĂ©moire que ce qui Ă©tait disponible sur le nƓud. À l’époque, nous n’avions qu’un seul tableau de bord pour surveiller les ressources Kubernetes. Comme ça:

Surveillance des ressources du cluster Kubernetes
Tableau de bord Grafana avec métriques cAdvisor uniquement

Avec un tel panneau, ce n'est pas un problĂšme de voir des nƓuds qui consomment beaucoup de mĂ©moire et de CPU. Le problĂšme est de comprendre quelle en est la raison. Pour maintenir les pods en place, on pourrait bien sĂ»r mettre en place des ressources garanties sur tous les pods (ressources demandĂ©es Ă©gales Ă  la limite). Mais ce n’est pas l’utilisation la plus intelligente du matĂ©riel. Le cluster disposait de plusieurs centaines de gigaoctets de mĂ©moire, tandis que certains nƓuds mouraient de faim, tandis que d'autres disposaient de 4 Ă  10 Go en rĂ©serve.

Il s'avĂšre que le planificateur Kubernetes rĂ©partit les charges de travail de maniĂšre inĂ©gale entre les ressources disponibles. Le planificateur Kubernetes prend en compte diffĂ©rentes configurations : rĂšgles d'affinitĂ©, de teintes et de tolĂ©rances, sĂ©lecteurs de nƓuds pouvant limiter les nƓuds disponibles. Mais dans mon cas il n'y avait rien de tel, et les pods Ă©taient planifiĂ©s en fonction des ressources demandĂ©es sur chaque nƓud.

Le nƓud qui dispose du plus grand nombre de ressources libres et qui satisfait aux conditions de la demande a Ă©tĂ© sĂ©lectionnĂ© pour le pod. Nous avons constatĂ© que les ressources demandĂ©es sur les nƓuds ne correspondaient pas Ă  l'utilisation rĂ©elle, et c'est lĂ  que Kube Eagle et ses capacitĂ©s de surveillance des ressources sont venus Ă  la rescousse.

J'ai presque tous les clusters Kubernetes surveillĂ©s uniquement avec Exportateur de nƓuds Đž Mesures de l'Ă©tat du Kube. Node Exporter fournit des statistiques sur les E/S et l'utilisation du disque, du processeur et de la RAM, tandis que Kube State Metrics affiche les mĂ©triques des objets Kubernetes telles que les requĂȘtes et les limites des ressources du processeur et de la mĂ©moire.

Nous devons combiner les mĂ©triques d'utilisation avec les mĂ©triques de demandes et de limites dans Grafana, puis nous obtiendrons toutes les informations sur le problĂšme. Cela semble simple, mais les deux outils nomment les Ă©tiquettes diffĂ©remment, et certaines mĂ©triques n'ont aucune Ă©tiquette de mĂ©tadonnĂ©es. Kube Eagle fait tout lui-mĂȘme et le panneau ressemble Ă  ceci :

Surveillance des ressources du cluster Kubernetes

Surveillance des ressources du cluster Kubernetes
Tableau de bord Kube Eagle

Nous avons réussi à résoudre de nombreux problÚmes de ressources et à économiser du matériel :

  1. Certains développeurs ne savaient pas de combien de ressources les microservices avaient besoin (ou ne s'en souciaient tout simplement pas). Nous n'avions aucun moyen de trouver des demandes de ressources incorrectes - pour cela, nous devons connaßtre la consommation ainsi que les demandes et les limites. Ils voient désormais les métriques Prometheus, surveillent l'utilisation réelle et ajustent les demandes et les limites.
  2. Les applications JVM consomment autant de RAM qu'elles peuvent en gérer. Le garbage collector ne libÚre de la mémoire que lorsque plus de 75 % est utilisée. Et comme la plupart des services disposent d'une mémoire extensible, celle-ci était toujours occupée par la JVM. Par conséquent, tous ces services Java consommaient beaucoup plus de RAM que prévu.
  3. Certaines applications demandaient trop de mĂ©moire et le planificateur Kubernetes ne donnait pas ces nƓuds Ă  d'autres applications, mĂȘme s'ils Ă©taient en fait plus libres que les autres nƓuds. Un dĂ©veloppeur a accidentellement ajoutĂ© un chiffre supplĂ©mentaire dans la requĂȘte et a rĂ©cupĂ©rĂ© une grande quantitĂ© de RAM : 20 Go au lieu de 2. Personne ne l'a remarquĂ©. L'application comportait 3 rĂ©pliques, donc jusqu'Ă  3 nƓuds Ă©taient affectĂ©s.
  4. Nous avons introduit des limites de ressources, reprogrammĂ© les pods avec les requĂȘtes correctes et obtenu un Ă©quilibre idĂ©al d'utilisation du matĂ©riel sur tous les nƓuds. Quelques nƓuds auraient pu ĂȘtre complĂštement fermĂ©s. Et puis on a vu qu'on s'Ă©tait trompĂ©s de machines (orientĂ©es CPU, pas orientĂ©es mĂ©moire). Nous avons modifiĂ© le type et supprimĂ© plusieurs nƓuds supplĂ©mentaires.

Les résultats de

Avec des ressources extensibles dans le cluster, vous utilisez le matĂ©riel disponible plus efficacement, mais le planificateur Kubernetes planifie les pods en fonction des demandes de ressources, ce qui est difficile. Pour faire d’une pierre deux coups : pour Ă©viter les problĂšmes et utiliser au maximum les ressources, il faut une bonne surveillance. C'est pourquoi ce sera utile Aigle Kube (Exportateur Prometheus et tableau de bord Grafana).

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster