{"id":94262,"date":"2020-09-14T19:42:34","date_gmt":"2020-09-14T17:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod"},"modified":"2020-09-14T19:42:34","modified_gmt":"2020-09-14T17:42:34","slug":"kak-poluchit-dostup-k-resursam-kubernetes-pod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","title":{"rendered":"Kuidas p\u00e4\u00e4seda juurde Kubernetes Pod'i ressurssidele","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kuidas p\u00e4\u00e4seda juurde Kubernetes Pod&#039;i ressurssidele\" src=\"\/wp-content\/uploads\/2020\/09\/3d6760d512ef456daad121f7d1ddbcf8.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" href=\"https:\/\/www.deviantart.com\/tohad\/art\/The-Reward-549720998\"><i>Tohad'i Auhind<\/i><\/a><\/noindex><\/p>\n<p>Kubernetes'ega alustades unustatakse tavaliselt konteinerite ressursside seadistamine. Sel etapil piisab, kui veenduda, et Docker'i pilt t\u00f6\u00f6tab ja seda saab Kubernetes'i klastris rakendada.<\/p>\n<p>Kuid hiljem tuleb rakendus k\u00e4ivitada tootmisklastris koos teiste rakendustega. Selleks tuleb konteinerile ressursid eraldada ja veenduda, et neid on piisavalt rakenduse k\u00e4ivitamiseks ja t\u00f6\u00f6tamiseks, ning et teistes k\u00e4ivitatud rakendustes ei t\u00f5useks probleeme.<\/p>\n<p>Meeskond <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Kubernetes aaS Mail.ru-lt<\/a><\/noindex> t\u00f5lkis artikli konteinerite ressurssidest (CPU &amp; MEM), ressursside p\u00e4ringutest ja piirangutest. Saate teada, millised on nende seadistuste eelised ja mis juhtub, kui neid ei seadista.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Arvutusressursid<\/h2>\n<p>\nMeil on kaks t\u00fc\u00fcpi ressursse j\u00e4rgmiste \u00fchikutega:<\/p>\n<ul>\n<li>Keskprotsessor (CPU) \u2014 tuumad;<\/li>\n<li>M\u00e4lu (MEM) \u2014 baitid.<\/li>\n<\/ul>\n<p>\nRessursid on m\u00e4\u00e4ratud iga konteineri jaoks. J\u00e4rgmises YAML-failis Pod'i kohta n\u00e4ete ressursside jaotust, mis sisaldab n\u00f5utud ja piiratud ressursse:<\/p>\n<ul>\n<li>N\u00f5utud ressursid Pod'i jaoks = k\u00f5igi konteinerite n\u00f5utud ressursside summa;<\/li>\n<li>Piiratud ressursid Pod'i jaoks = k\u00f5igi konteinerite piiratud ressursside summa.<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: backend-pod-name\n  labels:\n    application: backend\nspec:\n  containers:\n    \u2014 name: main-container\n      image: my-backend\n      tag: v1\n      ports:\n      \u2014 containerPort: 8080\n      resources:\n        requests:\n          cpu: 0.2 # K\u00dcSITUD CPU: 200m tuuma\n          memory: \"1Gi\" # K\u00dcSITUD M\u00c4LUKAAL: 1Gi\n        limits:\n          cpu: 1 # MAKSIMAALNE CPU KASUTUS: 1 tuum\n          memory: \"1Gi\" # MAKSIMAALNE M\u00c4LUKASUTUS: 1Gi\n    \u2014 name: other-container\n      image: other-app\n      tag: v1\n      ports:\n      \u2014 containerPort: 8000\n      resources:\n        requests:\n          cpu: \"200m\" # K\u00dcSITUD CPU: 200m tuuma\n          memory: \"0.5Gi\" # K\u00dcSITUD M\u00c4LUKAAL: 0.5Gi\n        limits:\n          cpu: 1 # MAKSIMAALNE CPU KASUTUS: 1 tuum\n          memory: \"1Gi\" # MAKSIMAALNE M\u00c4LUKASUTUS: 1Gi<\/code><\/pre>\n<p>N\u00f5utud ja piiratud ressursside n\u00e4ide<\/p>\n<p>V\u00e4li <code>resources.requested<\/code> Pod'i spetsifikatsioonist \u2014 \u00fcks elementidest, mida kasutatakse sobiva s\u00f5lme otsimiseks. Juba sellele saab planeerida Pod'i juurutamise. Kuidas otsitakse sobivat s\u00f5lme?<\/p>\n<p>Kubernetes koosneb mitmest komponendist, sealhulgas sisaldab peamist s\u00f5lme ehk master-s\u00f5lme (Kubernetes Control Plane). Master-s\u00f5lmes on mitu protsessi: kube-apiserver, kube-controller-manager ja kube-scheduler. <\/p>\n<p>Kube-scheduleri protsess vastutab uuscreateeritud moodulite vaatamise ja sobivate t\u00f6\u00f6de s\u00f5lmede leidmise eest, mis vastavad k\u00f5ikidele moodulite n\u00f5udmistele, sealhulgas n\u00f5utavatele ressurssidele. Kube-scheduleri leidnud s\u00f5lmede nimekiri j\u00e4rjestatakse. Pod planeeritakse s\u00f5lmele, millel on k\u00f5rgeim skoor.<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas p\u00e4\u00e4seda juurde Kubernetes Pod&#039;i ressurssidele\" src=\"\/wp-content\/uploads\/2020\/09\/b489991a3cbbd5359c99701886d488e5.jpg\" style=\"display:block;margin: 0 auto;\" \/>Kuhu paigutatakse lilla Pod?<\/p>\n<p>Pildilt n\u00e4eme, et kube-scheduler peab kavandama uue lilla Pod. Kubernetes'i klaster sisaldab kahte s\u00f5lme: A ja B. Nagu n\u00e4ha, ei saa kube-scheduler kavandada Pod-i s\u00f5lmele A \u2014 vabad (mitte-n\u00f5utud) ressursid ei vasta lilla Pod-i n\u00f5udmistele. Nii et lilla Pod-i n\u00f5utud 1 GB m\u00e4lu ei mahu s\u00f5lmele A, kuna saadaval olev m\u00e4lu on 0,5 GB. Kuid s\u00f5lmel B on piisavalt ressursse. Seet\u00f5ttu otsustab kube-scheduler, et lilla Pod-i sihtkoht on s\u00f5lm B.<\/p>\n<p>N\u00fc\u00fcd teame, kuidas n\u00f5utud ressursid m\u00f5jutavad s\u00f5lme valikut Pod'i k\u00e4itamiseks. Aga kuidas m\u00f5jutavad piiravad ressursid?<\/p>\n<p>Piiravad ressursid on piir, mida CPU\/MEM ei saa \u00fcletada. Siiski on CPU ressurss paindlik, seega konteinerid, mis on j\u00f5udnud CPU piiridest \u00fcle, ei viima Pod-i t\u00f6\u00f6 l\u00f5petamisele. Selle asemel saab alguse CPU piiramine. Kui aga MEM-i kasutamise piir on saavutatud, peatub konteiner OOM-Killeri t\u00f5ttu ja taask\u00e4ivitub, kui see on lubatud RestartPolicy seadistuse abil.<\/p>\n<h2>N\u00f5utud ja piiravad ressursid \u00fcksikasjalikult<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Kuidas p\u00e4\u00e4seda juurde Kubernetes Pod&#039;i ressurssidele\" src=\"\/wp-content\/uploads\/2020\/09\/22e672100940e8895ae42a56a681111f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Ressursside seos Dockeriga ja Kubernetesega<\/p>\n<p>Parim viis selgitada, kuidas toimivad n\u00f5utud ja piiravad ressursid, on n\u00e4idata seost Kubernetes'i ja Docker'i vahel. \u00dclaltoodud joonisel n\u00e4ete, kuidas on seotud Kubernetes'i v\u00e4ljad ja Docker'i k\u00e4ivitamislipud.<\/p>\n<h2>M\u00e4lu: n\u00f5ue ja piirang<\/h2>\n<p><\/p>\n<pre><code class=\"plaintext\">containers:\n...\n resources:\n   requests:\n     memory: \"0.5Gi\"\n   limits:\n     memory: \"1Gi\"\n<\/code><\/pre>\n<p>\nNagu eespool mainitud, m\u00f5\u00f5detakse m\u00e4lu baitides. P\u00f5hinedes <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#meaning-of-memory\">Kubernetes'e dokumentatsioonile<\/a><\/noindex>, v\u00f5ime m\u00e4\u00e4rata m\u00e4lu numbrina. Tavaline on, et see on t\u00e4isarv, nagu n\u00e4iteks 2678 \u2014 see t\u00e4hendab 2678 baiti. Samuti on v\u00f5imalik kasutada sufikse. <code>G<\/code> ja <code>Gi<\/code>, oluline on meeles pidada, et need ei ole liikmed. Esimene on k\u00fcmnend, teine aga on binaarne. N\u00e4iteks, nagu mainitud k8s dokumentatsioonis: <code>128974848<\/code>, <code>129e6<\/code>, <code>129M<\/code>, <code>123Mi<\/code> \u2014 need on praktiliselt ekvivalentne.<\/p>\n<p>Kubernetes'i parameeter <code>limits.memory<\/code> vastab Docker'i lipule <code>--memory<\/code> seoses <code>request.memory<\/code> Dockeri noole ei ole, kuna Docker seda v\u00e4lja ei kasuta. Kas te saate k\u00fcsida, kas see on \u00fcldse vajalik? Jah, see on vajalik. Nagu ma juba mainisin, on see v\u00e4li olulise t\u00e4htsusega Kubernetes'i jaoks. Sellel p\u00f5hinevalt otsustab kube-scheduler, millisele solgule Pod planeerida.<\/p>\n<p><strong>Mida juhtub, kui taotlusele m\u00e4\u00e4ratakse liiga v\u00e4he m\u00e4lu?<\/strong><\/p>\n<p>Kui konteiner saavutab m\u00e4\u00e4ratud m\u00e4lu piirid, siis asetatakse Pod Pod-gruppi, mis peatatakse, kui solgus on m\u00e4lu puudus.<\/p>\n<p><strong>Mida juhtub, kui m\u00e4\u00e4ratud m\u00e4lu \u00fclemine piir on liiga v\u00e4ike?<\/strong><\/p>\n<p>Kui konteiner \u00fcletab m\u00e4lu piiri, l\u00f5petatakse see OOM-Killed'i t\u00f5ttu. Ja see taask\u00e4ivitatakse, kui see on v\u00f5imalik RestartPolicy alusel, mille vaikimisi v\u00e4\u00e4rtus on <code>Alati<\/code>.<\/p>\n<p><strong>Mida juhtub, kui taotletud m\u00e4lu v\u00e4\u00e4rtust ei m\u00e4\u00e4rata?<\/strong><\/p>\n<p>Kubernetes v\u00f5tab \u00fclemise piiri v\u00e4\u00e4rtuse ja m\u00e4\u00e4rab selle vaikimisi v\u00e4\u00e4rtuseks.<\/p>\n<p><strong>Mida v\u00f5ib juhtuda, kui \u00fclemine m\u00e4lu piir ei ole m\u00e4\u00e4ratud?<\/strong><\/p>\n<p>Konteineril ei ole piiranguid, ta v\u00f5ib kasutada nii palju m\u00e4lu, kui tahab. Kui aga ta hakkab kasutama kogu saadaval olevat m\u00e4lu, tuleb ta OOM-i t\u00f5ttu maha. Seej\u00e4rel, kui see on v\u00f5imalik RestartPolicy alusel, taask\u00e4ivitab konteiner.<\/p>\n<p><strong>Mida juhtub, kui m\u00e4lu piiranguid ei m\u00e4\u00e4rata?<\/strong><\/p>\n<p>See on k\u00f5ige halvem stsenaarium: planeerija ei tea, kui palju ressursse konteiner vajab, ja see v\u00f5ib p\u00f5hjustada t\u00f5siseid probleeme solgus. Sel juhul oleks hea omada vaikimisi piiranguid nimede ruumis (mida seadistavad LimitRange). Vaikimisi piiranguid pole \u2013 Podil ei ole piiranguid, ta v\u00f5ib kasutada nii palju m\u00e4lu, kui tahab.<\/p>\n<p>Kui taotletud m\u00e4lu on suurem kui solgu pakutav, siis Podi ei planeerita. Oluline on meeles pidada, et <code>Requests.memory<\/code> ei ole minimaalne v\u00e4\u00e4rtus. See on kirjeldus m\u00e4luhulk, mis on piisav konteineri pidevaks t\u00f6\u00f6ks. <\/p>\n<p>Tavaliselt soovitatakse seada sama v\u00e4\u00e4rtus <code>request.memory<\/code> ja <code>limit.memory<\/code>. Nii ei planeeri Kubernetes Pod'i solgus, kus on piisavalt m\u00e4lu Pod'i k\u00e4ivitamiseks, kuid mitte piisavalt t\u00f6\u00f6ks. Pidage meeles: Pod'i planeerimisel arvestab Kubernetes ainult <code>requests.memory<\/code>, vaid <code>limits.memory<\/code> ei arvesta.<\/p>\n<h2>CPU: taotlus ja piirang<\/h2>\n<p><\/p>\n<pre><code class=\"plaintext\">containers:\n...\n resources:\n   requests:\n     cpu: 1\n   limits:\n     cpu: \"1200m\"\n<\/code><\/pre>\n<p>\nCPU-de puhul on k\u00f5ik veidi keerulisem. Tagasi tulles pildile, mis n\u00e4itab suhete seost Kubernetes'i ja Docker'i vahel, v\u00f5ib m\u00e4rkida, et <code>request.cpu<\/code> vastab <code>--cpu-shares<\/code>, samas kui <code>limit.cpu<\/code> vastab Docker'i lipule <code>cpus<\/code> Docker'is.<\/p>\n<p>CPU, mis Kubernetes k\u00fcsib, korrutatakse 1024-ga \u2014 CPU ts\u00fcklite suhe. Kui soovite k\u00fcsida 1 t\u00e4isp\u00fcsi, peate lisama <code>cpu: 1<\/code>, nagu eespool n\u00e4idatud. <\/p>\n<p>T\u00e4isp\u00fcsi n\u00f5udmine (suhe = 1024) ei t\u00e4henda, et teie konteiner seda kindlasti saab. Kui teie host-s\u00fcsteemil on vaid \u00fcks p\u00fcsi ja kasutate rohkem kui \u00fchte konteinerit, peavad k\u00f5ik konteinerid jagama kergesti kergesti saadaolevat CPU-d. Kuidas see toimub? Vaatame pilti.<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas p\u00e4\u00e4seda juurde Kubernetes Pod&#039;i ressurssidele\" src=\"\/wp-content\/uploads\/2020\/09\/7f4b20642708ef3a7e773d7900161267.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCPU n\u00f5udmine \u2014 s\u00fcsteem, kus on \u00fcks p\u00fcsi<\/p>\n<p>Kujutage ette, et teil on host-s\u00fcsteem, kus on \u00fcks p\u00fcsi, millel t\u00f6\u00f6tavad konteinerid. Ema (Kubernetes) k\u00fcpsetab koogi (CPU) ja soovib seda jagada laste vahel (konteinerid). Kolm last soovivad tervet koogi (suhe = 1024), veel \u00fcks laps soovib poole kooki (512). Ema soovib olla \u00f5iglane ja teeb lihtsa arvutuse.<\/p>\n<pre><code class=\"plaintext\"># \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u043e\u0432 \u0445\u043e\u0442\u044f\u0442 \u0434\u0435\u0442\u0438?\n# 3 \u0440\u0435\u0431\u0435\u043d\u043a\u0430 \u0445\u043e\u0442\u044f\u0442 \u043f\u043e \u0446\u0435\u043b\u043e\u043c\u0443 \u043f\u0438\u0440\u043e\u0433\u0443 \u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0438\u0440\u043e\u0433\u0430\ncakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5\n# \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:\n3 (\u0440\u0435\u0431\u0435\u043d\u043a\u0430\/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430) * 1 (\u0446\u0435\u043b\u044b\u0439 \u043f\u0438\u0440\u043e\u0433\/\u043f\u043e\u043b\u043d\u043e\u0435 \u044f\u0434\u0440\u043e) + 1 (\u0440\u0435\u0431\u0435\u043d\u043e\u043a\/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440) * 0.5 (\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u0438\u0440\u043e\u0433\u0430\/\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u044f\u0434\u0440\u0430)\n# \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u043e\u0432 \u0438\u0441\u043f\u0435\u0447\u0435\u043d\u043e?\navailableCakesNumber = 1\n# \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u0430 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e) \u0434\u0435\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c?\nnewMaxRequest = 1 \/ 3.5 =~ 28%<\/code><\/pre>\n<p>\nAruande kohaselt saavad kolm last 28% p\u00fcsi, mitte tervet p\u00fcsi. Neljas laps saab 14% t\u00e4isp\u00fcsi, mitte pool. Kuid k\u00f5ik on erinev, kui teil on mitme p\u00f5lvkonna s\u00fcsteem.<\/p>\n<p><img decoding=\"async\" alt=\"Kuidas p\u00e4\u00e4seda juurde Kubernetes Pod&#039;i ressurssidele\" src=\"\/wp-content\/uploads\/2020\/09\/7bf71d97add9adcf7cf0260941526590.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCPU n\u00f5udmine \u2014 mitme p\u00f5lvkonna (4) s\u00fcsteem<\/p>\n<p>\u00dclaltoodud pildil on n\u00e4ha, et kolm last soovivad tervet kooki, ja \u00fcks \u2014 poole. Kuna ema k\u00fcpsetab neli kooki, saavad k\u00f5ik tema lapsed seda, mida nad tahavad. Mitme p\u00f5lvkonna s\u00fcsteemis on protsessori ressursid jaotatud k\u00f5ikide saadaolevate p\u00fcside vahel. Kui konteiner on piiratud alla \u00fche t\u00e4isp\u00fcsi CPU, v\u00f5ib see siiski \u00e4ra kasutada 100%. <\/p>\n<p>\u00dclaltoodud arvutused on lihtsustatud, et m\u00f5ista, kuidas CPU jaotatakse konteinerite vahel. Loomulikult on peale konteinerite ka muid protsesse, mis kasutavad CPU ressursse. Kui protsessid \u00fches konteineris on mitteaktiivsed, saavad teised kasutada nende ressursse. <code>CPU: \"200m\"<\/code> vastab <code>CPU: 0,2<\/code>, mis t\u00e4hendab umbes 20% \u00fchest p\u00fcsi.<\/p>\n<p>N\u00fc\u00fcd r\u00e4\u00e4gime me <code>limit.cpu<\/code>. CPU, mida Kubernetes piirab, korrutatakse 100-ga. Tulemuseks on see, kui kaua konteiner saab kasutada igas 100 mikrosekundis (<code>cpu-period<\/code>). <\/p>\n<p><code>limit.cpu<\/code> vastab Docker'i lipule <code>--cpus<\/code>. See on vana segu uue kombinatsiooniga <code>--cpu-period<\/code> ja <code>--cpu-quota<\/code>. Selle seadistamisega m\u00e4rgime, kui palju saadaolevaid CPU ressursse konteiner saab maksimaalselt kasutada enne, kui hakkab vahetama:<\/p>\n<ul>\n<li><strong>cpus<\/strong> \u2014 kombinatsioon <code>cpu-period<\/code> ja <code>cpu-quota. cpus = 1.5<\/code> on ekvivalentse seadistamisega <code>cpu-period = 100000<\/code> ja <code>cpu-quota = 150000<\/code>;<\/li>\n<li><strong>cpu-period<\/strong> \u2014 periood <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">CPU CFS planeerijat<\/a><\/noindex>, vaikimisi 100 mikrosekundit;<\/li>\n<li><strong>cpu-quota<\/strong> \u2014 mikrosekundite arv, mille jooksul <code>cpu-period<\/code>, millega konteinerit piiratakse.<\/li>\n<\/ul>\n<p>\n<strong>Mida juhtub, kui m\u00e4\u00e4rate liiga v\u00e4he n\u00f5utud CPU-d?<\/strong><\/p>\n<p>Kui konteiner vajab rohkem, kui on m\u00e4\u00e4ratud, siis varastab see CPU teistelt protsessidelt.<\/p>\n<p><strong>Mida juhtub, kui m\u00e4\u00e4rate ka madala CPU limiidi?<\/strong><\/p>\n<p>Kuna CPU ressursid on reguleeritavad, aktiveeritakse throttling.<\/p>\n<p><strong>Mis juhtub, kui CPU n\u00f5uet ei m\u00e4\u00e4rata?<\/strong><\/p>\n<p>Nagu ka m\u00e4lu puhul, on n\u00f5ude v\u00e4\u00e4rtus sama mis limiit.<\/p>\n<p><strong>Mida juhtub, kui CPU limiiti ei m\u00e4\u00e4rata?<\/strong><\/p>\n<p>Konteiner kasutab nii palju CPU-d, kui tal on vaja. Kui nimespetsiifilis jaotuses on m\u00e4\u00e4ratud vaike CPU poliitika (LimitRange), siis kasutatakse seda limiiti ka konteineri jaoks.<\/p>\n<p><strong>Mida juhtub, kui ei m\u00e4\u00e4rata ei n\u00f5uet ega limiiti CPU-le?<\/strong><\/p>\n<p>Nagu ka m\u00e4lu puhul, on see halvim stsenaarium. Planeerijal ei ole aimu, kui palju ressursse teie konteiner vajab, ja see v\u00f5ib p\u00f5hjustada t\u00f5siseid probleeme s\u00f5lmes. Selle v\u00e4ltimiseks tuleb m\u00e4\u00e4rata vaikimisi piirangud nimespetsiifilistes jaotustes (LimitRange).<\/p>\n<p>Pidage meeles: kui k\u00fcsida rohkem CPU-d, kui s\u00f5lmed saavad pakkuda, siis Pod ei saa planeeritud. <code>Requests.cpu<\/code> \u2014 mitte minimaalne v\u00e4\u00e4rtus, vaid v\u00e4\u00e4rtus, mis on piisav Pod-i k\u00e4ivitamiseks ja probleemivabaks t\u00f6\u00f6tamiseks. Kui rakendus ei tee keerulisi arvutusi, on parem m\u00e4\u00e4rata <code>request.cpu &lt;= 1<\/code> ja k\u00e4ivitada nii palju koopiaid, kui vajalik.<\/p>\n<h2>Ideaalne n\u00f5utud ressursside v\u00f5i ressursside limiit<\/h2>\n<p>\nOleme \u00f5ppinud arvutusressursside piirangutest. N\u00fc\u00fcd on aeg vastata k\u00fcsimusele: 'Kui palju ressursse vajab minu Pod rakenduse probleemivabaks toimimiseks? Milline on ideaalne kogus?'. <\/p>\n<p>Kahjuks ei ole nendele k\u00fcsimustele selgeid vastuseid. Kui te ei tea, kuidas teie rakendus t\u00f6\u00f6tab, kui palju CPU-d v\u00f5i m\u00e4lu tal vaja on, on parim lahendus anda rakendusele rohkelt m\u00e4lu ja CPU-d ning seej\u00e4rel l\u00e4bida j\u00f5udluse testid.<\/p>\n<p>Lisaks j\u00f5udluse testidele j\u00e4lgige rakenduse k\u00e4itumist seitsme p\u00e4eva jooksul monitooringus. Kui graafikud n\u00e4itavad, et teie rakendus tarbib v\u00e4hem ressursse, kui k\u00fcsisite, siis v\u00f5ib v\u00e4hendada n\u00f5utud CPU v\u00f5i m\u00e4lu kogust.<\/p>\n<p>Kuna n\u00e4ide vaadake seda <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/7187\">Grafana armatuurlauda<\/a><\/noindex>See n\u00e4itab v\u00e4lja k\u00fcsitud ressursside v\u00f5i ressursipiirangute ja praeguse ressursikasutuse vahet.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nRessursside k\u00fcsitlus ja piirangud aitavad hoida Kubernetes'e klastrit t\u00f6\u00f6korras. \u00d5ige piirangute seadmine minimeerib kulud ja hoiab rakendused pidevalt t\u00f6\u00f6tamas.<\/p>\n<p>Kokkuv\u00f5ttes tuleks meeles pidada mitmeid aspekte:<\/p>\n<ol>\n<li>N\u00f5utavad ressursid on konfiguratsioon, mida arvestatakse rakenduse k\u00e4ivitamisel (kui Kubernetes plaanib rakenduse paigutust). Vastupidiselt on ressursipiirang oluline rakenduse k\u00e4itamise ajal \u2014 kui rakendus on juba s\u00f5lmes t\u00f6\u00f6tamas.<\/li>\n<li>Kuigi m\u00e4lu on stabiilne ressurss, on CPU seadistatav ressurss. Kui CPU-d on liiga v\u00e4he, ei l\u00f5petata teie Pod-i t\u00f6\u00f6d, vaid aktiveeritakse throttle\u2019imise mehhanism.<\/li>\n<li>N\u00f5utavad ressursid ja ressursipiirangud ei ole minimaalne ja maksimaalne v\u00e4\u00e4rtus! N\u00f5utavate ressursside m\u00e4\u00e4ramine tagab, et rakendus t\u00f6\u00f6tab probleemideta.<\/li>\n<li>Hea praktika on seada m\u00e4lu k\u00fcsitlus v\u00f5rdseks m\u00e4lu piiranguga.<\/li>\n<li>Hea on seada k\u00fcsitud <code>CPU &lt;=1<\/code>, kui rakendus ei teosta keerukaid arvutusi.<\/li>\n<li>Kui k\u00fcsitakse rohkem ressursse, kui on s\u00f5lmes, ei plaanita Pod-i kunagi sellele s\u00f5lmele.<\/li>\n<li>\u00d5igete k\u00fcsitavate ressursside\/piirangute m\u00e4\u00e4ramiseks kasutage koormustestimist ja j\u00e4lgimist.<\/li>\n<\/ol>\n<p>\nLoodan, et see artikkel aitab teil m\u00f5ista ressursside piirangute p\u00f5him\u00f5tet. Ja te suudate neid teadmisi oma t\u00f6\u00f6s rakendada.<\/p>\n<p>Edu!<\/p>\n<p><strong>Mida veel lugeda:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500504\/\">SRE j\u00e4lgitavus: nimeruumid ja m\u00f5\u00f5dikute struktuur<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/poleznye-instrumenty-dlya-kubernetes\">90+ kasulikku t\u00f6\u00f6riista Kubernetes'ile: juurutamine, haldamine, j\u00e4lgimine, turvalisus ja mitte ainult<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Meie Tee Kuberneetes kanal Telegrmis<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/516014\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>The Reward by Tohad \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 Docker \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes. \u041d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94262","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=\"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\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\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\udd47\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Kubernetes Pod | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\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-09-14T17:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-14T17:42:34+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\udd47Kuidas p\u00e4\u00e4seda ligi Kubernetes Pod'i ressurssidele | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","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\udd47\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Kubernetes Pod | ProHoster","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","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-09-14T17:42:34+00:00","article:modified_time":"2020-09-14T17:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94262","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 11:30:27","updated":"2022-10-02 18:20:09","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\/94262","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=94262"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/94262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/94263"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=94262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=94262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=94262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}