{"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\/no\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","title":{"rendered":"Overv\u00e5ker ressurser 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\u00e5ker ressurser 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 laget Kube Eagle \u2013 en Prometheus-eksport\u00f8r. Det viste seg \u00e5 v\u00e6re en flott l\u00f8sning som hjelper til med \u00e5 forst\u00e5 ressursene i sm\u00e5 og mellomstore klynger bedre. Resultatet er at jeg har spart flere hundre dollar fordi jeg har valgt de riktige maskintypene og tilpasset ressursbegrensningene for applikasjonene etter arbeidsbelastningen.<\/p>\n<p><\/p>\n<p>Jeg vil fortelle om fordelene <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex>, men f\u00f8rst vil jeg forklare hva som f\u00f8rte til problemene og hvorfor vi trengte en kvalitetsmonitorering.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Jeg har administrert flere klynger med 4\u201350 noder. I hver klynge er det opptil 200 mikroseriver og applikasjoner. For \u00e5 bruke det tilgjengelige maskinvaren mer effektivt, ble de fleste distribusjoner konfigurert med burstable minne og CPU-ressurser. P\u00e5 denne m\u00e5ten kan podden ta tilgjengelige ressurser n\u00e5r det trengs, uten \u00e5 forstyrre andre applikasjoner p\u00e5 denne noden. Er ikke det flott?<\/p>\n<p><\/p>\n<p>Og selv om klyngen forbrukte relativt lite CPU (8%) og minne (40%), oppstod det stadig problemer med \u00e5 fordrive poddene n\u00e5r de pr\u00f8vde \u00e5 tildele mer minne enn det som var tilgjengelig p\u00e5 noden. Da hadde vi bare ett panel for overv\u00e5king av Kubernetes-ressurser. Slik s\u00e5 det 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=\"Overv\u00e5ker ressurser i Kubernetes-klynger\" src=\"\/wp-content\/uploads\/2019\/04\/4ff784375fd4d01cc420d0d5b6389524.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<em>Grafana-panel kun med cAdvisor-metrikker<\/em><\/p>\n<p><\/p>\n<p>Med et slikt panel er det ikke et problem \u00e5 se noder som bruker mye minne og CPU. Problemet er \u00e5 finne \u00e5rsaken. For at poddene skulle bli v\u00e6rende p\u00e5 plass, kunne man selvf\u00f8lgelig ha satt opp garanterte ressurser p\u00e5 alle poddene (forespurte ressurser er lik grensen). Men det er ikke den smarteste bruken av maskinvaren. Klyngen hadde flere hundre gigabyte minne, mens noen noder sultet og andre hadde 4\u201310 GB tilgjengelig.<\/p>\n<p><\/p>\n<p>Det viser seg at Kubernetes-planleggeren fordelte arbeidsbelastningene ujevnt basert p\u00e5 tilgjengelige ressurser. Kubernetes-planleggeren tar hensyn til forskjellige konfigurasjoner: affinity-regler, taints og tolereringer, nodeselektorer som kan begrense tilgjengelige noder. Men i mitt tilfelle var det ikke noe slikt, og poddene ble planlagt basert p\u00e5 de forespurte ressursene p\u00e5 hver node.<\/p>\n<p><\/p>\n<p>For en pod ble det valgt en node med flest tilgjengelige ressurser som oppfylte foresp\u00f8rselens betingelser. Det vi oppdaget var at de forespurte ressursene p\u00e5 nodene ikke samsvarte med det faktiske forbruket, og her kom Kube Eagle og dens overv\u00e5kingsmuligheter til unnsetning.<\/p>\n<p><\/p>\n<p>Nesten alle Kubernetes-klynger mine ble overv\u00e5ket bare 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 gir statistikk for inn- og utdata, diskbruk, CPU og minnebruk, mens Kube State Metrics viser metrikker for Kubernetes-objekter, som CPU- og minneforesp\u00f8rsel og begrensninger.<\/p>\n<p><\/p>\n<p>Vi trenger \u00e5 kombinere bruksmetrikker med foresp\u00f8rsels- og begrensningsmetrikker i Grafana, s\u00e5 vi f\u00e5r all informasjon om problemet. Det h\u00f8res enkelt ut, men i disse to verkt\u00f8yene har etikettene forskjellige navn, og noen metrikker har ikke metadataetiketter i det hele tatt. Kube Eagle gj\u00f8r alt dette selv, og panelet ser slik ut:<\/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\u00e5ker ressurser 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\u00e5ker ressurser 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-overv\u00e5kningspanelet<\/a><\/noindex><\/em><\/p>\n<p><\/p>\n<p>Vi har lykkes med \u00e5 l\u00f8se mange ressursproblemer og spare hardware:<\/p>\n<p><\/p>\n<ol>\n<li>Noen utviklere visste ikke hvor mye ressurser mikrotjenester trenger (eller brydde seg ikke). Vi hadde ingen m\u00e5te \u00e5 oppdage feilaktige ressursforesp\u00f8rsler p\u00e5 \u2014 for dette m\u00e5 man kjenne til forbruket pluss foresp\u00f8rslene og begrensningene. N\u00e5 ser de Prometheus-metrikker, overv\u00e5ker det faktiske forbruket og justerer foresp\u00f8rslene og begrensningene.<\/li>\n<li>JVM-applikasjoner bruker s\u00e5 mye minne som de kan. S\u00f8ppelsamleren frigj\u00f8r minne bare n\u00e5r mer enn 75% er i bruk. Og siden de fleste tjenester har burstable minne, ble det alltid opptatt av JVM. Derfor brukte alle disse Java-tjenestene mye mer minne enn forventet.<\/li>\n<li>Noen applikasjoner ba om for mye minne, og Kubernetes-planleggeren ga ikke disse nodene til andre applikasjoner, selv om de faktisk var mer ledige enn andre noder. En utvikler la tilfeldig til et ekstra tall i foresp\u00f8rselen og tok en stor del av minnet: 20 GB i stedet for 2. Ingen la merke til det. Applikasjonen hadde 3 replikaer, s\u00e5 det p\u00e5virket faktisk 3 noder.<\/li>\n<li>Vi innf\u00f8rte ressursbegrensninger, omplanla podene med riktige foresp\u00f8rselene og oppn\u00e5dde perfekt balanse mellom bruken av maskinvare p\u00e5 alle nodene. Noen noder kunne faktisk stenges. S\u00e5 vi oppdaget at vi hadde feil maskiner (rettet mot CPU, ikke minne). Vi byttet type og fjernet ytterligere noen noder.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"itogi\">Resultater<\/h3>\n<p><\/p>\n<p>Med burstable ressurser i klyngen utnytter du det tilgjengelige utstyret mer effektivt, men Kubernetes-planleggeren planlegger podene basert p\u00e5 ressursforesp\u00f8rslene, noe som kan v\u00e6re problematisk. For \u00e5 drepe to fluer i en smekk: unng\u00e5 problemer og bruke ressursene optimalt, er god overv\u00e5king n\u00f8dvendig. Dette vil v\u00e6re nyttig. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google-cloud-tools\/kube-eagle\">Kube Eagle<\/a><\/noindex> (exporter of Prometheus and Grafana monitoring panel).<\/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.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\/no\/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=\"nn_NO\" \/>\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\/no\/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\udd47Vi overv\u00e5ker ressursene i Kubernetes-klynger | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/monitorim-resursy-klasterov-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/31139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=31139"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/31139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/23107"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=31139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=31139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=31139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}