{"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\/sv\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","title":{"rendered":"\u00d6vervaka resurser i Kubernetes-kluster","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=\"\u00d6vervaka resurser i Kubernetes-kluster\" src=\"\/wp-content\/uploads\/2019\/04\/e3e07ee5a2271263948b3d3b39f3b66d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Jag skapade Kube Eagle \u2013 en Prometheus-export\u00f6r. Det visade sig vara en fantastisk sak som hj\u00e4lper till att f\u00f6rst\u00e5 resurserna i sm\u00e5 och medelstora kluster b\u00e4ttre. I slut\u00e4ndan sparade jag flera hundra dollar eftersom jag valde r\u00e4tt typ av maskiner och justerade begr\u00e4nsningarna f\u00f6r resurserna till applikationerna utifr\u00e5n arbetsbelastningen.<\/p>\n<p><\/p>\n<p>Jag kommer att ber\u00e4tta om f\u00f6rdelarna <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex>, men f\u00f6rst f\u00f6rklarar jag vad som ledde till problemet och varf\u00f6r kvalitetsmonitorering beh\u00f6vdes.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Jag hanterade flera kluster med 4 till 50 noder. I varje kluster fanns upp till 200 mikrotj\u00e4nster och applikationer. F\u00f6r att effektivare anv\u00e4nda den tillg\u00e4ngliga h\u00e5rdvaran var de flesta distribuerade med burstable RAM och CPU-resurser. S\u00e5 poddar kan ta tillg\u00e4ngliga resurser vid behov utan att st\u00f6ra andra applikationer p\u00e5 den noden. \u00c4r det inte fantastiskt?<\/p>\n<p><\/p>\n<p>Och \u00e4ven om klustret f\u00f6rbrukade relativt lite CPU (8%) och minne (40%), hade vi st\u00e4ndigt problem med att poddar blev utdrivna n\u00e4r de f\u00f6rs\u00f6kte ta mer minne \u00e4n vad som fanns tillg\u00e4ngligt p\u00e5 noden. D\u00e5 hade vi bara en panel f\u00f6r att \u00f6vervaka Kubernetes-resurser. S\u00e5 h\u00e4r s\u00e5g den ut:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qr\/cp\/x2\/qrcpx2avguhqnbxxg7trlxfnh4u.png\"><img decoding=\"async\" alt=\"\u00d6vervaka resurser i Kubernetes-kluster\" src=\"\/wp-content\/uploads\/2019\/04\/4ff784375fd4d01cc420d0d5b6389524.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em>Grafana-panel med endast cAdvisor-metrik<\/em><\/p>\n<p><\/p>\n<p>Med en s\u00e5dan panel \u00e4r det enkelt att se noder som konsumerar mycket minne och CPU. Problemet \u00e4r att f\u00f6rst\u00e5 orsaken. F\u00f6r att poddarna skulle stanna kvar p\u00e5 plats kunde vi sj\u00e4lvklart st\u00e4lla in garanterade resurser p\u00e5 alla poddar (beg\u00e4rda resurser \u00e4r lika med gr\u00e4nsen). Men det \u00e4r inte det smartaste s\u00e4ttet att anv\u00e4nda h\u00e5rdvaran. Klustret hade flera hundra gigabyte minne, men vissa noder led av resursbrist medan andra hade 4 till 10 GB \u00f6ver.<\/p>\n<p><\/p>\n<p>Det visar sig att Kubernetes-planeraren f\u00f6rdelade arbetsbelastningen oj\u00e4mnt \u00f6ver de tillg\u00e4ngliga resurserna. Kubernetes-planeraren tar h\u00e4nsyn till olika konfigurationer: affinity-regler, taints och tolerations, nodselekterare som kan begr\u00e4nsa tillg\u00e4ngliga noder. Men i mitt fall fanns inget s\u00e5dant, och poddar planerades utifr\u00e5n beg\u00e4rda resurser p\u00e5 varje nod.<\/p>\n<p><\/p>\n<p>F\u00f6r en podd valdes en nod som hade mest lediga resurser och som uppfyllde beg\u00e4rans villkor. Vi fick en situation d\u00e4r de beg\u00e4rda resurserna p\u00e5 noderna inte matchade den faktiska anv\u00e4ndningen, och h\u00e4r kom Kube Eagle in i bilden med sina \u00f6vervakningsm\u00f6jligheter.<\/p>\n<p><\/p>\n<p>N\u00e4stan alla mina Kubernetes-kluster \u00f6vervakades endast med <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/node_exporter\">Node exporter<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\">Kube State Metrics<\/a><\/noindex>. Node Exporter ger statistik \u00f6ver in- och utdata samt anv\u00e4ndning av disk, CPU och RAM, medan Kube State Metrics visar metrik f\u00f6r Kubernetes-objekt, s\u00e5som resursf\u00f6rfr\u00e5gningar och begr\u00e4nsningar f\u00f6r CPU och minne.<\/p>\n<p><\/p>\n<p>Vi beh\u00f6ver kombinera anv\u00e4ndningsmetrik med resursf\u00f6rfr\u00e5gningar och begr\u00e4nsningar i Grafana, s\u00e5 f\u00e5r vi all information om problemet. Det l\u00e5ter enkelt, men i dessa tv\u00e5 verktyg kallas ceptorna olika, och vissa metrik har helt enkelt inga metadata-taggar. Kube Eagle sk\u00f6ter allt automatiskt och instrumentpanelen ser ut s\u00e5 h\u00e4r:<\/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=\"\u00d6vervaka resurser i Kubernetes-kluster\" 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=\"\u00d6vervaka resurser i Kubernetes-kluster\" 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\">Kube Eagle-m\u00e4tpanel<\/a><\/noindex><\/em><\/p>\n<p><\/p>\n<p>Vi har lyckats l\u00f6sa m\u00e5nga resursproblem och spara utrustning:<\/p>\n<p><\/p>\n<ol>\n<li>Vissa utvecklare visste inte hur m\u00e5nga resurser mikrotj\u00e4nsterna beh\u00f6vde (eller brydde sig helt enkelt inte). Vi hade inget s\u00e4tt att hitta felaktiga resursf\u00f6rfr\u00e5gningar - f\u00f6r detta beh\u00f6vs b\u00e5de konsumtion och beg\u00e4rningar och begr\u00e4nsningar. Nu ser de Prometheus-m\u00e5tt, \u00f6vervakar faktisk anv\u00e4ndning och justerar sina f\u00f6rfr\u00e5gningar och begr\u00e4nsningar.<\/li>\n<li>JVM-applikationer tar s\u00e5 mycket RAM som m\u00f6jligt. Skr\u00e4psamlaren frig\u00f6r minne endast om mer \u00e4n 75 % anv\u00e4nds. Eftersom majoriteten av tj\u00e4nsterna har burstable minne, upptogs det alltid av JVM. D\u00e4rf\u00f6r \u00e5t alla dessa Java-tj\u00e4nster betydligt mer RAM \u00e4n v\u00e4ntat.<\/li>\n<li>Vissa applikationer beg\u00e4rde f\u00f6r mycket minne, och Kubernetes-schemal\u00e4ggaren gav inte dessa noder till andra applikationer, \u00e4ven om de i verkligheten var ledigare \u00e4n andra noder. En utvecklare r\u00e5kade skriva in en extra siffra i sin beg\u00e4ran och tog en stor del av RAM: 20 GB ist\u00e4llet f\u00f6r 2. Ingen m\u00e4rkte n\u00e5got. Applikationen hade 3 repliker, s\u00e5 det drabbade hela 3 noder.<\/li>\n<li>Vi inf\u00f6rde resursbegr\u00e4nsningar, omplanerade pods med r\u00e4tt f\u00f6rfr\u00e5gningar och fick en perfekt balans i h\u00e5rdvaruanv\u00e4ndningen \u00f6ver alla noder. Ett par noder kunde till och med st\u00e4ngas ner. Och sedan s\u00e5g vi att vi hade fel typ av maskiner (fokuserade p\u00e5 CPU ist\u00e4llet f\u00f6r minne). Vi bytte typ och tog bort ytterligare n\u00e5gra noder.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"itogi\">Sammanfattning<\/h3>\n<p><\/p>\n<p>Med burstable resurser i klustret utnyttjar du den tillg\u00e4ngliga h\u00e5rdvaran effektivare, men Kubernetes-schemal\u00e4ggaren planerar pods utifr\u00e5n resursf\u00f6rfr\u00e5gningar, vilket kan bli problematiskt. F\u00f6r att d\u00f6da tv\u00e5 flugor i en sm\u00e4ll: undvika problem och maximera resursanv\u00e4ndningen, beh\u00f6vs bra \u00f6vervakning. Det \u00e4r h\u00e4r Kube Eagle kommer in. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex> (export\u00f6r f\u00f6r Prometheus och Grafana \u00f6vervakningspanel).<\/p>\n<p>K\u00e4lla: <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.5 - 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\/sv\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47\u00d6vervaka resurser f\u00f6r Kubernetes-kluster | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/31139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=31139"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/23107"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=31139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=31139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=31139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}