{"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\/sl\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","title":{"rendered":"Kako dostopati do virov Kubernetes Pod","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kako dostopati do virov Kubernetes Pod\" 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>Nagrada od Tohada<\/i><\/a><\/noindex><\/p>\n<p>Na po\u010detku rada s Kubernetes-om obi\u010dno se zaboravlja na postavljanje resursa kontejnera. U ovoj fazi dovoljno je osigurati da Docker slika radi i da se mo\u017ee rasporediti unutar Kubernetes klastera.<\/p>\n<p>No kasnije se aplikacija zahtijeva distribuirati unutar produkcijskog klastera zajedno s drugim aplikacijama. Za to je potrebno dodijeliti resurse kontejneru i osigurati da ih ima dovoljno za pokretanje i rad aplikacije, a da pritom u drugim pokrenutim aplikacijama ne do\u0111e do problema.<\/p>\n<p>Komanda <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Kubernetes aaS od Mail.ru<\/a><\/noindex> prevela je \u010dlanak o resursima kontejnera (CPU &amp; MEM), zahtjevima i ograni\u010denjima resursa. Saznat \u0107ete koje prednosti pru\u017eaju ova pode\u0161avanja i \u0161to \u0107e se dogoditi ako ih ne postavite.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Ra\u010dunarski resursi<\/h2>\n<p>\nImamo dva tipa resursa s sljede\u0107im jedinicama:<\/p>\n<ul>\n<li>Centralna procesorska jedinica (CPU) \u2014 jezgre;<\/li>\n<li>Memorija (MEM) \u2014 bajtovi.<\/li>\n<\/ul>\n<p>\nResursi se navode za svaki kontejner. U sljede\u0107em YAML fajlu Pod-a vidjet \u0107ete odjeljak resursa koji sadr\u017ei tra\u017eene i maksimalne resurse:<\/p>\n<ul>\n<li>Tra\u017eeni resursi Pod-a = zbroj tra\u017eenih resursa svih kontejnera;<\/li>\n<li>Maksimalni resursi Pod-a = zbroj maksimalnih resursa svih kontejnera.<\/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    - name: main-container\n      image: my-backend\n      tag: v1\n      ports:\n      - containerPort: 8080\n      resources:\n        requests:\n          cpu: 0.2 # REQUESTED CPU: 200m cores\n          memory: \"1Gi\" # REQUESTED MEM: 1Gi\n        limits:\n          cpu: 1 # MAX CPU USAGE: 1 core\n          memory: \"1Gi\" # MAX MEM USAGE: 1Gi\n    - name: other-container\n      image: other-app\n      tag: v1\n      ports:\n      - containerPort: 8000\n      resources:\n        requests:\n          cpu: \"200m\" # REQUESTED CPU: 200m cores\n          memory: \"0.5Gi\" # REQUESTED MEM: 0.5Gi\n        limits:\n          cpu: 1 # MAX CPU USAGE: 1 core\n          memory: \"1Gi\" # MAX MEM USAGE: 1Gi<\/code><\/pre>\n<p>Primjer tra\u017eenih i maksimalnih resursa<\/p>\n<p>Field <code>resources.requested<\/code> iz specifikacije Pod-a \u2014 jedan od elemenata koji se koristi za pronala\u017eenje potrebne \u010dvorove. Na njega se ve\u0107 mo\u017ee planirati raspored Pod-a. Kako pronalaze odgovaraju\u0107i \u010dvor?<\/p>\n<p>Kubernetes se sastoji od nekoliko komponenti, uklju\u010duju\u0107i glavni \u010dvor ili majstorski \u010dvor (Kubernetes Control Plane). U majstorskom \u010dvoru postoji nekoliko procesa: kube-apiserver, kube-controller-manager i kube-scheduler. <\/p>\n<p>Proces kube-scheduler odgovoran je za gledanje novo kreiranih modula i pronala\u017eenje mogu\u0107ih radnih \u010dvorova koji udovoljavaju svim zahtjevima modula, uklju\u010duju\u0107i koli\u010dinu tra\u017eenih resursa. Popis \u010dvorova koje je prona\u0161ao kube-scheduler rangira se. Pod se planira na \u010dvoru s najvi\u0161im bodovima.<\/p>\n<p><img decoding=\"async\" alt=\"Kako dostopati do virov Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/b489991a3cbbd5359c99701886d488e5.jpg\" style=\"display:block;margin: 0 auto;\" \/>Gdje \u0107e biti postavljen ljubi\u010dasti Pod?<\/p>\n<p>Na sliki je vidno, da kube-scheduler mora na\u010drtovati nov vijoli\u010dni Pod. Kubernetes klastra vsebuje dva vozli\u0161\u010da: A in B. Kot lahko opazite, kube-scheduler ne more na\u010drtovati Poda na vozli\u0161\u010du A \u2014 na voljo (neprijavljeni) viri ne ustrezajo zahtevam vijoli\u010dnega Poda. Tako, da 1 GB pomnilnika, ki ga zahteva vijoli\u010dni Pod, ne more biti name\u0161\u010den na vozli\u0161\u010de A, saj je razpolo\u017eljivi pomnilnik le 0,5 GB. Vendar pa ima vozli\u0161\u010de B dovolj virov. Kube-scheduler tako odlo\u010di, da je ciljna lokacija vijoli\u010dnega Poda \u2014 vozli\u0161\u010de B.<\/p>\n<p>Zdaj vemo, kako zahtevani viri vplivajo na izbiro vozli\u0161\u010da za zagon Poda. Ampak, kak\u0161en vpliv imajo maksimalni viri?<\/p>\n<p>Maksimalni viri so meja, ki je CPU\/MEM ne more prese\u010di. Kljub temu je vir CPU fleksibilen, zato dose\u017eeni maksimumi CPU ne povzro\u010dijo konca delovanja Poda. Namesto tega se pri\u010dne trotljenje CPU. \u010ce pa bo dose\u017een maksimum porabe MEM, bo vsebnik ustavljen zaradi OOM-Killer in ponovno zagnan, \u010de to omogo\u010da nastavitev RestartPolicy.<\/p>\n<h2>Zahtevani in maksimalni viri podrobno<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Kako dostopati do virov Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/22e672100940e8895ae42a56a681111f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Povezava virov med Dockerjem in Kubernetesom<\/p>\n<p>Najbolj\u0161i na\u010din za razlago delovanja zahtevanih in maksimalnih virov je predstavitev povezave med Kubernetesom in Dockerjem. Na zgornji sliki lahko vidite povezave med polji Kubernetes in zagonimi zastavicami Dockerja.<\/p>\n<h2>Pomnilnik: zahteva in omejitev<\/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>\nKot je bilo omenjeno zgoraj, se pomnilnik meri v bajtih. Na podlagi <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#meaning-of-memory\">dokumentacija Kubernetes<\/a><\/noindex>, lahko pomnilnik ozna\u010dimo kot \u0161tevilo. Obi\u010dajno je celo \u0161tevilo, na primer 2678 \u2014 torej 2678 bajtov. Uporabljajo se lahko tudi priponke <code>G<\/code> in <code>Gi<\/code>, pomembno pa je, da se zavedate, da niso enakovredni. Prvi je decimalni, drugi pa binarni. Kot primer, omenjen v dokumentaciji k8s: <code>128974848<\/code>, <code>129e6<\/code>, <code>129M<\/code>, <code>123Mi<\/code> \u2014 sta prakti\u010dno ekvivalentna.<\/p>\n<p>Parameter Kubernetes <code>limits.memory<\/code> ustreza zastavici <code>--memory<\/code> iz Dockra. V primeru <code>request.memory<\/code> zastavice za Docker ni, saj Docker tega polja ne uporablja. Morda se spra\u0161ujete, ali je to sploh potrebno? Da, potrebno je. Kot sem \u017ee povedal, je polje pomembno za Kubernetes. Na podlagi informacij iz njega kube-scheduler odlo\u010da, na katero vozli\u0161\u010de na\u010drtovati Pod.<\/p>\n<p><strong>Kaj se zgodi, \u010de nastavite nezadostno zahtevo po pomnilniku?<\/strong><\/p>\n<p>\u010ce vsebnik dose\u017ee meje zahtevanega pomnilnika, se Pod doda v skupino Pod, ki se ustavi ob pomanjkanju pomnilnika na vozli\u0161\u010du.<\/p>\n<p><strong>Kaj se zgodi, \u010de nastavite premajhno omejitev pomnilnika?<\/strong><\/p>\n<p>\u010ce kontejner prese\u017ee omejitev pomnilnika, bo kon\u010dan zaradi OOM-Killed. In znova se bo zagnal, \u010de je to mogo\u010de na podlagi RestartPolicy, kjer je privzeta vrednost \u2014 <code>Vedno<\/code>.<\/p>\n<p><strong>Kaj se zgodi, \u010de ne navedete zahtevane pomnilni\u0161ke kapacitete?<\/strong><\/p>\n<p>Kubernetes bo vzel omejitev in jo nastavil kot privzeto vrednost.<\/p>\n<p><strong>Kaj se lahko zgodi, \u010de ne navedete omejenega pomnilnika?<\/strong><\/p>\n<p>Kontejner nima omejitev, lahko uporablja toliko pomnilnika, kolikor \u017eeli. \u010ce pa za\u010dne uporabljati vse razpolo\u017eljive pomnilni\u0161ke kapacitete vozli\u0161\u010da, ga bo ubil OOM. Nato bo kontejner znova zagnal, \u010de je to mogo\u010de na podlagi RestartPolicy.<\/p>\n<p><strong>Kaj se zgodi, \u010de ne navedete omejitev pomnilnika?<\/strong><\/p>\n<p>To je na najslab\u0161em scenariju: planer ne ve, koliko virov potrebuje kontejner, kar lahko povzro\u010di resne te\u017eave na vozli\u0161\u010du. V tem primeru bi bilo dobro imeti privzete omejitve v imenskem prostoru (nastavljene z LimitRange). Privzetih omejitev ni \u2014 Pod nima omejitev, lahko uporablja toliko pomnilnika, kolikor \u017eeli.<\/p>\n<p>\u010ce je zahtevana pomnilni\u0161ka kapaciteta ve\u010dja, kot jo lahko ponudi vozli\u0161\u010de \u2014 Pod ne bo na\u010drtovan. Pomembno je vedeti, da <code>Requests.memory<\/code> \u2014 ni minimalna vrednost. To je opis koli\u010dine pomnilnika, dovolj za stalno delovanje kontejnerja. <\/p>\n<p>Obi\u010dajno priporo\u010damo, da nastavljate enako vrednost za <code>request.memory<\/code> in <code>limit.memory<\/code>. S tem Kubernetes ne bo na\u010drtoval Pod na vozli\u0161\u010du, ki ima dovolj pomnilnika za zagon Pod, vendar ne dovolj za njegovo delovanje. Upo\u0161tevajte: pri na\u010drtovanju Pod Kubernetes upo\u0161teva samo <code>requests.memory<\/code>, a <code>limits.memory<\/code> ne pa tudi.<\/p>\n<h2>CPU: zahteva in omejitev<\/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>\nS CPU je vse nekoliko zapleteno. \u010ce se vrnemo k sliki povezave med Kubernetes in Dockerjem, lahko opazimo, da <code>request.cpu<\/code> ustreza <code>--cpu-shares<\/code>, medtem ko <code>limit.cpu<\/code> ustreza zastavici <code>cpu<\/code> v Dockerju.<\/p>\n<p>CPU, ki ga zahteva Kubernetes, se pomno\u017ei s 1024 \u2014 razmerjem ciklov CPU. \u010ce \u017eelite zahtevati 1 polno jedro, morate dodati <code>cpu: 1<\/code>, kot je prikazano zgoraj. <\/p>\n<p>Zahteva polnega jedra (razmerje = 1024) ne pomeni, da bo va\u0161 kontejner to tudi prejel. \u010ce ima va\u0161 gostiteljski ra\u010dunalnik le eno jedro in uporabljate ve\u010d kot en kontejner, morajo vsi kontejnerji skupno uporabljati razpolo\u017eljiv CPU med seboj. Kako to poteka? Poglejmo sliko.<\/p>\n<p><img decoding=\"async\" alt=\"Kako dostopati do virov Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/7f4b20642708ef3a7e773d7900161267.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZahteva CPU \u2014 sistem z enim jedrom<\/p>\n<p>Predstavljajte si, da imate gostiteljski sistem z enim jedrom, na katerem so zagnani kontejnerji. Mama (Kubernetes) je spekla torto (CPU) in jo \u017eeli deliti med otroke (kontejnerje). Trije otroci \u017eelijo celo torto (razmerje = 1024), en otrok \u017eeli polovico torte (512). Mama \u017eeli biti po\u0161tena in opravi preprost izra\u010dun.<\/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>\nNa podlagi izra\u010duna bodo trije otroci dobili po 28% jedra, namesto celotnega jedra. \u010cetrtemu otroku bo pripadlo 14% celotnega jedra, namesto polovice. Vse pa bo druga\u010de, \u010de imate ve\u010djedrni sistem.<\/p>\n<p><img decoding=\"async\" alt=\"Kako dostopati do virov Kubernetes Pod\" src=\"\/wp-content\/uploads\/2020\/09\/7bf71d97add9adcf7cf0260941526590.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZahteva CPU \u2014 ve\u010djedrni (4) sistem<\/p>\n<p>Na sliki zgoraj je vidno, da trije otroci \u017eelijo celo torto, en pa polovico. Ker je mama spekla \u0161tiri torte, bo vsak od njenih otrok dobil, kar \u017eeli. V ve\u010djedrnem sistemu so procesorske zmogljivosti razdeljene po vseh razpolo\u017eljivih jedrih procesorja. \u010ce je kontejner omejen na manj kot eno celotno jedro CPU, ga lahko vseeno uporablja v 100%. <\/p>\n<p>Navedeni izra\u010duni so poenostavljeni, da bi razumeli, kako se CPU deli med kontejnerje. Seveda pa poleg samih kontejnerjev obstajajo tudi drugi procesi, ki prav tako uporabljajo CPU vire. Ko procesi v enem kontejnerju mirujejo, lahko drugi uporabljajo njegove vire. <code>CPU: \"200m\"<\/code> ustreza <code>CPU: 0,2<\/code>, kar pomeni pribli\u017eno 20% enega jedra.<\/p>\n<p>Sedaj pa se pogovorimo o <code>limit.cpu<\/code>. CPU, ki ga omejuje Kubernetes, se pomno\u017ei s 100. Rezultat je koli\u010dina \u010dasa, ki ga kontejner lahko uporabi vsake 100 mks (<code>cpu-period<\/code>). <\/p>\n<p><code>limit.cpu<\/code> ustreza zastavici Docker <code>--cpus<\/code>. To je nova kombinacija starih <code>--cpu-period<\/code> in <code>--cpu-quota<\/code>. Z njeno nastavitvijo dolo\u010dimo, koliko razpolo\u017eljivih CPU virov lahko kontejner maksimalno uporabi, preden se za\u010dne omejevanje:<\/p>\n<ul>\n<li><strong>cpu<\/strong> \u2014 kombinacija <code>cpu-period<\/code> in <code>cpu-quota. cpus = 1.5<\/code> je enaka nastavitvi <code>cpu-period = 100000<\/code> in <code>cpu-quota = 150000<\/code>;<\/li>\n<li><strong>cpu-period<\/strong> \u2014 obdobje <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">CFS na\u010drtovalnika CPU<\/a><\/noindex>, privzeto 100 mikrosekund;<\/li>\n<li><strong>cpu-quota<\/strong> \u2014 \u0161tevilo mikrosekund znotraj <code>cpu-period<\/code>, ki je omejeno za kontejner.<\/li>\n<\/ul>\n<p>\n<strong>Kaj se zgodi, \u010de je zahtevani CPU nezadosten?<\/strong><\/p>\n<p>\u010ce kontejner potrebuje ve\u010d, kot je nastavljeno, bo ukradel CPU od drugih procesov.<\/p>\n<p><strong>Kaj se zgodi, \u010de je omejitev CPU nezadostna?<\/strong><\/p>\n<p>Ker je CPU vir reguliran, se vklopi omejevanje.<\/p>\n<p><strong>Kaj se zgodi, \u010de ne navedete zahteve za CPU?<\/strong><\/p>\n<p>Kot pri pomnilniku, je vrednost zahtevka enaka omejitvi.<\/p>\n<p><strong>Kaj se zgodi, \u010de ne navedete omejitve CPU?<\/strong><\/p>\n<p>Kontejner bo uporabil toliko CPU, kolikor jih potrebuje. \u010ce je v imenskem prostoru dolo\u010dena standardna politika CPU (LimitRange), se ta omejitev uporablja tudi za kontejner.<\/p>\n<p><strong>Kaj se zgodi, \u010de ne navedete niti zahtevka niti omejitve CPU?<\/strong><\/p>\n<p>Kot pri pomnilniku, je to najslab\u0161i scenarij. Na\u010drtovalec ne ve, koliko virov potrebuje va\u0161 kontejner, kar lahko povzro\u010di resne te\u017eave na nodi. Da bi se temu izognili, je treba nastaviti privzete omejitve za imenske prostore (LimitRange).<\/p>\n<p>Zapomnite si: \u010de zahtevate ve\u010d CPU, kot ga lahko zagotovijo nodi, nato Pod ne bo na\u010drtovan. <code>Requests.cpu<\/code> \u2013 to ni minimalna vrednost, temve\u010d vrednost, dovolj za zagon Pod in delovanje brez prekinitev. \u010ce aplikacija ne izvaja zapletenih izra\u010dunov, je najbolj\u0161a izbira nastaviti <code>request.cpu &lt;= 1<\/code> in zagnati toliko replik, kolikor je potrebno.<\/p>\n<h2>Idealna koli\u010dina zapro\u0161enih virov ali omejitve virov<\/h2>\n<p>\nNau\u010dili smo se o omejitvi ra\u010dunalni\u0161kih virov. Zdaj je \u010das, da odgovorimo na vpra\u0161anje: \"Koliko virov potrebuje moj Pod, da aplikacija deluje brez te\u017eav? Kak\u0161na koli\u010dina je idealna?\". <\/p>\n<p>Na \u017ealost ni enozna\u010dnih odgovorov na ta vpra\u0161anja. \u010ce ne veste, kako deluje va\u0161a aplikacija, koliko CPU ali pomnilnika potrebuje, je najbolj\u0161a izbira, da aplikaciji dodelite veliko pomnilnika in CPU, nato pa izvedete teste zmogljivosti.<\/p>\n<p>Poleg testov zmogljivosti opazujte vedenje aplikacije v monitoringu skozi teden. \u010ce iz grafikonov izhaja, da va\u0161a aplikacija porablja manj virov, kot ste jih zahtevali, potem lahko zmanj\u0161ate koli\u010dino zapro\u0161enega CPU ali pomnilnika.<\/p>\n<p>Kot primer si oglejte to <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/7187\">Grafana nadzorno plo\u0161\u010do<\/a><\/noindex>. Prikazuje razliko med zapro\u0161enimi viri ali omejitvijo virov ter trenutnim uporabo virov.<\/p>\n<h2>Zaklju\u010dek<\/h2>\n<p>\nZahteve in omejitve virov pomagajo ohranjati delovanje Kubernetes grozda. Pravilna konfiguracija omejitev minimizira stro\u0161ke in nenehno ohranja aplikacije v delovanju.<\/p>\n<p>Na kratko, zapomniti si morate ve\u010d stvari:<\/p>\n<ol>\n<li>Zahtevani resursi predstavljaju konfiguracijo, ki se upo\u0161teva med zagonom (ko Kubernetes na\u010drtuje namestitev aplikacije). Nasprotno pa je omejitev virov pomembna med delovanjem \u2014 ko je aplikacija \u017ee zagnana na vozli\u0161\u010du.<\/li>\n<li>V primerjavi z pomnilnikom je CPU reguliran vir. V primeru pomanjkanja CPU va\u0161 Pod ne bo kon\u010dal dela, temve\u010d se bo aktiviral mehanizem omejevanja.<\/li>\n<li>Zahtevani viri in omejitev virov niso minimalne in maksimalne vrednosti! Z dolo\u010danjem zahtevanih virov zagotavljate, da bo aplikacija delovala brez te\u017eav.<\/li>\n<li>Dobra praksa je, da nastavite zahtevo pomnilnika, enako omejitvi pomnilnika.<\/li>\n<li>Dobro je nastaviti zahtevani <code>CPU &lt;=1<\/code>, \u010de aplikacija ne izvaja zahtevnih izra\u010dunov.<\/li>\n<li>\u010ce zahtevate ve\u010d virov, kot jih ima vozli\u0161\u010de, Pod nikoli ne bo na\u010drtovan na to vozli\u0161\u010de.<\/li>\n<li>Za dolo\u010ditev pravega \u0161tevila zahtevanih virov\/omejitev virov uporabite obremenitveno testiranje in spremljanje.<\/li>\n<\/ol>\n<p>\nUpam, da vam bo ta \u010dlanek pomagal razumeti osnovno koncept omejevanja virov. In da boste lahko te informacije uporabili v svojem delu.<\/p>\n<p>Sre\u0107no!<\/p>\n<p><strong>\u0160ta jo\u0161 pro\u010ditati:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500504\/\">Opaznost SRE: imenska prostorska in struktura metrik<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/poleznye-instrumenty-dlya-kubernetes\">90+ korisnih alata za Kubernetes: implementacija, upravljanje, nadzor, bezbednost i jo\u0161 mnogo toga<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Na\u0161 kanal Oko Kubernetes na Telegramu<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Izvor: <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.4 - 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\/sl\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Kako dostopati do virov Kubernetes Pod | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/94262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=94262"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/94262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/94263"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=94262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=94262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=94262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}