{"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\/da\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","title":{"rendered":"Overv\u00e5gning af ressourcer i Kubernetes-klynger","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=\"Overv\u00e5gning af ressourcer i Kubernetes-klynger\" src=\"\/wp-content\/uploads\/2019\/04\/e3e07ee5a2271263948b3d3b39f3b66d.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Jeg har skabt Kube Eagle \u2013 en Prometheus-udbyder. Det viste sig at v\u00e6re et fantastisk v\u00e6rkt\u00f8j, der hj\u00e6lper med at f\u00e5 et bedre overblik over ressourcerne i sm\u00e5 og mellemstore klynger. I sidste ende har jeg sparet mange penge, fordi jeg kunne v\u00e6lge de rigtige maskintyper og justere ressourcegr\u00e6nserne for applikationer i forhold til arbejdsbelastningen.<\/p>\n<p><\/p>\n<p>Jeg vil fort\u00e6lle om fordelene ved <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex>, men f\u00f8rst vil jeg forklare, hvad der ledte til forvirringen, og hvorfor der var brug for en kvalitetsmonitorering.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Jeg har administreret flere klynger med 4-50 noder. Hver klynge har op til 200 mikrotjenester og applikationer. For at udnytte det eksisterende hardware bedre var de fleste deployment konfigureret med burstandart RAM og CPU-ressourcer. P\u00e5 den m\u00e5de kan pods tage de tilg\u00e6ngelige ressourcer, n\u00e5r det er n\u00f8dvendigt, uden at forstyrre de andre applikationer p\u00e5 den samme node. Er det ikke fantastisk?<\/p>\n<p><\/p>\n<p>Og selvom klyngen kun brugte relativt lidt CPU (8%) og RAM (40%), havde vi hele tiden problemer med at uds\u00e6tte pods, n\u00e5r de fors\u00f8gte at allokere mere hukommelse, end der var tilg\u00e6ngeligt p\u00e5 noden. Vi havde s\u00e5 kun et enkelt dashboard til overv\u00e5gning af Kubernetes-ressourcer. S\u00e5dan her:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qr\/cp\/x2\/qrcpx2avguhqnbxxg7trlxfnh4u.png\"><img decoding=\"async\" alt=\"Overv\u00e5gning af ressourcer i Kubernetes-klynger\" src=\"\/wp-content\/uploads\/2019\/04\/4ff784375fd4d01cc420d0d5b6389524.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em>Grafana-dashboard kun med cAdvisor-metrics<\/em><\/p>\n<p><\/p>\n<p>Med et s\u00e5dant dashboard er det ikke et problem at se noder, der bruger meget RAM og CPU. Problemet er at finde ud af, hvad \u00e5rsagen er. For at sikre, at pods forbliver aktive, kunne man selvf\u00f8lgelig have konfigureret garanterede ressourcer for alle pods (anmodede ressourcer er lig med gr\u00e6nsen). Men det er ikke den mest intelligente anvendelse af hardware. Klyngen havde flere hundrede gigabyte hukommelse, mens nogle noder led, mens andre havde 4-10 GB til overs.<\/p>\n<p><\/p>\n<p>Det viser sig, at Kubernetes-planl\u00e6ggeren fordelte arbejdsbelastningerne uensartet p\u00e5 de tilg\u00e6ngelige ressourcer. Kubernetes-planl\u00e6ggeren tager forskellige konfigurationer i betragtning: affinity-regler, taints og tolerations, node-selektorer, som kan begr\u00e6nse de tilg\u00e6ngelige noder. Men i mit tilf\u00e6lde var der ikke noget af det, og pods blev planlagt i forhold til de anmodede ressourcer p\u00e5 hver node.<\/p>\n<p><\/p>\n<p>For hvert pod blev der valgt en node med flest ledige ressourcer, som opfyldte anmodningskriterierne. Det viste sig, at de anmodede ressourcer p\u00e5 noderne ikke svarede til det faktiske forbrug, og her kom Kube Eagle og dets ressourceoverv\u00e5gningsmuligheder til hj\u00e6lp.<\/p>\n<p><\/p>\n<p>Jeg har n\u00e6sten alle Kubernetes-klynger overv\u00e5get kun med <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/node_exporter\">Node exporter<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kube-state-metrics\">Kube State Metrics<\/a><\/noindex>. Node Exporter giver statistik om input-output og brug af disk, CPU og RAM, mens Kube State Metrics viser metrics for Kubernetes-objekter som fx anmodninger og gr\u00e6nser for CPU- og hukommelsesressourcer.<\/p>\n<p><\/p>\n<p>Vi skal kombinere brugsmetrics med anmodnings- og gr\u00e6nsmetrics i Grafana, og s\u00e5 f\u00e5r vi al information om problemet. Det lyder simpelt, men i disse to v\u00e6rkt\u00f8jer kaldes labels forskelligt, og nogle metrics har slet ikke metadata labels. Kube Eagle klarer det hele selv, og panelet ser s\u00e5dan ud:<\/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=\"Overv\u00e5gning af ressourcer i Kubernetes-klynger\" 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=\"Overv\u00e5gning af ressourcer i Kubernetes-klynger\" 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 dashboard<\/a><\/noindex><\/em><\/p>\n<p><\/p>\n<p>Vi har v\u00e6ret i stand til at l\u00f8se mange ressourcem\u00e6ssige problemer og spare p\u00e5 udstyret:<\/p>\n<p><\/p>\n<ol>\n<li>Nogle udviklere vidste ikke, hvor mange ressourcer der var behov for hos mikrotjenesterne (eller gad bare ikke t\u00e6nke over det). Vi havde ikke v\u00e6rkt\u00f8jerne til at finde forkerte ressourceanmodninger \u2014 for det kr\u00e6ver, at man kender forbrug plus anmodninger og gr\u00e6nser. Nu kan de se Prometheus-metrics, overv\u00e5ge det faktiske forbrug og justere anmodningerne og gr\u00e6nserne.<\/li>\n<li>JVM-applikationer tager s\u00e5 meget RAM, som de kan b\u00e6re. Garbage collector frigiver hukommelse, kun hvis mere end 75% anvendes. Og da de fleste tjenester har burstable hukommelse, tog JVM altid den plads. Derfor brugte alle disse Java-tjenester meget mere RAM end forventet.<\/li>\n<li>Nogle applikationer anmodede om for meget hukommelse, og Kubernetes-planl\u00e6ggeren gav ikke disse noder til de andre applikationer, selvom de faktisk var mindre belastede end andre noder. En udvikler tilf\u00f8jede ved et uheld et ekstra ciffer i anmodningen og beslaglagde en stor del hukommelse: 20 GB i stedet for 2. Ingen lagde m\u00e6rke til det. Applikationen havde 3 replikaer, s\u00e5 3 noder var ramt.<\/li>\n<li>Vi indf\u00f8rte ressourcestramme, omplanlagde pods med de rigtige anmodninger og opn\u00e5ede en perfekt balance i ressourceudnyttelsen p\u00e5 tv\u00e6rs af alle noder. Et par noder kunne faktisk lukkes ned. Og s\u00e5 s\u00e5 vi, at vi havde de forkerte maskiner (orienteret mod CPU, ikke hukommelse). Vi \u00e6ndrede type og fjernede yderligere et par noder.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"itogi\">Resum\u00e9<\/h3>\n<p><\/p>\n<p>Med burstable ressourcer i klyngen bruger du dit hardware mere effektivt, men Kubernetes-planl\u00e6ggeren planl\u00e6gger pods baseret p\u00e5 ressourceanmodninger, hvilket kan v\u00e6re problematisk. For at dr\u00e6be to fluer med \u00e9t sm\u00e6k: undg\u00e5 problemer og udnytte ressourcerne fuldt ud \u2014 er der brug for en god overv\u00e5gning. Det er her, [eksport\u00f8r Prometheus og panel overv\u00e5gning Grafana] kommer ind i billedet. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex> (export\u00f8r Prometheus og panel overv\u00e5gning Grafana).<\/p>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Overv\u00e5ger ressourcerne i Kubernetes-klynger | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/31139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=31139"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/23107"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=31139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=31139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=31139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}