{"id":31139,"date":"2019-10-31T21:39:40","date_gmt":"2019-10-31T18:39:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/monitorim-resursy-klasterov-kubernetes\/"},"modified":"2019-10-31T21:39:40","modified_gmt":"2019-10-31T18:39:40","slug":"monitorim-resursy-klasterov-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","title":{"rendered":"Surveillance des ressources des clusters Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bn\/g6\/jg\/bng6jgpkvlzy8-2zahywzsnz8du.png\"><img decoding=\"async\" alt=\"Surveillance des ressources des clusters Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e3e07ee5a2271263948b3d3b39f3b66d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>J'ai cr\u00e9\u00e9 Kube Eagle \u2014 un exportateur Prometheus. C'est un outil g\u00e9nial qui aide \u00e0 mieux comprendre les ressources des petits et moyens clusters. En fin de compte, j'ai \u00e9conomis\u00e9 plusieurs centaines de dollars en choisissant les bons types de machines et en ajustant les limites des ressources des applications en fonction des charges de travail.<\/p>\n<p><\/p>\n<p>Je vais parler des avantages <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex>, mais d'abord, je vais expliquer ce qui a caus\u00e9 des probl\u00e8mes et pourquoi un bon monitoring \u00e9tait n\u00e9cessaire.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>J'ai g\u00e9r\u00e9 plusieurs clusters de 4 \u00e0 50 n\u0153uds. Dans chaque cluster, il y avait jusqu'\u00e0 200 microservices et applications. Pour utiliser efficacement le mat\u00e9riel disponible, la plupart des d\u00e9ploiements \u00e9taient configur\u00e9s avec de la RAM et des ressources CPU burstables. Ainsi, les pods pouvaient utiliser des ressources disponibles si n\u00e9cessaire, sans g\u00eaner les autres applications sur ce n\u0153ud. N'est-ce pas g\u00e9nial ?<\/p>\n<p><\/p>\n<p>Et bien que le cluster consommait relativement peu de CPU (8 %) et de RAM (40 %), nous rencontrions constamment des probl\u00e8mes d'\u00e9viction des pods lorsqu'ils tentaient de demander plus de m\u00e9moire que ce qui \u00e9tait disponible sur le n\u0153ud. \u00c0 ce moment-l\u00e0, nous avions uniquement un tableau de bord pour surveiller les ressources Kubernetes. Voici \u00e0 quoi cela ressemblait :<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qr\/cp\/x2\/qrcpx2avguhqnbxxg7trlxfnh4u.png\"><img decoding=\"async\" alt=\"Surveillance des ressources des clusters Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/4ff784375fd4d01cc420d0d5b6389524.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em>Tableau de bord Grafana avec des m\u00e9triques cAdvisor<\/em><\/p>\n<p><\/p>\n<p>Avec ce tableau de bord, il n'est pas difficile de voir les n\u0153uds qui consomment beaucoup de m\u00e9moire et de CPU. Le probl\u00e8me est de comprendre pourquoi. Pour que les pods restent en place, on aurait bien s\u00fbr pu configurer des ressources garanties sur tous les pods (les ressources demand\u00e9es \u00e9gales aux limites). Mais ce n'est pas la meilleure utilisation du mat\u00e9riel. Le cluster avait plusieurs centaines de gigas de m\u00e9moire, tandis que certains n\u0153uds \u00e9tait en p\u00e9nurie, avec seulement 4 \u00e0 10 Go de libre.<\/p>\n<p><\/p>\n<p>Il s'av\u00e8re que le planificateur Kubernetes r\u00e9partissait les charges de travail de mani\u00e8re in\u00e9gale en fonction des ressources disponibles. Le planificateur Kubernetes prend en compte diff\u00e9rentes configurations : r\u00e8gles d'affinit\u00e9, taints et tolerations, s\u00e9lecteurs de n\u0153uds, qui peuvent limiter les n\u0153uds disponibles. Mais dans mon cas, rien de tout cela n'existait, et les pods \u00e9taient planifi\u00e9s en fonction des ressources demand\u00e9es sur chaque n\u0153ud.<\/p>\n<p><\/p>\n<p>Pour chaque pod, un n\u0153ud \u00e9tait choisi en fonction des ressources libres et de la satisfaction des conditions de la demande. Cela a conduit \u00e0 ce que les ressources demand\u00e9es sur les n\u0153uds ne correspondent pas \u00e0 l'utilisation r\u00e9elle, et c'est l\u00e0 que Kube Eagle et ses capacit\u00e9s de monitoring des ressources sont intervenus.<\/p>\n<p><\/p>\n<p>J'ai presque tous les clusters Kubernetes suivis seulement avec <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/node_exporter\">Node exporter<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\">Kube State Metrics<\/a><\/noindex>. Node Exporter fournit des statistiques sur les entr\u00e9es-sorties et l'utilisation du disque, du CPU et de la m\u00e9moire vive, tandis que Kube State Metrics affiche les m\u00e9triques des objets Kubernetes, comme les demandes et les limites des ressources CPU et m\u00e9moire.<\/p>\n<p><\/p>\n<p>Nous devons combiner les m\u00e9triques d'utilisation avec celles des demandes et des limites dans Grafana, et alors nous obtiendrons toutes les informations sur le probl\u00e8me. Cela semble simple, mais en r\u00e9alit\u00e9, dans ces deux outils, les \u00e9tiquettes sont nomm\u00e9es diff\u00e9remment, et certaines m\u00e9triques n'ont m\u00eame pas d'\u00e9tiquettes de m\u00e9tadonn\u00e9es. Kube Eagle g\u00e8re tout cela automatiquement et le tableau de bord ressemble \u00e0 ceci :<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/u3\/ce\/hk\/u3cehkycztlwc9m7lpip-4lw2xe.png\"><img decoding=\"async\" alt=\"Surveillance des ressources des clusters Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/53898543679d337df5a151b54fb75f5d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/po\/zi\/fm\/pozifm1dgtkf9nsasb42k1faqi4.png\"><img decoding=\"async\" alt=\"Surveillance des ressources des clusters Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/a549c865b24f90fcc4375ffbb76ea270.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em><noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/dashboards\/9871\">Tableau de bord Kube Eagle<\/a><\/noindex><\/em><\/p>\n<p><\/p>\n<p>Nous avons r\u00e9ussi \u00e0 r\u00e9soudre de nombreux probl\u00e8mes de ressources et \u00e0 \u00e9conomiser de l'\u00e9quipement :<\/p>\n<p><\/p>\n<ol>\n<li>Certains d\u00e9veloppeurs ne savaient pas combien de ressources les microservices n\u00e9cessitaient (ou ne s'en souciaient tout simplement pas). Nous n'avions pas de moyen de d\u00e9tecter les demandes incorrectes en ressources - il faut conna\u00eetre la consommation ainsi que les demandes et les limites. Maintenant, ils voient les m\u00e9triques Prometheus, surveillent l'utilisation r\u00e9elle et ajustent les demandes et les limites.<\/li>\n<li>Les applications JVM prennent autant de m\u00e9moire vive qu'elles peuvent. Le ramasse-miettes ne lib\u00e8re de la m\u00e9moire que si plus de 75 % est utilis\u00e9. Et comme la plupart des services utilisent de la m\u00e9moire burstable, le JVM l'occupait toujours. Par cons\u00e9quent, tous ces services Java consommaient beaucoup plus de m\u00e9moire vive que pr\u00e9vu.<\/li>\n<li>Certaines applications demandaient trop de m\u00e9moire, et le planificateur Kubernetes ne donnait pas ces n\u0153uds \u00e0 d'autres applications, bien qu'en r\u00e9alit\u00e9, ils \u00e9taient moins occup\u00e9s que d'autres n\u0153uds. Un d\u00e9veloppeur a accidentellement ajout\u00e9 un chiffre en trop \u00e0 la demande et a pris une grande partie de la m\u00e9moire vive : 20 Go au lieu de 2. Personne ne l'a remarqu\u00e9. L'application avait 3 r\u00e9pliques, donc 3 n\u0153uds ont \u00e9t\u00e9 impact\u00e9s.<\/li>\n<li>Nous avons mis en place des restrictions sur les ressources, r\u00e9organis\u00e9 les pods avec des demandes appropri\u00e9es et obtenu un \u00e9quilibre parfait dans l'utilisation du mat\u00e9riel sur tous les n\u0153uds. Quelques n\u0153uds pouvaient m\u00eame \u00eatre \u00e9teints. Puis nous avons d\u00e9couvert que nous avions des machines inappropri\u00e9es (orient\u00e9es CPU plut\u00f4t que m\u00e9moire). Nous avons chang\u00e9 de type et supprim\u00e9 encore quelques n\u0153uds.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"itogi\">R\u00e9sultats<\/h3>\n<p><\/p>\n<p>Avec des ressources burstable dans le cluster, vous utilisez plus efficacement le mat\u00e9riel disponible, mais le planificateur Kubernetes planifie les pods en fonction des demandes de ressources, ce qui peut poser des probl\u00e8mes. Pour obtenir deux avantages : \u00e9viter les probl\u00e8mes et utiliser les ressources au maximum, un bon monitoring est n\u00e9cessaire. C'est pour cela qu'il sera utile. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex> (exportateur Prometheus et tableau de bord Grafana).<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/447336\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042f \u0441\u043e\u0437\u0434\u0430\u043b Kube Eagle\u00a0\u2014 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440 Prometheus. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043a\u0440\u0443\u0442\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0438 \u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432. \u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b \u043d\u0435 \u043e\u0434\u043d\u0443 \u0441\u043e\u0442\u043d\u044e \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043c\u0430\u0448\u0438\u043d \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u0445 Kube Eagle, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u044e, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u044b\u0448\u0435\u043b \u0441\u044b\u0440-\u0431\u043e\u0440 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23107,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31139","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:39:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Surveillons les ressources des clusters Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes | ProHoster","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:39:40+00:00","article:modified_time":"2019-10-31T18:39:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31139","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 04:42:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:22:34","updated":"2026-01-21 04:42:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=31139"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/23107"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=31139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=31139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=31139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}