{"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\/ro\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","title":{"rendered":"Monitoriz\u0103m resursele clusterelor 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=\"Monitoriz\u0103m resursele clusterelor Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e3e07ee5a2271263948b3d3b39f3b66d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Am creat Kube Eagle \u2013 un exporter Prometheus. S-a dovedit a fi o unealt\u0103 grozav\u0103, care ajut\u0103 la \u00een\u021belegerea mai bun\u0103 a resurselor \u00een clusterele mici \u0219i medii. \u00cen final, am economisit c\u00e2teva sute de dolari, deoarece am ales tipurile corecte de ma\u0219ini \u0219i am configurat limit\u0103rile resurselor aplica\u021biilor \u00een func\u021bie de sarcinile de lucru.<\/p>\n<p><\/p>\n<p>Voi vorbi despre avantajele <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex>, dar mai \u00eent\u00e2i voi explica de ce a ap\u0103rut o problem\u0103 \u0219i de ce a fost necesar\u0103 o monitorizare de calitate.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Am gestionat mai multe clustere cu 4\u201350 de noduri. \u00cen fiecare cluster sunt p\u00e2n\u0103 la 200 de microservicii \u0219i aplica\u021bii. Pentru a folosi mai eficient echipamentele existente, majoritatea implement\u0103rilor au fost configurate cu memorie \u0219i resurse CPU de tip burstable. Astfel, podurile pot utiliza resursele disponibile, dac\u0103 este necesar, f\u0103r\u0103 a deranja alte aplica\u021bii de pe acest nod. Nu este grozav?<\/p>\n<p><\/p>\n<p>\u0218i, de\u0219i clusterul consuma relativ pu\u021bin CPU (8%) \u0219i memorie (40%), \u00eent\u00e2mpinam constant probleme cu eliminarea podurilor atunci c\u00e2nd \u00eencercau s\u0103 aloce mai mult\u0103 memorie dec\u00e2t era disponibil pe nod. Atunci am avut doar o singur\u0103 panou pentru monitorizarea resurselor Kubernetes. Iat\u0103-l:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qr\/cp\/x2\/qrcpx2avguhqnbxxg7trlxfnh4u.png\"><img decoding=\"async\" alt=\"Monitoriz\u0103m resursele clusterelor Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/4ff784375fd4d01cc420d0d5b6389524.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em>Panoul Grafana doar cu metrice cAdvisor<\/em><\/p>\n<p><\/p>\n<p>Cu un astfel de panou, este u\u0219or s\u0103 vezi nodurile care consum\u0103 mult\u0103 memorie \u0219i CPU. Problema este s\u0103 \u00een\u021belegi care este cauza. Pentru ca podurile s\u0103 r\u0103m\u00e2n\u0103 \u00een loc, am putea, desigur, s\u0103 configur\u0103m resursele garantate pe toate podurile (resursele solicitate sunt egale cu limita). Dar nu este cea mai inteligent\u0103 utilizare a echipamentului. Clusterele aveau c\u00e2teva sute de gigaocte\u021bi de memorie, \u00een timp ce unele noduri sufereau de foame, iar altele aveau de rezerv\u0103 \u00eentre 4\u201310 GB.<\/p>\n<p><\/p>\n<p>Se dovede\u0219te c\u0103 planificatorul Kubernetes distribuia sarcinile de lucru pe resursele disponibile inegal. Planificatorul Kubernetes ia \u00een considerare diferite configura\u021bii: regulile de afinitate, taints \u0219i tolerations, selec\u021bii de noduri, care pot restric\u021biona nodurile disponibile. Dar \u00een cazul meu nu existau astfel de condi\u021bii, iar podurile erau planificate \u00een func\u021bie de resursele solicitate pe fiecare nod.<\/p>\n<p><\/p>\n<p>Pentru un pod era aleas\u0103 nodul cu cele mai multe resurse libere \u0219i care \u00eendeplinea condi\u021biile cererii. Se \u00eent\u00e2mpla c\u0103 resursele solicitate pe noduri nu coincideau cu utilizarea efectiv\u0103, iar aici a intervenit Kube Eagle \u0219i capacit\u0103\u021bile sale de monitorizare a resurselor.<\/p>\n<p><\/p>\n<p>Am monitorizat aproape toate clusterele Kubernetes doar cu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/node_exporter\">Node exporter<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\">Kube State Metrics<\/a><\/noindex>Node Exporter ofer\u0103 statisticile despre intrare-ie\u0219ire \u0219i utilizarea discului, CPU \u0219i memorie, iar Kube State Metrics afi\u0219eaz\u0103 metricile obiectelor Kubernetes, cum ar fi cererile \u0219i limitele resurselor CPU \u0219i memorie.<\/p>\n<p><\/p>\n<p>Trebuie s\u0103 combin\u0103m metricile de utilizare cu metricile cererilor \u0219i limitelor \u00een Grafana, \u0219i atunci vom ob\u021bine toate informa\u021biile despre problem\u0103. Pare simplu, dar \u00een realitate aceste dou\u0103 instrumente denumesc diferit etichetele, iar unele metrici nu au deloc etichete de metadate. Kube Eagle face totul automat \u0219i panoul arat\u0103 astfel:<\/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=\"Monitoriz\u0103m resursele clusterelor 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=\"Monitoriz\u0103m resursele clusterelor 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\">Panoul de monitorizare Kube Eagle<\/a><\/noindex><\/em><\/p>\n<p><\/p>\n<p>Am reu\u0219it s\u0103 rezolv\u0103m multe probleme cu resursele \u0219i s\u0103 economisim echipamente:<\/p>\n<p><\/p>\n<ol>\n<li>Unii dezvoltatori nu \u0219tiau c\u00e2te resurse aveau nevoie microserviciile (sau pur \u0219i simplu nu se complicau cu asta). Nu aveam cu ce s\u0103 identific\u0103m cererile eronate la resurse - pentru asta trebuie s\u0103 \u0219tim consumul plus cererile \u0219i limitele. Acum v\u0103d metricile Prometheus, monitorizeaz\u0103 utilizarea efectiv\u0103 \u0219i ajusteaz\u0103 cererile \u0219i limitele.<\/li>\n<li>Aplica\u021biile JVM consum\u0103 at\u00e2ta memorie RAM c\u00e2t pot. Colectorul de gunoi elibereaz\u0103 memoria doar c\u00e2nd este utilizat mai mult de 75%. \u0218i, av\u00e2nd \u00een vedere c\u0103 majoritatea serviciilor folosesc memorie burstable, JVM-ul o ocupa \u00eentotdeauna. Din acest motiv, toate aceste servicii Java consumau mult mai mult\u0103 memorie RAM dec\u00e2t era de a\u0219teptat.<\/li>\n<li>Unele aplica\u021bii solicitau prea mult\u0103 memorie, iar programatorul Kubernetes nu oferea acele noduri altor aplica\u021bii, de\u0219i \u00een realitate erau mai libere dec\u00e2t alte noduri. Un dezvoltator a ad\u0103ugat din gre\u0219eal\u0103 o cifr\u0103 \u00een plus la cerere \u0219i a capturat un segment mare de memorie RAM: 20 GB \u00een loc de 2. Nimeni nu a observat. Aplica\u021bia avea 3 replici, astfel c\u0103 3 noduri au fost afectate.<\/li>\n<li>Am impus limite la resurse, am reproiectat podurile cu cereri corecte \u0219i am ob\u021binut un echilibru perfect al utiliz\u0103rii echipamentelor \u00eentre toate nodurile. Unele noduri puteau fi chiar \u00eenchise. Apoi am realizat c\u0103 aveam ma\u0219ini gre\u0219ite (orientate pe CPU, nu pe memorie). Am schimbat tipul \u0219i am eliminat \u00eenc\u0103 c\u00e2teva noduri.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"itogi\">Concluzii<\/h3>\n<p><\/p>\n<p>Cu resurse burstable \u00een cluster, utiliza\u021bi mai eficient echipamentele disponibile, dar planificatorul Kubernetes \u00ee\u0219i planific\u0103 podurile \u00een func\u021bie de cererile de resurse, ceea ce poate fi riscant. Pentru a omor\u00ee doi iepuri dintr-o lovitur\u0103: pentru a evita problemele \u0219i a utiliza resursele la maximum, este nevoie de un bun sistem de monitorizare. Acesta este exact ceea ce este necesar. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex> (expeditor Prometheus \u0219i panou de monitorizare Grafana).<\/p>\n<p>Sursa: <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.1 - 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\/ro\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Monitoriz\u0103m resursele clusterele Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/31139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31139"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23107"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}