{"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\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","title":{"rendered":"CPU-limiidid ja agressiivne throttling Kubernetes'is","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>M\u00e4rkus t\u00f5lke kohta.<\/b>: see this instructive story of Omio \u2014 a European travel aggregator \u2014 guides readers from basic theory to fascinating practical nuances in Kubernetes configuration. Familiarity with such cases helps not only to broaden horizons but also to prevent non-trivial problems.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/1175c9df746e43b5a7d81476164929db.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKas olete kunagi kogenud, et rakendus \"seisab\" paigal, l\u00f5petab oleku kontrolldi (health check) p\u00e4ringutele vastamise ja te ei suutnud selle k\u00e4itumise p\u00f5hjust m\u00f5ista? \u00dcks v\u00f5imalik seletus on seotud CPU ressursside kvootide limiidiga. Sellel ja r\u00e4\u00e4gime selles artiklis.<\/p>\n<p><b>TL;DR:<br \/>\nSoovitame tungivalt loobuda Kuberneteses CPU limiitidest (v\u00f5i CFS kvoote Kubeletis v\u00e4lja l\u00fclitada), kui kasutatakse Linuxi tuuma, kus on CFS-kvootidega seotud viga. Tuumas <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">on saadaval<\/a><\/noindex> there is a serious and <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/67577\">well-known<\/a><\/noindex> bug that leads to excessive throttling and delays<\/b>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>At Omio, <b>the entire infrastructure is managed by Kubernetes.<\/b>. K\u00f5ik meie stateful- ja stateless-koormused t\u00f6\u00f6tavad ainult Kuberneteses (kasutame Google Kubernetes Engine'i). Viimase kuue kuu jooksul oleme m\u00e4rganud juhuslikke viivitusi. Rakendused hanguvad v\u00f5i l\u00f5petavad tervisekontrolli (health check) p\u00e4ringutele vastamise, kaotavad \u00fchenduse v\u00f5rku jne. Selline k\u00e4itumine pani meid pikka aega segadusse, ja l\u00f5puks otsustasime probleemiga t\u00f5siselt tegelema hakata.<\/p>\n<p>Summary of the article:<\/p>\n<ul>\n<li> A few words about containers and Kubernetes;<\/li>\n<li> Kuidas on rakendatud CPU p\u00e4ringud ja limiidid;<\/li>\n<li> How CPU limit works in multi-core environments;<\/li>\n<li> How to monitor CPU throttling;<\/li>\n<li> Solution to the problem and nuances.<\/li>\n<\/ul>\n<p><\/p>\n<h2>A few words about containers and Kubernetes<\/h2>\n<p>\nKubernetes, in essence, is the modern standard in the world of infrastructure. Its primary task is the orchestration of containers.<\/p>\n<h3>Konteinerid<\/h3>\n<p>\nMinevikus pidime looma artefakte nagu Java JAR'id\/WAR'id, Python Egg'id v\u00f5i k\u00e4ivitatavad failid, et neid serverites hiljem k\u00e4ivitada. Kuid nende t\u00f6\u00f6le saamiseks tuli teha lisat\u00f6\u00f6d: paigaldada t\u00e4itmisv\u00f5ime (Java\/Python), paigutada vajalikud failid \u00f5igesse kohta, tagada \u00fchilduvus konkreetse ops\u00fcsteemi versiooniga jne. Teisis\u00f5nu, tuli t\u00e4helepanelikult j\u00e4lgida konfiguratsioonide haldamist (mis oli sageli p\u00f5hjus, miks arendajate ja s\u00fcsteemiadministraatorite vahel tekkisid t\u00fcli).<\/p>\n<p><b>Containers changed everything.<\/b> N\u00fc\u00fcd on artefaktiks konteineripilt. Seda v\u00f5ib kujutada kui laienenud k\u00e4ivitusfaili, mis sisaldab mitte ainult programmi, vaid ka t\u00e4ielikku k\u00e4ituskeskkonda (Java\/Python\/...); samuti vajalikke faile\/pakette, mis on eelnevalt installitud ja k\u00e4ivitamiseks valmis. Konteinerit saab juurutada ja k\u00e4ivitada erinevatel serveritel ilma t\u00e4iendavate toiminguteta.<\/p>\n<p>Lisaks t\u00f6\u00f6tavad konteinerid omaette keskkonnas. Neil on oma virtuaalne v\u00f5rgukaart, oma failis\u00fcsteem piiratud juurdep\u00e4\u00e4suga, oma protsessihierarhia, oma piirangud CPU ja m\u00e4lu osas jne. K\u00f5ik see on ellu viidud t\u00e4nu Linuxi tuuma erilise alams\u00fcsteemi \u2014 nimealad (namespaces) \u2014 kaudu.<\/p>\n<h3>Kubernetes<\/h3>\n<p>\nKuidas varem mainitud, on Kubernetes konteinerite orkestrator. See t\u00f6\u00f6tab j\u00e4rgmiselt: te annate sellele hulk masinaid ja \u00fctlete: \u201eHei, Kubernetes, k\u00e4ivita k\u00fcmme minu konteinerisikapti 2 protsessoriga ja 3 GB m\u00e4luga iga\u00fchele ning hoia neid t\u00f6\u00f6korras!\u201c. Kubernetes hoolitseb \u00fclej\u00e4\u00e4nud eest. See leiab vabad ressursid, k\u00e4ivitab konteinerid ja vajadusel taask\u00e4ivitab need, viib l\u00e4bi uuendusi versioonide vahetumisel jne. Essentsiaalselt v\u00f5imaldab Kubernetes abstraheerida riistvara komponendist ja muudab k\u00f5ik erinevad s\u00fcsteemid rakenduste juurutamiseks ja t\u00f6\u00f6tamiseks sobivaks.<\/p>\n<p><img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/6509bb1b66a4a0f5e9a479d0bd6ececb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes tavainimese vaatepunktist<\/i><\/p>\n<h2>Mis on Kuberneteses p\u00e4ringud ja limiidid<\/h2>\n<p>\nOkei, oleme aru saanud konteineritest ja Kubernetesest. Teame ka, et mitmed konteinerid v\u00f5ivad olla \u00fchel masinal.<\/p>\n<p>Seda saab v\u00f5rrelda kommunaalkorteriga. V\u00f5etakse avar ruum (masinad\/s\u00f5lmed) ja antakse mitmele \u00fc\u00fcrnikule (konteineritele) \u00fc\u00fcrile. Kubernetes m\u00e4ngib kinnisvaramaakleri rolli. T\u00f5ukub k\u00fcsimus, kuidas hoiduda \u00fc\u00fcrnike konfliktidest omavahel? Mis juhtub, kui \u00fcks neist soovib n\u00e4iteks vannituba pooleks p\u00e4evaks enda valdusesse v\u00f5tta?<\/p>\n<p>Just siin tulevad m\u00e4ngu p\u00e4ringud ja limiidid. CPU <b>P\u00e4ring<\/b> on vajalik ainult planeerimiseks. See on midagi nagu konteineri \u201esoovide nimekiri\u201c, mida kasutatakse sobivaima s\u00f5lme leidmiseks. Samas v\u00f5ib CPU <b>Piirang<\/b> v\u00f5rrelda \u00fc\u00fcrilepinguga \u2014 kohe kui oleme leidnud s\u00f5lme konteinerile, siis <b>ei saa<\/b> \u00fcletada kehtestatud piire. Ja siin tekib probleem...<\/p>\n<h3>Kuidas on rakendatud p\u00e4ringud ja limiidid Kuberneteses<\/h3>\n<p>\nKubernetes kasutab tuumasisest trottelingu (taktide vahelej\u00e4etud) mehhanismi CPU limiitide rakendamiseks. Kui rakendus \u00fcletab limiidi, aktiveerub trotteling (st see saab v\u00e4hem CPU takte). M\u00e4lup\u00e4ringud ja limiidid on korraldatud teistmoodi, mist\u00f5ttu on neid lihtsam tuvastada. Selleks piisab, kui kontrollida viimast pod'i taask\u00e4ivitamise staatust: ei ole ju see \"OOMKilled\". CPU trottelinguga on asjad keerulisemad, kuna K8s teeb k\u00e4ttesaadavaks ainult kasutusstatistikat, mitte cgroups'i kohta.<\/p>\n<h4>CPU Request<\/h4>\n<p>\n<img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/fbc8bf3f775ffd9513374ce94b20535d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kuidas on rakendatud CPU request<\/i><\/p>\n<p>Kerguse huvides vaatame protsessi n\u00e4itel, kus on 4-tuuma CPU.<\/p>\n<p>K8s kasutab ressursside (m\u00e4lu ja protsessori) haldamiseks kontrollr\u00fchmade (cgroups) mehhanismi. Sellele on saadaval hierarhiline mudel: alammees p\u00e4rib vanema grupi limit'id. \u00dcksikasjad jaotamise kohta salvestatakse virtuaalsesse failis\u00fcsteemi (<code>\/sys\/fs\/cgroup<\/code>). Protsessori puhul on see <code>\/sys\/fs\/cgroup\/cpu,cpuacct\/*<\/code>.<\/p>\n<p>K8s kasutab faili <code>cpu.share<\/code> protsessori ressursside jaotamiseks. Meie juhus moraali j\u00e4rgi, juurt kontrollr\u00fchm saab 4096 ressursi CPU osa \u2013 100% k\u00e4tte saadava CPU v\u00f5imsusest (1 s\u00fcdamik = 1024; see on fikseeritud v\u00e4\u00e4rtus). Juurt r\u00fchm jaotab ressursse proportsionaalselt vastavalt alamr\u00fchmade osadele, mis on m\u00e4\u00e4ratud <code>cpu.share<\/code>, ja need omakorda k\u00e4ituvad oma j\u00e4rglastega sarnaselt jne. T\u00fc\u00fcpilises Kubernetes'i s\u00f5lmes on juurr\u00fchmadel kolm j\u00e4rglast: <code>system.slice<\/code>, <code>user.slice<\/code> ja <code>kubepods<\/code>. Kaks esimest alamhulka kasutatakse ressursside jaotamiseks kriitiliste s\u00fcsteemikoormuste ja kasutajaprogrammide vahel v\u00e4ljaspool K8s. Viimane \u2014 <code>kubepods<\/code> \u2014 luuakse Kubernetes'e poolt ressursside jaotamiseks pod'ide vahel.<\/p>\n<p>\u00dclaltoodud skeemilt on n\u00e4ha, et esimesed ja teised alamhulgad on saanud kumbki <b>1024<\/b> osa, samas kui kubepod'ile on m\u00e4\u00e4ratud <b>4096<\/b> osasid. Kuidas on see v\u00f5imalik: juurr\u00fchmale on ju k\u00e4tte saadavad vaid <b>4096<\/b> osi, kuid selle j\u00e4rglaste osade summa \u00fcletab seda arvu m\u00e4rgatavalt (<b>6144<\/b>)? Asja on selles, et v\u00e4\u00e4rtus on loogiliselt m\u00f5tteline, seega kasutab Linux'i planeerija (CFS) seda CPU ressursside proportsionaalseks jaotamiseks. Meie juhul saavad esimesed kaks grupi kummagi <b>680<\/b> reaalset osa (16,6% 4096-st), samas kui kubepod saab \u00fclej\u00e4\u00e4nud <b>2736<\/b> osasid. Ooteseisus ei kasuta kaks esimest gruppi m\u00e4\u00e4ratud ressursse.<\/p>\n<p>\u00d5nneks on planeerijas mehhanism, mis v\u00f5imaldab v\u00e4ltida kasutamata CPU ressursside kaotamist. See suunab \"seisvaid\" v\u00f5imsusi globaalsetesse fondidesse, kust neid jaotatakse gruppidele, mis vajavad t\u00e4iendavaid protsessori v\u00f5imsusi (edastus toimub partiidena, et v\u00e4ltida \u00fcmardamisest tingitud kaotusi). Sarnast meetodit rakendatakse ka k\u00f5ikidele j\u00e4reltulijatele.<\/p>\n<p>See mehhanism tagab \u00f5iglaselt protsessori v\u00f5imsuste jaotuse ja j\u00e4lgib, et \u00fckski protsess ei \"varastaks\" ressursse teistelt.<\/p>\n<h4>CPU Limiteerimine<\/h4>\n<p>\nKuigi limit'ide ja request'ide konfiguratsioonid K8s-s n\u00e4evad v\u00e4lja sarnased, on nende rakendamine kardinaalselt erinev: see <b>k\u00f5ige eksitavam<\/b> ja k\u00f5ige v\u00e4hem dokumenteeritud osa.<\/p>\n<p>K8s rakendab <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-design-CFS.txt\">CFS kvota mehhanismi<\/a><\/noindex> limiitide rakendamiseks. Nende seaded m\u00e4\u00e4ratakse failidesse <code>cfs_period_us<\/code> ja <code>cfs_quota_us<\/code> cgroup kataloogis (seal asub ka fail <code>cpu.share<\/code>).<\/p>\n<p>Erinevalt <code>cpu.share<\/code>, kvota p\u00f5hineb <b>aja perioodil<\/b>, mitte saadaval oleva protsessori v\u00f5imsusel. <code>cfs_period_us<\/code> m\u00e4\u00e4rab perioodi (ajastu) kestuse - see on alati 100000 mikrosekundit (100 ms). K8s-il on v\u00f5imalus seda v\u00e4\u00e4rtust muuta, kuid see on hetkel saadaval vaid alfa-versioonis. Planeerija kasutab ajastu l\u00f5ppemise aega kasutatud kvotade uuesti k\u00e4ivitamiseks. Teine fail, <code>cfs_quota_us<\/code>, m\u00e4\u00e4rab iga ajastu saadaval oleva aja (kvota). Pange t\u00e4hele, et see on samuti m\u00e4\u00e4ratud mikrosekundites. Kvota v\u00f5ib olla pikem kui ajastu kestus; teisis\u00f5nu, see v\u00f5ib \u00fcletada 100 ms.<\/p>\n<p>Vaadakem kahte stsenaariumi 16- tuumaga masinatel (k\u00f5ige levinum arvutit\u00fc\u00fcp meie Omios):<\/p>\n<p><img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/61c6105320af3a92a91cec1007da0d45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Stsenaarium 1: 2 voogu ja 200 ms limiit. Ilma trottlemiseta<\/i><\/p>\n<p><img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/c33993341d5395bb73dda1f4c8482a11.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Stsenaarium 2: 10 voogu ja 200 ms limiit. Trottlemine algab p\u00e4rast 20 ms, juurdep\u00e4\u00e4s protsessori ressurssidele taastub veel 80 ms p\u00e4rast<\/i><\/p>\n<p>Oletame, et olete seadistanud CPU limiidi <b>2<\/b> tuumadele; Kubernetes t\u00f5lgendab seda v\u00e4\u00e4rtust kui 200 ms. See t\u00e4hendab, et konteiner v\u00f5ib kasutada maksimaalselt 200 ms protsessoriaega ilma trottlemiseta.<\/p>\n<p>Ja siin hakkavad asjad huvitavaks minema. Nagu \u00f6eldud, on saadaval kvota 200 ms. Kui teil on samal ajal t\u00f6\u00f6tamas <b>k\u00fcmme<\/b> voogude puhul 12- wezenisel masinal (vt 2. stsenaariumi illustratsiooni), kui k\u00f5ik teised pod'id seisavad, siis kvota saab otsa vaid 20 ms jooksul (sest 10 * 20 ms = 200 ms) ja k\u00f5ik selle pod'i vood \u201ej\u00e4\u00e4vad kinni\u201c. <i>(throttle)<\/i> j\u00e4rgmise 80 ms. Olukorda halvendab juba mainitud <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">planeerija viga<\/a><\/noindex>, mille t\u00f5ttu tekib liigset trottlingut ja konteiner ei suuda isegi olemasolevat kvooti kasutada.<\/p>\n<h2>Kuidas hinnata trottlemist pod'ides?<\/h2>\n<p>\nLihtsalt siseneda pod'isse ja k\u00e4ivitada <code>cat \/sys\/fs\/cgroup\/cpu\/cpu.stat<\/code>.<\/p>\n<ul>\n<li> <code>nr_periods<\/code> \u2014 planeerija koguperioodide arv;<\/li>\n<li> <code>nr_throttled<\/code> \u2014 trottlingperioodide arv, <code>nr_periods<\/code>;<\/li>\n<li> <code>throttled_time<\/code> \u2014 kogutud trottlinguaeg nanosekundites.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/a1818614914a8c31f7f7f1331cc02e8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Mis tegelikult toimub?<\/h3>\n<p>\nKokkuv\u00f5ttes saame k\u00f5ikides rakendustes k\u00f5rge trottlingu. M\u00f5nikord on see <b>\u00fche ja poole korra<\/b> tugevam kui arvutatud!<\/p>\n<p>See toob kaasa erinevaid vigu \u2014 valmisoleku kontrollide (readiness) t\u00f5rkeid, konteinerite seisakuid, v\u00f5rgu\u00fchenduste katkestusi, teenusek\u00f5nede aegumisi. L\u00f5ppkokkuv\u00f5ttes kajastub see suurenenud viivituses ja vigade arvu t\u00f5usus.<\/p>\n<h2>Lahendus ja tagaj\u00e4rjed<\/h2>\n<p>\nSiin on k\u00f5ik lihtne. Me loobusime CPU limit'idest ja tegelesime klastrite OS-i tuumade v\u00e4rskendamisega uusimale versioonile, kus viga oli parandatud. HTTP 5xx vigade arv meie teenustes langes kohe oluliselt:<\/p>\n<h3>HTTP 5xx vead<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/86ab1694b952b5451a4ae075cbda2788.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u00dche kriitilise teenuse HTTP 5xx vead<\/i><\/p>\n<h3>p95 vastamisaeg<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/63922c8eb468366a7d05154a3adf40e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kriitilise teenuse p\u00e4ringute viivitus, 95. protsentil<\/i><\/p>\n<h3>Ekspluatatsioonikulud<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU-limiidid ja agressiivne throttling Kubernetes&#039;is\" src=\"\/wp-content\/uploads\/2020\/04\/8405c26fcbd82853e296fa7e3bcba131.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kulutatud eksemplarituurid<\/i><\/p>\n<h2>Mis on petuk\u00e4ik?<\/h2>\n<p>\nNagu artikli alguses \u00f6eldi:<\/p>\n<blockquote><p>Seda saab v\u00f5rrelda \u00fchiselt kasutatava korteriga... Kubernetes m\u00e4ngib kinnisvaramaakleri rolli. Aga kuidas hoida \u00fc\u00fcrnikud v\u00e4ltimast konflikte omavahel? Mis siis, kui keegi neist otsustab n\u00e4iteks h\u00f5ivata vannituba pooleks p\u00e4evaks?<\/p><\/blockquote>\n<p>\nSiin peitubki trik. \u00dcks lohakas konteiner v\u00f5ib k\u00f5rvaldada k\u00f5ik saadaolevad protsessori ressursid masinas. Kui teil on korralik rakenduste virn (nt korralikult seadistatud JVM, Go, Node VM), siis pole see probleem: sellistes tingimustes saab t\u00f6\u00f6tada pikka aega. Kuid kui rakendused on halvasti optimeeritud v\u00f5i \u00fcldse mitte optimeeritud (<code>FROM java:latest<\/code>), v\u00f5ib situatsioon minna kontrolli alt v\u00e4lja. Omios on meil automatiseeritud p\u00f5hised Dockerfile'id, millel on m\u00f5istlikud vaikeseaded peamiste keelte virna jaoks, seet\u00f5ttu ei olnud sellist probleemi.<\/p>\n<p>Soovitame j\u00e4lgida m\u00f5\u00f5dikuid <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">USE<\/a><\/noindex> (kasutamine, k\u00fcllastus ja vead), API viivituste ja vigade sageduse osas. Veenduge, et tulemused vastavad ootustele.<\/p>\n<h2>Viidatud lingid<\/h2>\n<p>\nSee on meie lugu. J\u00e4rgmised materjalid aitasid oluliselt m\u00f5ista, mis toimub:<\/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 ajakava<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-bwc.txt\">kernel.org \u2192 CFS ribalaiuse kontrol<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.squarespace.com\/blog\/2017\/understanding-linux-container-scheduling\">Arusaamine Linuxi konteinerite ajakava<\/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\">K\u00f5ik, mida peate teadma Linuxi konteineritest, I osa: Linuxi kontrolligrupid ja protsesside isoleerimine<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/k8s.af\/\">Kubernetes'i eba\u00f5nnestumise lood<\/a><\/noindex> \u2014 otsige \u201ecpu throttling\u201d.<\/li>\n<\/ul>\n<p>\nKubernetes'i viga aruanded:<\/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\">Liialt agressiivne CFS<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nKas olete kogenud sarnaseid probleeme v\u00f5i on teil kogemusi, mis on seotud konteineriseeritud tootmis keskkondade trottimisega? Jagage oma lugu kommentaarides!<\/p>\n<h2>P.S. t\u00f5lkijalt<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459326\/\">Kuberneteses automaatne skaleerimine ja ressursside haldamine (\u00fclevaade ja ettekande video)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/418269\/\">Kuidas CPU haldur Kuberneteses t\u00f6\u00f6tab<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/342822\/\">Mis juhtub Kuberneteses, kui k\u00e4itate kubectl run? Osa 2<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47 CPU-limiidid ja agressiivne trottimine Kuberneteses | ProHoster","description":"M\u00e4rkus t\u00f5lkijalt: see \u00f5petlik lugu Omio \u2014 Euroopa reiside agregoorist \u2014 viib lugejad alates p\u00f5hit\u00f5dedest kuni huvitavate praktiliste n\u00fcanssideni Kubernetes'e seadistamisel.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/77693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=77693"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/77693\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/77694"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=77693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=77693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=77693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}