{"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\/it\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","title":{"rendered":"Monitoriamo le risorse dei cluster 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=\"Monitoriamo le risorse dei cluster Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/04\/e3e07ee5a2271263948b3d3b39f3b66d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Ho creato Kube Eagle \u2014 un esportatore di Prometheus. Si \u00e8 rivelato uno strumento eccezionale che aiuta a comprendere meglio le risorse di piccoli e medi cluster. Alla fine ho risparmiato diverse centinaia di dollari, perch\u00e9 ho selezionato i giusti tipi di macchine e configurato i limiti delle risorse delle applicazioni in base ai carichi di lavoro.<\/p>\n<p><\/p>\n<p>Parler\u00f2 dei vantaggi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex>, ma prima spiegher\u00f2 da dove \u00e8 nata la confusione e perch\u00e9 era necessario un monitoraggio di qualit\u00e0.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ho gestito diversi cluster con 4\u201350 nodi. In ogni cluster ci sono fino a 200 microservizi e applicazioni. Per utilizzare in modo pi\u00f9 efficiente l'hardware disponibile, la maggior parte dei deployment \u00e8 stata configurata con memoria e risorse CPU burstable. In questo modo i pod possono utilizzare le risorse disponibili quando necessario, senza disturbare altre applicazioni su quel nodo. Non \u00e8 fantastico?<\/p>\n<p><\/p>\n<p>E anche se il cluster consumava relativamente poca CPU (8%) e memoria (40%), avevamo costantemente problemi di espulsione dei pod quando cercavano di allocare pi\u00f9 memoria di quella disponibile sul nodo. All'epoca avevamo solo un pannello per il monitoraggio delle risorse di Kubernetes. Ecco di che tipo:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qr\/cp\/x2\/qrcpx2avguhqnbxxg7trlxfnh4u.png\"><img decoding=\"async\" alt=\"Monitoriamo le risorse dei cluster Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/04\/4ff784375fd4d01cc420d0d5b6389524.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em>Pannello Grafana solo con metriche cAdvisor<\/em><\/p>\n<p><\/p>\n<p>Con tale pannello, \u00e8 facile individuare i nodi che consumano molta memoria e CPU. Il problema \u00e8 capire qual \u00e8 la causa. Per mantenere i pod in posizione, avremmo potuto configurare risorse garantite su tutti i pod (le risorse richieste equivalgono al limite). Ma non \u00e8 il modo pi\u00f9 intelligente di utilizzare l'hardware. Nel cluster c'erano diverse centinaia di gigabyte di memoria, mentre alcuni nodi erano a corto di risorse e altri avevano disponibili 4\u201310 GB.<\/p>\n<p><\/p>\n<p>Quindi, il pianificatore Kubernetes distribuiva i carichi di lavoro sulle risorse disponibili in modo non uniforme. Il pianificatore Kubernetes tiene conto di diverse configurazioni: regole di affinit\u00e0, taint e toleration, selettori di nodi che possono limitare i nodi disponibili. Ma nel mio caso non c'era nulla del genere, e i pod venivano pianificati in base alle risorse richieste su ogni nodo.<\/p>\n<p><\/p>\n<p>Per ogni pod, veniva scelto un nodo che avesse pi\u00f9 risorse disponibili e che soddisfacesse i criteri della richiesta. Cos\u00ec abbiamo scoperto che le risorse richieste sui nodi non corrispondevano all'utilizzo effettivo, ed \u00e8 qui che Kube Eagle \u00e8 intervenuto con le sue capacit\u00e0 di monitoraggio delle risorse.<\/p>\n<p><\/p>\n<p>Quasi tutti i miei cluster Kubernetes erano monitorati solo con <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/node_exporter\">Node exporter<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\">Kube State Metrics<\/a><\/noindex>. Node Exporter fornisce statistiche su input\/output e utilizzo di disco, CPU e memoria RAM, mentre Kube State Metrics mostra le metriche degli oggetti Kubernetes, come richieste e limiti sulle risorse di CPU e memoria.<\/p>\n<p><\/p>\n<p>Dobbiamo combinare le metriche di utilizzo con le metriche di richieste e limiti in Grafana, e poi avremo tutte le informazioni sul problema. Sembra semplice, ma in realt\u00e0 in questi due strumenti le etichette vengono chiamate in modo diverso, e alcune metriche non hanno affatto etichette di metadati. Kube Eagle fa tutto da solo e il pannello appare cos\u00ec:<\/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=\"Monitoriamo le risorse dei cluster 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=\"Monitoriamo le risorse dei cluster 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\">Pannello di monitoraggio Kube Eagle<\/a><\/noindex><\/em><\/p>\n<p><\/p>\n<p>Siamo riusciti a risolvere molti problemi di risorse e a risparmiare attrezzature:<\/p>\n<p><\/p>\n<ol>\n<li>Alcuni sviluppatori non sapevano quante risorse servissero ai microservizi (o semplicemente non se ne preoccupavano). Non avevamo modo di trovare richieste errate sulle risorse \u2014 per questo bisogna conoscere i consumi oltre a richieste e limiti. Ora vedono le metriche di Prometheus, monitorano l'utilizzo effettivo e regolano richieste e limiti.<\/li>\n<li>Le applicazioni JVM occupano tutta la memoria RAM di cui hanno bisogno. Il garbage collector libera la memoria solo se viene utilizzato pi\u00f9 del 75%. E poich\u00e9 la maggior parte dei servizi utilizza memoria burstable, era sempre occupata dalla JVM. Di conseguenza, tutti questi servizi Java consumavano molta pi\u00f9 memoria RAM di quanto previsto.<\/li>\n<li>Alcune applicazioni richiedevano troppa memoria, e il planner Kubernetes non assegnava queste nodi ad altre applicazioni, anche se in realt\u00e0 erano pi\u00f9 libere di altre nodi. Uno sviluppatore ha accidentalmente aggiunto una cifra in pi\u00f9 nella richiesta, occupando un grosso pezzo di memoria RAM: 20 GB invece di 2. Nessuno se n'\u00e8 accorto. L'applicazione aveva 3 repliche, quindi 3 nodi sono stati colpiti.<\/li>\n<li>Abbiamo imposto limiti sulle risorse, riprogettato i pod con richieste corrette e ottenuto un perfetto bilanciamento nell'utilizzo dell'hardware su tutti i nodi. Alcuni nodi potevano essere addirittura spenti. Poi abbiamo notato che avevamo macchine errate (orientate sulla CPU, non sulla memoria). Abbiamo cambiato tipo e rimosso altri nodi.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"itogi\">Conclusioni<\/h3>\n<p><\/p>\n<p>Con risorse burstable nel cluster si utilizza in modo pi\u00f9 efficiente l'hardware disponibile, ma il planner Kubernetes pianifica i pod in base alle richieste di risorse, il che \u00e8 rischioso. Per uccidere due piccioni con una fava: evitare problemi e utilizzare le risorse al massimo, \u00e8 necessario un buon monitoraggio. \u00c8 proprio per questo che servir\u00e0. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex> (esportatore Prometheus e pannello di monitoraggio Grafana).<\/p>\n<p>Fonte: <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.1.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\/it\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Monitoriamo le risorse dei cluster Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/31139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31139"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23107"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}