{"id":77693,"date":"2020-04-13T01:42:39","date_gmt":"2020-04-12T23:42:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes"},"modified":"2020-04-13T01:42:39","modified_gmt":"2020-04-12T23:42:39","slug":"cpu-limity-i-agressivnyj-trottling-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","title":{"rendered":"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Obs. \u00f6vers.<\/b>: Den h\u00e4r l\u00e4rorika historien fr\u00e5n Omio \u2013 den europeiska resesamlaren \u2013 f\u00f6r andra l\u00e4sare fr\u00e5n grundl\u00e4ggande teori till sp\u00e4nnande praktiska detaljer i konfigureringen av Kubernetes. Att bekanta sig med s\u00e5dana fall hj\u00e4lper inte bara till att bredda perspektiven, utan \u00e4ven att f\u00f6rebygga komplexa problem.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/1175c9df746e43b5a7d81476164929db.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0414\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0432\u0430\u043c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u043b\u043e\u00bb \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (health check&#8217;\u0438) \u0438 \u0432\u044b \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f? \u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043b\u0438\u043c\u0438\u0442\u043e\u043c \u043a\u0432\u043e\u0442 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b CPU. \u041e \u043d\u0435\u043c \u0438 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p><b>TL;DR:<br \/>\n\u041c\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 CPU limit&#8217;\u043e\u0432 \u0432 Kubernetes (\u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0432\u043e\u0442\u044b CFS \u0432 Kubelet), \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044f\u0434\u0440\u0430 Linux \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 CFS-\u043a\u0432\u043e\u0442. \u0412 \u044f\u0434\u0440\u0435 <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">har<\/a><\/noindex> finns en allvarlig och <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/67577\">v\u00e4lk\u00e4nd<\/a><\/noindex> bugg som leder till \u00f6verdriven throttling och f\u00f6rdr\u00f6jningar.<\/b>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>I Omio <b>hanteras all infrastruktur av Kubernetes.<\/b>. \u0412\u0441\u0435 \u043d\u0430\u0448\u0438 stateful- \u0438 stateless-\u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 Kubernetes (\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Google Kubernetes Engine). \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u043c\u044b \u0441\u0442\u0430\u043b\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0435 \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0430\u044e\u0442 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 health check&#8217;\u0438, \u0442\u0435\u0440\u044f\u044e\u0442 \u0441\u0432\u044f\u0437\u044c \u0441 \u0441\u0435\u0442\u044c\u044e \u0438 \u0442.\u043f. \u041f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0433\u043e \u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u0441 \u0432 \u0442\u0443\u043f\u0438\u043a, \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e.<\/p>\n<p>Sammanfattning av artikeln:<\/p>\n<ul>\n<li> N\u00e5gra ord om containrar och Kubernetes;<\/li>\n<li> \u041a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b CPU request&#8217;\u044b \u0438 limit&#8217;\u044b;<\/li>\n<li> Hur CPU-gr\u00e4nser fungerar i milj\u00f6er med flera k\u00e4rnor;<\/li>\n<li> Hur man \u00f6vervakar CPU-throttling;<\/li>\n<li> L\u00f6sning av problemet och dess nyanser.<\/li>\n<\/ul>\n<p><\/p>\n<h2>N\u00e5gra ord om containrar och Kubernetes<\/h2>\n<p>\nKubernetes \u00e4r i grunden den moderna standarden inom infrastrukturv\u00e4rlden. D dess huvudsakliga uppgift \u00e4r orkestrering av containrar.<\/p>\n<h3>Containrar<\/h3>\n<p>\n\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0432\u0440\u043e\u0434\u0435 Java JAR&#8217;\u043e\u0432\/WAR&#8217;\u043e\u0432, Python Egg&#8217;\u043e\u0432 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041e\u0434\u043d\u0430\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443: \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (Java\/Python), \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0442.\u0434. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0443\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 (\u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0441\u043b\u0443\u0436\u0438\u043b\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0440\u0430\u0437\u0434\u043e\u0440\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438).<\/p>\n<p><b>Containrar har f\u00f6r\u00e4ndrat allt.<\/b> Nu \u00e4r artefakten en containerbild. Den kan ses som en utvidgad k\u00f6rbar fil som inneh\u00e5ller inte bara programmet utan ocks\u00e5 en fullst\u00e4ndig k\u00f6rmilj\u00f6 (Java\/Python\/...), samt n\u00f6dv\u00e4ndiga filer\/paket som \u00e4r f\u00f6rinstallerade och redo att anv\u00e4ndas. Containrar kan distribueras och k\u00f6ras p\u00e5 olika servrar utan n\u00e5gra ytterligare \u00e5tg\u00e4rder.<\/p>\n<p>Dessutom arbetar containrar i sin egen sandbox-milj\u00f6. De har sin egen virtuella n\u00e4tverksadapter, ett filsystem med begr\u00e4nsad tillg\u00e5ng, sin egen processhierarki, samt begr\u00e4nsningar f\u00f6r CPU och minne etc. Allt detta realiseras tack vare en s\u00e4rskild del av Linux-k\u00e4rnan \u2014 namespaces.<\/p>\n<h3>Kubernetes<\/h3>\n<p>\nSom n\u00e4mnts tidigare \u00e4r Kubernetes en containerorkestrator. Den fungerar s\u00e5 h\u00e4r: du ger den en pool av maskiner och s\u00e4ger: \"Hej, Kubernetes, k\u00f6r tio instanser av min container med 2 processorer och 3 GB minne vardera, och h\u00e5ll dem i drift!\" Kubernetes tar hand om resten. Den hittar lediga resurser, startar containrarna och kommer att starta om dem vid behov, uppdatera vid versionf\u00f6r\u00e4ndringar osv. I grunden l\u00e5ter Kubernetes dig abstrahera fr\u00e5n h\u00e5rdvarukomponenter och g\u00f6r alla olika system l\u00e4mpliga f\u00f6r distribution och drift av applikationer.<\/p>\n<p><img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/6509bb1b66a4a0f5e9a479d0bd6ececb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes ur en enkel persons perspektiv<\/i><\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 request&#8217;\u044b \u0438 limit&#8217;\u044b \u0432 Kubernetes<\/h2>\n<p>\nOkej, vi har f\u00f6rst\u00e5tt containrar och Kubernetes. Vi vet ocks\u00e5 att flera containrar kan finnas p\u00e5 en och samma maskin.<\/p>\n<p>Vi kan dra en parallell med en delad l\u00e4genhet. Man tar ett rymligt rum (maskiner\/noder) och hyr ut det till flera hyresg\u00e4ster (containrar). Kubernetes fungerar som m\u00e4klare. Fr\u00e5gan uppst\u00e5r, hur kan vi f\u00f6rhindra att hyresg\u00e4sterna kommer i konflikt med varandra? Vad h\u00e4nder om en av dem, s\u00e4g, best\u00e4mmer sig f\u00f6r att ta \u00f6ver badrummet i ett halvt dygn?<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432 \u0438\u0433\u0440\u0443 \u0432\u0441\u0442\u0443\u043f\u0430\u044e\u0442 request&#8217;\u044b \u0438 limit&#8217;\u044b. CPU <b>Beg\u00e4ran<\/b> beh\u00f6vs uteslutande f\u00f6r planering. Det \u00e4r n\u00e5got av en \"\u00f6nskelista\" f\u00f6r containern, och anv\u00e4nds f\u00f6r att v\u00e4lja den mest l\u00e4mpliga noden. Samtidigt kan CPU <b>Begr\u00e4nsa<\/b> j\u00e4mf\u00f6ras med hyresavtalet \u2014 s\u00e5 snart vi hittar en nod f\u00f6r containern, <b>kan den<\/b> inte \u00f6verskrida de angivna gr\u00e4nserna. Och h\u00e4r uppst\u00e5r problemet\u2026<\/p>\n<h3>\u041a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b request&#8217;\u044b \u0438 limit&#8217;\u044b \u0432 Kubernetes<\/h3>\n<p>\nKubernetes \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u044f\u0434\u0440\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433\u0430 (\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u0442\u0430\u043a\u0442\u043e\u0432) \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 CPU limit&#8217;\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043b\u0438\u043c\u0438\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433 (\u0442.\u0435. \u043e\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0442\u0430\u043a\u0442\u043e\u0432 CPU). Request&#8217;\u044b \u0438 limit&#8217;\u044b \u0434\u043b\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u043d\u0430\u0447\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043b\u0435\u0433\u0447\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 pod&#8217;\u0430: \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u043d \u00abOOMKilled\u00bb. \u0421 \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433\u043e\u043c CPU \u0432\u0441\u0435 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 K8s \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e, \u0430 \u043d\u0435 \u043f\u043e cgroups.<\/p>\n<h4>CPU-beg\u00e4ran<\/h4>\n<p>\n<img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/fbc8bf3f775ffd9513374ce94b20535d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Hur CPU-beg\u00e4ran implementeras<\/i><\/p>\n<p>F\u00f6r enkelhetens skull ska vi betrakta processen utifr\u00e5n en maskin med 4 k\u00e4rnor.<\/p>\n<p>K8s \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f (cgroups) \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430). \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c: \u043f\u043e\u0442\u043e\u043c\u043e\u043a \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 limit&#8217;\u044b \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (<code>\/sys\/fs\/cgroup<\/code>). N\u00e4r det g\u00e4ller CPU \u00e4r detta <code>\/sys\/fs\/cgroup\/cpu,cpuacct\/*<\/code>.<\/p>\n<p>K8s anv\u00e4nder filen <code>cpu.share<\/code> f\u00f6r att f\u00f6rdela CPU-resurser. I v\u00e5rt fall f\u00e5r rotkontrollgruppen 4096 andelar av CPU-resurser \u2014 100% av den tillg\u00e4ngliga CPU-kapaciteten (1 k\u00e4rna = 1024; detta \u00e4r ett fast v\u00e4rde). Rotgruppen f\u00f6rdelar resurser proportionellt beroende p\u00e5 andelarna av dess barn, som specificeras i <code>cpu.share<\/code>, och de i sin tur g\u00f6r likadant med sina barn, och s\u00e5 vidare. I en typisk Kubernetes-nod har rotkontrollgruppen tre barn: <code>system.slice<\/code>, <code>user.slice<\/code> och <code>kubepods<\/code>. De tv\u00e5 f\u00f6rsta undergrupperna anv\u00e4nds f\u00f6r att f\u00f6rdela resurser mellan kritiska systemlaster och anv\u00e4ndarprogram utanf\u00f6r K8s. Den sista \u2014 <code>kubepods<\/code> \u2014 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f Kubernetes&#8217;\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 pod&#8217;\u0430\u043c\u0438.<\/p>\n<p>I bilden ovan kan man se att den f\u00f6rsta och andra undergruppen fick <b>1024<\/b> andelar, medan undergruppen kubepod tilldelades <b>4096<\/b> andelar. Hur \u00e4r detta m\u00f6jligt: rotgruppen har ju bara tillg\u00e5ng till <b>4096<\/b> andelar, medan summan av dess barnandelar betydligt \u00f6verstiger detta nummer (<b>6144<\/b>)? Anledningen \u00e4r att v\u00e4rdet har logisk betydelse, s\u00e5 Linux-schemal\u00e4ggaren (CFS) anv\u00e4nder det f\u00f6r proportional resursf\u00f6rdelning av CPU. I v\u00e5rt fall f\u00e5r de f\u00f6rsta tv\u00e5 grupperna <b>680<\/b> verkliga andelar (16,6% av 4096), medan kubepod erh\u00e5ller de \u00e5terst\u00e5ende <b>2736<\/b> andelarna. Vid stillest\u00e5nd kommer de f\u00f6rsta tv\u00e5 grupperna inte att anv\u00e4nda sina tilldelade resurser.<\/p>\n<p>Lyckligtvis finns det en mekanism i schemal\u00e4ggaren som f\u00f6rhindrar f\u00f6rlust av oanv\u00e4nda CPU-resurser. Den \u00f6verf\u00f6r \"idle\" kapacitet till en global pool, fr\u00e5n vilken de f\u00f6rdelas till grupper som beh\u00f6ver extra processorkraft (\u00f6verf\u00f6ringen sker i partier f\u00f6r att undvika f\u00f6rluster vid avrundning). En liknande metod till\u00e4mpas \u00e4ven p\u00e5 alla efterkommande noder.<\/p>\n<p>Denna mekanism s\u00e4kerst\u00e4ller r\u00e4ttvis f\u00f6rdelning av processorkraft och ser till att ingen process \"stj\u00e4l\" resurser fr\u00e5n andra.<\/p>\n<h4>CPU Limit<\/h4>\n<p>\n\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 limit&#8217;\u043e\u0432 \u0438 request&#8217;\u043e\u0432 \u0432 K8s \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e\u0445\u043e\u0436\u0435, \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f: \u044d\u0442\u043e <b>den mest missledande<\/b> och minst dokumenterade delen.<\/p>\n<p>K8s anv\u00e4nder <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-design-CFS.txt\">CFS kvotmekanismen<\/a><\/noindex> f\u00f6r att genomf\u00f6ra begr\u00e4nsningar. Deras inst\u00e4llningar anges i filerna <code>cfs_period_us<\/code> och <code>cfs_quota_us<\/code> i cgroup-katalogen (d\u00e4r ligger ocks\u00e5 filen <code>cpu.share<\/code>).<\/p>\n<p>Till skillnad fr\u00e5n <code>cpu.share<\/code>, \u00e4r kvoten baserad p\u00e5 <b>tidsperioden<\/b>, inte p\u00e5 tillg\u00e4nglig processorkraft. <code>cfs_period_us<\/code> anger varaktigheten f\u00f6r perioden (epoken) \u2014 detta \u00e4r alltid 100000 \u00b5s (100 ms). I K8s finns det m\u00f6jlighet att \u00e4ndra detta v\u00e4rde, men det \u00e4r f\u00f6r n\u00e4rvarande endast tillg\u00e4ngligt i alpha-versionen. Schemal\u00e4ggaren anv\u00e4nder epoken f\u00f6r att \u00e5terstarta anv\u00e4nda kvoter. Den andra filen, <code>cfs_quota_us<\/code>, anger den tillg\u00e4ngliga tiden (kvoten) i varje epok. Observera att den ocks\u00e5 anges i mikrosekunder. Kvoten kan \u00f6verstiga varaktigheten av epoken; med andra ord kan den vara st\u00f6rre \u00e4n 100 ms.<\/p>\n<p>L\u00e5t oss titta p\u00e5 tv\u00e5 scenarier p\u00e5 16-k\u00e4rniga maskiner (den vanligaste typen av datorer hos oss p\u00e5 Omio):<\/p>\n<p><img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/61c6105320af3a92a91cec1007da0d45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Scenario 1: 2 tr\u00e5dar och en gr\u00e4ns p\u00e5 200 ms. Ingen throttling.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/c33993341d5395bb73dda1f4c8482a11.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Scenario 2: 10 tr\u00e5dar och en gr\u00e4ns p\u00e5 200 ms. Throttling b\u00f6rjar efter 20 ms, tillg\u00e5ngen till processorkraft \u00e5terupptas ytterligare efter 80 ms.<\/i><\/p>\n<p>Anta att du har st\u00e4llt in CPU-limit p\u00e5 <b>2<\/b> k\u00e4rnor; Kubernetes \u00f6vers\u00e4tter detta v\u00e4rde till 200 ms. Det betyder att containern kan anv\u00e4nda h\u00f6gst 200 ms processor-tid utan throttling.<\/p>\n<p>Och h\u00e4r b\u00f6rjar det intressanta. Som n\u00e4mnts ovan \u00e4r den tillg\u00e4ngliga kvoten 200 ms. Om du har tio <b>tr\u00e5dar p\u00e5 en 12-k\u00e4rnig maskin (se illustrationen f\u00f6r scenario 2), medan alla andra poddar \u00e4r inaktiva, kommer kvoten att ta slut efter endast 20 ms (eftersom 10 * 20 ms = 200 ms), och alla tr\u00e5dar i denna podd kommer att \"frysas\"<\/b> \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 12-\u044f\u0434\u0435\u0440\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 (\u0441\u043c. \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e 2), \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 pod&#8217;\u044b \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u044e\u0442, \u043a\u0432\u043e\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0430 \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 20 \u043c\u0441 (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 10 * 20 \u043c\u0441 = 200 \u043c\u0441), \u0438 \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e pod&#8217;\u0430 \u00ab\u0437\u0430\u0432\u0438\u0441\u043d\u0443\u0442\u00bb <i>(hastighetsbegr\u00e4nsning)<\/i> \u00f6kar situationen som redan n\u00e4mnts <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">schemal\u00e4ggarbjugg<\/a><\/noindex>, som orsakar \u00f6verdriven throttle och containern kan inte ens n\u00e5 den existerande kvoten.<\/p>\n<h2>\u041a\u0430\u043a \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433 \u0432 pod&#8217;\u0430\u0445?<\/h2>\n<p>\nLogga bara in i podden och k\u00f6r <code>cat \/sys\/fs\/cgroup\/cpu\/cpu.stat<\/code>.<\/p>\n<ul>\n<li> <code>nr_periods<\/code> \u2014 det totala antalet schemal\u00e4ggningsperioder;<\/li>\n<li> <code>nr_throttled<\/code> \u2014 antalet throttled-periodes i <code>nr_periods<\/code>;<\/li>\n<li> <code>throttled_time<\/code> \u2014 den totala throttled-tiden i nanosekunder.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/a1818614914a8c31f7f7f1331cc02e8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Vad h\u00e4nder egentligen?<\/h3>\n<p>\nResultatet \u00e4r h\u00f6g throttling i alla applikationer. Ibland \u00e4r det <b>1,5 g\u00e5nger<\/b> starkare \u00e4n ber\u00e4knat!<\/p>\n<p>Detta leder till olika fel \u2014 misslyckanden i beredskapskontroller (readiness), frysta containrar, n\u00e4tverksavbrott, timeouts inom tj\u00e4nsteanrop. I slut\u00e4ndan yttrar detta sig i \u00f6kad f\u00f6rdr\u00f6jning och fler fel.<\/p>\n<h2>L\u00f6sning och konsekvenser<\/h2>\n<p>\n\u0422\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u041c\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043e\u0442 limit&#8217;\u043e\u0432 CPU \u0438 \u0437\u0430\u043d\u044f\u043b\u0438\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u044f\u0434\u0440\u0430 \u041e\u0421 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u043d\u0430 \u0441\u0430\u043c\u0443\u044e \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0430\u0433 \u0431\u044b\u043b \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d. \u0427\u0438\u0441\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a (HTTP 5xx) \u0432 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0430\u043b\u043e:<\/p>\n<h3>HTTP 5xx-fel<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/86ab1694b952b5451a4ae075cbda2788.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>HTTP 5xx-fel fr\u00e5n en kritiskt viktig tj\u00e4nst<\/i><\/p>\n<h3>p95 svarstid<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/63922c8eb468366a7d05154a3adf40e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>F\u00f6rdr\u00f6jning av f\u00f6rfr\u00e5gningar fr\u00e5n en kritiskt viktig tj\u00e4nst, 95:e percentilen<\/i><\/p>\n<h3>Driftskostnader<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU-gr\u00e4nser och aggressiv throttling i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/8405c26fcbd82853e296fa7e3bcba131.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Antalet f\u00f6rbrukade instans-timmar<\/i><\/p>\n<h2>Vad \u00e4r f\u00e4llan?<\/h2>\n<p>\nSom n\u00e4mnts i b\u00f6rjan av artikeln:<\/p>\n<blockquote><p>Man kan dra en parallell med en kollektivl\u00e4genhet\u2026 Kubernetes fungerar som hyresv\u00e4rd. Men hur h\u00e5ller man hyresg\u00e4sterna fr\u00e5n konflikter sinsemellan? Vad h\u00e4nder om en av dem, s\u00e4g, beslutar att ta \u00f6ver badrummet i ett halvt dygn?<\/p><\/blockquote>\n<p>\nDet \u00e4r h\u00e4r f\u00e4llan ligger. En oansvarig container kan ta \u00f6ver alla tillg\u00e4ngliga processorr resurser p\u00e5 maskinen. Om du har en bra applikationsstack (t.ex. korrekt konfigurerade JVM, Go, Node VM), d\u00e5 \u00e4r det inga problem: man kan arbeta under s\u00e5dana f\u00f6rh\u00e5llanden under en l\u00e4ngre tid. Men om applikationerna \u00e4r d\u00e5ligt optimerade eller helt ooptimerade (<code>FROM java:latest<\/code>), kan situationen g\u00e5 ur kontroll. Vi p\u00e5 Omio har automatiserade grundl\u00e4ggande Dockerfiles med rimliga standardinst\u00e4llningar f\u00f6r storen av grundspr\u00e5k, s\u00e5 vi har inte st\u00f6tt p\u00e5 s\u00e5dana problem.<\/p>\n<p>Vi rekommenderar att \u00f6vervaka metrik <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">ANV\u00c4ND<\/a><\/noindex> (anv\u00e4ndning, m\u00e4ttnad och fel), API-f\u00f6rdr\u00f6jningar och felfrekvens. Se till att resultaten motsvarar f\u00f6rv\u00e4ntningarna.<\/p>\n<h2>L\u00e4nkar<\/h2>\n<p>\nS\u00e5 h\u00e4r \u00e4r v\u00e5r historia. F\u00f6ljande material har kraftigt bidragit till att f\u00f6rst\u00e5 vad som h\u00e4nder:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-design-CFS.txt\">kernel.org \u2192 CFS Scheduler<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-bwc.txt\">kernel.org \u2192 CFS Bandwidth Control<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.squarespace.com\/blog\/2017\/understanding-linux-container-scheduling\">F\u00f6rst\u00e5 Linux Container Scheduling<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.linuxjournal.com\/content\/everything-you-need-know-about-linux-containers-part-i-linux-control-groups-and-process\">Allt du beh\u00f6ver veta om Linux-containrar, del I: Linux kontrolgrupper och processisolering<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/k8s.af\/\">Kubernetes Failure Stories<\/a><\/noindex> \u2014 s\u00f6k efter \"cpu throttling\".<\/li>\n<\/ul>\n<p>\nFelrapporter f\u00f6r Kubernetes:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/51135#issuecomment-373454012\">#51135: Avoid setting CPU limits for Guaranteed pods<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/67577\">#67577: CFS quotas can lead to unnecessary throttling<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/bobrik\/2030ff040fad360327a5fab7a09c4ff1\">\u00d6verdriven CFS<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nHar du st\u00f6tt p\u00e5 liknande problem i din erfarenhet eller har du erfarenhet relaterad till throttling i containeriserade produktionsmilj\u00f6er? Dela med dig av din historia i kommentarsf\u00e4ltet!<\/p>\n<h2>P.S. fr\u00e5n \u00f6vers\u00e4ttaren<\/h2>\n<p>\nL\u00e4s \u00e4ven i v\u00e5r blogg:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459326\/\">Autoskalning och resursf\u00f6rvaltning i Kubernetes (\u00f6versikt och videof\u00f6rel\u00e4sning)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/418269\/\">Hur CPU Manager fungerar i Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/342822\/\">Vad h\u00e4nder i Kubernetes n\u00e4r du k\u00f6r kubectl run? Del 2<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes. \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u044f\u043c\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440, \u043d\u043e \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0432\u0430\u043c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u043b\u043e\u00bb \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":77694,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-77693","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes.\" \/>\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\/cpu-limity-i-agressivnyj-trottling-v-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\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\udd47CPU-\u043b\u0438\u043c\u0438\u0442\u044b \u0438 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-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=\"2020-04-12T23:42:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-12T23:42:39+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\udd47CPU-gr\u00e4nser och aggressiv throttling i Kubernetes | ProHoster","description":"Obs. \u00f6vers.: denna l\u00e4rorika historia om Omio \u2014 en europeisk reseaggregator \u2014 tar l\u00e4sarna fr\u00e5n grundl\u00e4ggande teori till sp\u00e4nnande praktiska aspekter av Kubernetes-konfiguration.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-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\udd47CPU-\u043b\u0438\u043c\u0438\u0442\u044b \u0438 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433 \u0432 Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-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":"2020-04-12T23:42:39+00:00","article:modified_time":"2020-04-12T23:42:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"77693","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:13:23","updated":"2022-09-29 12:06:45","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\/77693","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=77693"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/77693\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/77694"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=77693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=77693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=77693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}