{"id":82920,"date":"2020-05-26T13:42:37","date_gmt":"2020-05-26T11:42:37","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov"},"modified":"2020-05-26T13:42:37","modified_gmt":"2020-05-26T11:42:37","slug":"luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov","title":{"rendered":"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502052\/\">Nejlep\u0161\u00ed praktiky Kubernetes. Vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">Nejlep\u0161\u00ed praktiky Kubernetes. Organizace Kubernetes pomoc\u00ed jmenn\u00e9ho prostoru<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502430\/\">Nejlep\u0161\u00ed praktiky Kubernetes. Kontrola \u017eivotaschopnosti Kubernetes pomoc\u00ed test\u016f Readiness a Liveness<\/a><\/noindex><\/p>\n<p>Pro ka\u017ed\u00fd Kubernetes zdroj je mo\u017en\u00e9 nastavit dva typy po\u017eadavk\u016f \u2013 Requests a Limits. Prvn\u00ed popisuje minim\u00e1ln\u00ed po\u017eadavky na dostupnost voln\u00fdch prost\u0159edk\u016f uzlu pot\u0159ebn\u00fdch pro spu\u0161t\u011bn\u00ed kontejneru nebo podu, druh\u00e9 striktn\u011b omezuje prost\u0159edky dostupn\u00e9 kontejneru. <\/p>\n<p>Kdy\u017e Kubernetes pl\u00e1nuje pod, je velmi d\u016fle\u017eit\u00e9, aby kontejnery m\u011bly dostatek zdroj\u016f pro norm\u00e1ln\u00ed fungov\u00e1n\u00ed. Pokud pl\u00e1nujete nasadit velkou aplikaci na uzlu s omezen\u00fdmi prost\u0159edky, je mo\u017en\u00e9, \u017ee nebude fungovat kv\u016fli nedostatku pam\u011bti nebo procesorov\u00e9ho v\u00fdkonu. V tomto \u010dl\u00e1nku se pod\u00edv\u00e1me na to, jak lze vy\u0159e\u0161it probl\u00e9my s nedostatkem v\u00fdpo\u010detn\u00edch v\u00fdkon\u016f pomoc\u00ed po\u017eadavk\u016f na prost\u0159edky a limit\u016f.<\/p>\n<p>Po\u017eadavky Requests a limity Limits jsou mechanismy, kter\u00e9 Kubernetes pou\u017e\u00edv\u00e1 k \u0159\u00edzen\u00ed takov\u00fdch prost\u0159edk\u016f, jako je nap\u0159\u00edklad procesor a pam\u011b\u0165. Requests je to, co kontejner zaru\u010den\u011b dostane jako po\u017eadovan\u00fd zdroj. Pokud kontejner po\u017eaduje zdroj, Kubernetes pl\u00e1nuje jeho nasazen\u00ed pouze na tom uzlu, kter\u00fd je schopen ho poskytnout. Limity Limits kontroluj\u00ed, aby zdroje po\u017eadovan\u00e9 kontejnery nikdy nep\u0159es\u00e1hly ur\u010ditou hodnotu.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/047fc1c3dddef1f33be78616ad70d62f.png\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kontejner m\u016f\u017ee zvy\u0161ovat v\u00fdpo\u010detn\u00ed v\u00fdkon pouze do ur\u010dit\u00e9ho limitu, po kter\u00e9m bude omezen. Poj\u010fme se pod\u00edvat, jak to funguje. Existuj\u00ed dva typy zdroj\u016f \u2013 procesor a pam\u011b\u0165. Pl\u00e1nova\u010d Kubernetes pou\u017e\u00edv\u00e1 \u00fadaje o t\u011bchto zdroj\u00edch k ur\u010den\u00ed, kde spustit va\u0161e pody. Typick\u00e1 specifikace zdroj\u016f pro pod vypad\u00e1 takto.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/84f1212f7098d25273217d4218d661f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKa\u017ed\u00fd kontejner v podu m\u016f\u017ee nastavit sv\u00e9 vlastn\u00ed po\u017eadavky a omezen\u00ed, v\u0161e se s\u010d\u00edt\u00e1. Procesorov\u00e9 zdroje jsou ur\u010deny v mili-kroch. Pokud v\u00e1\u0161 kontejner pot\u0159ebuje k b\u011bhu dv\u011b pln\u00e1 j\u00e1dra, nastav\u00edte hodnotu 2000m. Pokud v\u0161ak kontejner pot\u0159ebuje pouze jednu \u010dtvrtinu j\u00e1dra, hodnota bude 250m. M\u011bjte na pam\u011bti, \u017ee pokud nastav\u00edte hodnotu procesorov\u00fdch zdroj\u016f vy\u0161\u0161\u00ed ne\u017e po\u010det jader nejv\u011bt\u0161\u00edho uzlu, v\u00e1\u0161 pod nebude v\u016fbec napl\u00e1nov\u00e1n k spu\u0161t\u011bn\u00ed. Podobn\u00e1 situace nastane, pokud m\u00e1te pod, kter\u00fd pot\u0159ebuje \u010dty\u0159i j\u00e1dra, a Kubernetes cluster se skl\u00e1d\u00e1 pouze ze dvou hlavn\u00edch virtu\u00e1ln\u00edch stroj\u016f.<\/p>\n<p>Pokud va\u0161e aplikace nen\u00ed navr\u017eena speci\u00e1ln\u011b pro vyu\u017eit\u00ed v\u00fdhod v\u00edce jader (p\u0159i\u010dem\u017e na mysli m\u00e1me takov\u00e9 programy, jako jsou slo\u017eit\u00e9 v\u011bdeck\u00e9 v\u00fdpo\u010dty a operace s datab\u00e1zemi), je nejlep\u0161\u00ed prax\u00ed nastavit CPU Requests na 1 nebo ni\u017e\u0161\u00ed s n\u00e1sledn\u00fdm spu\u0161t\u011bn\u00edm v\u011bt\u0161\u00edho po\u010dtu replik pro \u0161k\u00e1lovatelnost. Toto \u0159e\u0161en\u00ed dod\u00e1 syst\u00e9mu v\u011bt\u0161\u00ed flexibilitu a spolehlivost.<\/p>\n<p>Kdy\u017e p\u0159ijde \u0159e\u010d na omezen\u00ed procesoru, v\u0161e se st\u00e1v\u00e1 zaj\u00edmav\u011bj\u0161\u00edm, proto\u017ee se pova\u017euje za komprimovan\u00fd zdroj. Pokud se va\u0161e aplikace za\u010dne bl\u00ed\u017eit k limitu procesorov\u00e9ho v\u00fdkonu, Kubernetes za\u010dne zpomalovat v\u00e1\u0161 kontejner pomoc\u00ed CPU Throttling \u2014 sni\u017eov\u00e1n\u00ed frekvence procesoru. To znamen\u00e1, \u017ee procesor bude um\u011ble omezen, co\u017e m\u016f\u017ee znamenat hor\u0161\u00ed v\u00fdkon aplikace, av\u0161ak proces nebude p\u0159eru\u0161en ani vy\u0159azen. <\/p>\n<p>Zdroje pam\u011bti jsou ur\u010deny v bajtech. Obvykle se hodnota v nastaven\u00edch m\u011b\u0159\u00ed v mebibajtech Mib, ale m\u016f\u017eete zadat jakoukoli hodnotu, od bajt\u016f po petabajty. zde plat\u00ed ta sam\u00e1 situace jako u CPU \u2014 pokud zad\u00e1te po\u017eadavek na mno\u017estv\u00ed pam\u011bti, kter\u00e9 p\u0159ekra\u010duje kapacitu pam\u011bti va\u0161ich uzl\u016f, prov\u00e1d\u011bn\u00ed tohoto podu nebude napl\u00e1nov\u00e1no. Ale na rozd\u00edl od procesorov\u00fdch zdroj\u016f se pam\u011b\u0165 ned\u00e1 komprimovat, proto\u017ee neexistuje \u017e\u00e1dn\u00fd zp\u016fsob, jak omezit jej\u00ed pou\u017e\u00edv\u00e1n\u00ed. Proto bude prov\u00e1d\u011bn\u00ed kontejneru zastaveno, jakmile p\u0159ekro\u010d\u00ed p\u0159id\u011blenou pam\u011b\u0165.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/a2b372ad9de7e065b435dae87ee62708.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe d\u016fle\u017eit\u00e9 m\u00edt na pam\u011bti, \u017ee nem\u016f\u017eete nastavit po\u017eadavky, kter\u00e9 p\u0159esahuj\u00ed kapacitu dostupn\u00fdch zdroj\u016f va\u0161ich uzl\u016f. Vlastnosti sd\u00edlen\u00fdch zdroj\u016f pro virtu\u00e1ln\u00ed stroje GKE naleznete na odkazech um\u00edst\u011bn\u00fdch pod t\u00edmto videem.<\/p>\n<p>V ide\u00e1ln\u00edm sv\u011bt\u011b by v\u00fdchoz\u00ed nastaven\u00ed kontejneru bylo zcela dostate\u010dn\u00e9 pro bezprobl\u00e9mov\u00fd b\u011bh pracovn\u00edch proces\u016f. Skute\u010dn\u00fd sv\u011bt v\u0161ak takov\u00fd nen\u00ed, lid\u00e9 snadno zapom\u00ednaj\u00ed nastavit vyu\u017eit\u00ed zdroj\u016f nebo hacke\u0159i mohou nastavit po\u017eadavky a limity, kter\u00e9 p\u0159esahuj\u00ed skute\u010dn\u00e9 mo\u017enosti infrastruktury. Aby se p\u0159ede\u0161lo takov\u00fdm sc\u00e9n\u00e1\u0159\u016fm, je mo\u017en\u00e9 nastavit kv\u00f3ty zdroj\u016f ResourceQuota a rozsahy limit\u016f LimitRange.<\/p>\n<p>Po vytvo\u0159en\u00ed jmenn\u00e9ho prostoru je mo\u017en\u00e9 jej zablokovat pomoc\u00ed kv\u00f3t. Nap\u0159\u00edklad, pokud m\u00e1te jmenn\u00e9 prostory prod a dev, pou\u017e\u00edv\u00e1 se \u0161ablona, kde kv\u00f3ty na produkci nejsou v\u016fbec, zat\u00edmco kv\u00f3ty na v\u00fdvoj jsou velmi p\u0159\u00edsn\u00e9. To umo\u017e\u0148uje prost\u0159ed\u00ed prod v p\u0159\u00edpad\u011b n\u00e1hl\u00e9ho n\u00e1r\u016fstu provozu zabrat v\u0161echny dostupn\u00e9 zdroje a \u00fapln\u011b zablokovat dev.<\/p>\n<p>Kv\u00f3ta zdroj\u016f m\u016f\u017ee vypadat takto. V tomto p\u0159\u00edkladu jsou zde 4 sekce \u2013 jde o 4 spodn\u00ed \u0159\u00e1dky k\u00f3du.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/569f4ddde6ad46c707e91cc05947fc6b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPod\u00edvejme se na ka\u017edou z nich. Requests.cpu p\u0159edstavuje maxim\u00e1ln\u00ed po\u010det kombinovan\u00fdch po\u017eadavk\u016f na procesorov\u00fd v\u00fdkon, kter\u00e9 mohou poch\u00e1zet ze v\u0161ech kontejner\u016f v jmenn\u00e9m prostoru. V tomto p\u0159\u00edkladu m\u016f\u017eete m\u00edt 50 kontejner\u016f s po\u017eadavky po 10m, p\u011bt kontejner\u016f s po\u017eadavky po 100m nebo jednodu\u0161e jeden kontejner s po\u017eadavkem 500m. Dokud celkov\u00e9 mno\u017estv\u00ed requests.cpu tohoto jmenn\u00e9ho prostoru bude men\u0161\u00ed ne\u017e 500m, v\u0161echno bude v po\u0159\u00e1dku.<\/p>\n<p>Po\u017eadovan\u00e1 pam\u011b\u0165 requests.memory je maxim\u00e1ln\u00ed mno\u017estv\u00ed kombinovan\u00fdch po\u017eadavk\u016f na pam\u011b\u0165, kter\u00e9 mohou m\u00edt v\u0161echny kontejnery v jmenn\u00e9m prostoru. Podobn\u011b jako v p\u0159edchoz\u00edm p\u0159\u00edpad\u011b, m\u016f\u017eete m\u00edt 50 kontejner\u016f po 2 MiB, p\u011bt kontejner\u016f po 20 MiB nebo jeden jedin\u00fd kontejner s 100 MiB, dokud celkov\u00e9 mno\u017estv\u00ed po\u017eadovan\u00e9 pam\u011bti v jmenn\u00e9m prostoru nebude men\u0161\u00ed ne\u017e 100 mebibajt\u016f.<\/p>\n<p>Limits.cpu je maxim\u00e1ln\u00ed kombinovan\u00e1 hodnota procesorov\u00e9ho v\u00fdkonu, kterou mohou pou\u017e\u00edt v\u0161echny kontejnery v jmenn\u00e9m prostoru. M\u016f\u017eeme to pova\u017eovat za strop po\u017eadavk\u016f na procesorov\u00fd v\u00fdkon.<\/p>\n<p>Nakonec, limits.memory \u2013 maxim\u00e1ln\u00ed objem celkov\u00e9 pam\u011bti, kter\u00fd mohou pou\u017e\u00edvat v\u0161echna kontejnery ve jmenn\u00e9m prostoru. Toto omezen\u00ed se t\u00fdk\u00e1 souhrnn\u00fdch po\u017eadavk\u016f na pam\u011b\u0165.<br \/>\nTak\u017ee ve v\u00fdchoz\u00edm nastaven\u00ed kontejnery v klastru Kubernetes pracuj\u00ed s neomezen\u00fdmi v\u00fdpo\u010detn\u00edmi zdroji. Pomoc\u00ed kv\u00f3t zdroj\u016f mohou administr\u00e1to\u0159i klastra omezit spot\u0159ebu zdroj\u016f a jejich vytv\u00e1\u0159en\u00ed na z\u00e1klad\u011b jmenn\u00e9ho prostoru. V jmenn\u00e9m prostoru m\u016f\u017ee modul pod nebo kontejner spot\u0159ebov\u00e1vat tolik CPU a pam\u011bti, kolik je definov\u00e1no kv\u00f3tou zdroj\u016f jmenn\u00e9ho prostoru. Existuje v\u0161ak obava, \u017ee jeden pod nebo kontejner m\u016f\u017ee monopolizovat v\u0161echny dostupn\u00e9 zdroje. K zamezen\u00ed takov\u00e9 situace se pou\u017e\u00edv\u00e1 p\u0159edlimitn\u00ed rozsah limit Range \u2013 politika omezov\u00e1n\u00ed p\u0159id\u011blov\u00e1n\u00ed zdroj\u016f (pro pody nebo kontejnery) v jmenn\u00e9m prostoru.<\/p>\n<p>P\u0159edlimitn\u00ed rozsah poskytuje omezen\u00ed, kter\u00e1 mohou:<\/p>\n<ul>\n<li>zajistit minim\u00e1ln\u00ed a maxim\u00e1ln\u00ed vyu\u017eit\u00ed v\u00fdpo\u010detn\u00edch zdroj\u016f pro ka\u017ed\u00fd modul nebo kontejner v jmenn\u00e9m prostoru;<\/li>\n<li>vynutit minim\u00e1ln\u00ed a maxim\u00e1ln\u00ed po\u017eadavek na \u00falo\u017ei\u0161t\u011b Storage Request pro ka\u017ed\u00fd PersistentVolumeClaim v jmenn\u00e9m prostoru;<\/li>\n<li>vynutit nastaven\u00ed pom\u011bru mezi po\u017eadavkem Request a omezen\u00edm Limit pro zdroj v jmenn\u00e9m prostoru;<\/li>\n<li>nastavovat Requests\/Limits ve v\u00fdchoz\u00edm nastaven\u00ed pro v\u00fdpo\u010detn\u00ed zdroje v jmenn\u00e9m prostoru a automaticky je zav\u00e1d\u011bt do kontejner\u016f b\u011bhem provozu.<\/li>\n<\/ul>\n<p>\nTak\u017ee m\u016f\u017eete vytvo\u0159it p\u0159edlimitn\u00ed rozsah ve sv\u00e9m jmenn\u00e9m prostoru. Na rozd\u00edl od kv\u00f3ty, kter\u00e1 se vztahuje na cel\u00fd jmenn\u00fd prostor, se Limit Range pou\u017e\u00edv\u00e1 pro jednotliv\u00e9 kontejnery. To m\u016f\u017ee zabr\u00e1nit u\u017eivatel\u016fm vytv\u00e1\u0159et velmi mal\u00e9 nebo naopak obrovsk\u00e9 kontejnery uvnit\u0159 jmenn\u00e9ho prostoru. P\u0159edlimitn\u00ed rozsah Limit Range m\u016f\u017ee vypadat takto. <\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/3fb358788910ca21e267a887032cdf1a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nStejn\u011b jako v p\u0159edchoz\u00edm p\u0159\u00edpad\u011b, zde lze vy\u010dlenit 4 sekce. Poj\u010fme se pod\u00edvat na ka\u017edou z nich.<br \/>\nV sekci default se nastavuj\u00ed v\u00fdchoz\u00ed omezen\u00ed pro kontejner v podu. Pokud tyto hodnoty ur\u010d\u00edte v p\u0159edlimitn\u00edm rozsahu, jak\u00e9koli kontejnery, pro kter\u00e9 tyto hodnoty nebyly v\u00fdslovn\u011b nastaveny, budou \u0159\u00edzeny v\u00fdchoz\u00edmi hodnotami.<\/p>\n<p>V odd\u00edlu defaultRequest jsou nastaveny v\u00fdchoz\u00ed po\u017eadavky pro kontejnery v podu. Pokud tato nastaven\u00ed um\u00edst\u00edte do mez\u00ed, jak\u00e9koli kontejnery, pro kter\u00e9 tyto parametry nejsou v\u00fdslovn\u011b nastaveny, budou pou\u017e\u00edvat tyto v\u00fdchoz\u00ed hodnoty.<\/p>\n<p>V odd\u00edlu max jsou uvedena maxim\u00e1ln\u00ed omezen\u00ed, kter\u00e1 mohou b\u00fdt nastavena pro kontejner v podu. Hodnoty v \u010d\u00e1sti default a omezen\u00ed pro kontejnery nelze nastavit nad tento limit. Je d\u016fle\u017eit\u00e9 poznamenat, \u017ee pokud je nastavena hodnota max a odd\u00edl default neexistuje, pak se maxim\u00e1ln\u00ed hodnota st\u00e1v\u00e1 v\u00fdchoz\u00ed hodnotou.<\/p>\n<p>V odd\u00edlu min jsou uvedeny minim\u00e1ln\u00ed po\u017eadavky, kter\u00e9 mohou b\u00fdt nastaveny pro kontejner v podu. Hodnoty v odd\u00edlu default a po\u017eadavky pro kontejnery nelze nastavit pod tento limit.<\/p>\n<p>Je d\u016fle\u017eit\u00e9 poznamenat, \u017ee pokud je tato hodnota nastavena a hodnota default nen\u00ed, pak minim\u00e1ln\u00ed hodnota se st\u00e1v\u00e1 v\u00fdchoz\u00edm po\u017eadavkem.<\/p>\n<p>Tyto po\u017eadavky na zdroje pou\u017e\u00edv\u00e1 pl\u00e1nova\u010d Kubernetes k prov\u00e1d\u011bn\u00ed va\u0161ich pracovn\u00edch z\u00e1t\u011b\u017e\u00ed. Abyste mohli spr\u00e1vn\u011b nastavit sv\u00e9 kontejnery, je velmi d\u016fle\u017eit\u00e9 pochopit, jak to funguje. P\u0159edpokl\u00e1dejme, \u017ee chcete spustit n\u011bkolik modul\u016f ve sv\u00e9m clusteru. P\u0159edpokl\u00e1daj\u00edc\u00ed, \u017ee specifikace podu jsou platn\u00e9, bude v pl\u00e1nov\u00e1n\u00ed Kubernetes pou\u017eito cyklick\u00e9 vyv\u00e1\u017een\u00ed zat\u00ed\u017een\u00ed k v\u00fdb\u011bru uzlu pro vykon\u00e1n\u00ed pracovn\u00edho zat\u00ed\u017een\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/29abd097fc0158dfbb585c4617036ccf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes zkontroluje, zda m\u00e1 uzel Node 1 dostatek prost\u0159edk\u016f na spln\u011bn\u00ed po\u017eadavk\u016f kontejner\u016f podu, a pokud ne, p\u0159ejde na dal\u0161\u00ed uzel. Pokud \u017e\u00e1dn\u00fd z uzl\u016f v syst\u00e9mu nen\u00ed schopen splnit po\u017eadavky, p\u0159ejdou pod postupn\u011b do stavu \u010dek\u00e1n\u00ed Pending state. D\u00edky takov\u00fdm funkc\u00edm jako je automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed uzl\u016f v Google Kubernetes Engine (GKE) m\u016f\u017ee GKE automaticky detekovat stav \u010dek\u00e1n\u00ed a vytvo\u0159it dal\u0161\u00ed uzly. <\/p>\n<p>Pokud pak dojde k nadm\u011brn\u00e9 kapacit\u011b uzl\u016f, funkce automatick\u00e9ho \u0161k\u00e1lov\u00e1n\u00ed sn\u00ed\u017e\u00ed jejich po\u010det, aby v\u00e1m u\u0161et\u0159ila pen\u00edze. Proto Kubernetes pl\u00e1nuje pody na z\u00e1klad\u011b po\u017eadavk\u016f. Limit m\u016f\u017ee b\u00fdt vy\u0161\u0161\u00ed ne\u017e po\u017eadavky, a v n\u011bkter\u00fdch p\u0159\u00edpadech m\u016f\u017ee uzel skute\u010dn\u011b vy\u010derpat zdroje. Tento stav naz\u00fdv\u00e1me stavem overcommitment.<\/p>\n<p><img decoding=\"async\" alt=\"Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f\" src=\"\/wp-content\/uploads\/2020\/05\/995c906880f09734c4765519f1f2465d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak jsem ji\u017e zm\u00ednil, pokud jde o procesor, Kubernetes za\u010dne omezovat pody. Ka\u017ed\u00fd pod dostane tolik, kolik po\u017e\u00e1dal, ale pokud nedos\u00e1hne limitu, za\u010dne se uplat\u0148ovat throttling. <\/p>\n<p>Pokud jde o pam\u011b\u0165ov\u00e9 zdroje, Kubernetes je nucen rozhodnout, kter\u00e9 pody odstranit a kter\u00e9 zachovat, dokud neuvoln\u00edte syst\u00e9mov\u00e9 zdroje, jinak se cel\u00fd syst\u00e9m zhrout\u00ed.<\/p>\n<p>P\u0159edstavme si sc\u00e9n\u00e1\u0159, kdy m\u00e1te stroj, kter\u00fd vy\u010derpal limit pam\u011bti \u2013 jak se Kubernetes v takov\u00e9m p\u0159\u00edpad\u011b zachov\u00e1? <\/p>\n<p>Kubernetes bude hledat pody, kter\u00e9 vyu\u017e\u00edvaj\u00ed v\u00edce zdroj\u016f ne\u017e po\u017e\u00e1daly. Tak\u017ee pokud va\u0161e kontejnery v\u016fbec nemaj\u00ed \u017e\u00e1dn\u00e9 po\u017eadavky, znamen\u00e1 to, \u017ee defaultn\u011b pou\u017e\u00edvaj\u00ed v\u00edce, ne\u017e po\u017e\u00e1daly, jednodu\u0161e proto, \u017ee v\u016fbec nic nepo\u017e\u00e1daly! Takov\u00e9 kontejnery se st\u00e1vaj\u00ed hlavn\u00edmi kandid\u00e1ty na vypnut\u00ed. Dal\u0161\u00edmi kandid\u00e1ty jsou kontejnery, kter\u00e9 splnily v\u0161echny sv\u00e9 po\u017eadavky, ale st\u00e1le z\u016fst\u00e1vaj\u00ed pod maxim\u00e1ln\u00edm limitem. <\/p>\n<p>Pokud Kubernetes najde n\u011bkolik pod\u016f, kter\u00e9 p\u0159ekro\u010dily parametry sv\u00fdch po\u017eadavk\u016f, se\u0159ad\u00ed je podle priority a pot\u00e9 odstran\u00ed ty s nejni\u017e\u0161\u00ed prioritou. Pokud maj\u00ed v\u0161echny moduly stejnou prioritu, Kubernetes zastav\u00ed pr\u00e1ci t\u011bch pod\u016f, kter\u00e9 p\u0159ekro\u010dily sv\u00e9 po\u017eadavky v\u00edce ne\u017e ostatn\u00ed pody. <\/p>\n<p>Ve velmi vz\u00e1cn\u00fdch p\u0159\u00edpadech m\u016f\u017ee Kubernetes p\u0159eru\u0161it pr\u00e1ci pod\u016f, kter\u00e9 st\u00e1le z\u016fst\u00e1vaj\u00ed v r\u00e1mci sv\u00fdch po\u017eadavk\u016f. K tomu m\u016f\u017ee doj\u00edt, kdy\u017e takov\u00e9 kritick\u00e9 komponenty syst\u00e9mu, jako je agent Kubelet nebo Docker, za\u010dnou spot\u0159ebov\u00e1vat v\u00edce zdroj\u016f, ne\u017e bylo pro n\u011b rezervov\u00e1no. <br \/>\nTak\u017ee v \u00favodn\u00edch f\u00e1z\u00edch fungov\u00e1n\u00ed mal\u00fdch spole\u010dnost\u00ed m\u016f\u017ee klastr Kubernetes fungovat skv\u011ble bez nastavov\u00e1n\u00ed po\u017eadavk\u016f na zdroje a limit\u016f, ale jakmile za\u010dnou va\u0161e t\u00fdmy a projekty r\u016fst, riskujete, \u017ee se setk\u00e1te s probl\u00e9my v t\u00e9to oblasti. P\u0159id\u00e1n\u00ed po\u017eadavk\u016f a limit\u016f do va\u0161ich modul\u016f a jmenn\u00fdch prostor\u016f vy\u017eaduje jen velmi m\u00e1lo dal\u0161\u00edch \u00fasil\u00ed a m\u016f\u017ee v\u00e1s zbavit mnoha pot\u00ed\u017e\u00ed.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/503488\/\"> Nejlep\u0161\u00ed praktiky Kubernetes. Spr\u00e1vn\u00e9 ukon\u010den\u00ed Terminate<\/a><\/noindex><\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"mxEvAPQRwhw\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/mxEvAPQRwhw\/hqdefault.jpg\" alt=\"P\u0159ehr\u00e1t video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Mal\u00e1 reklama \ud83d\ude42<\/h3>\n<p>\nD\u011bkujeme, \u017ee s n\u00e1mi z\u016fst\u00e1v\u00e1te. L\u00edb\u00ed se v\u00e1m na\u0161e \u010dl\u00e1nky? Chcete vid\u011bt v\u00edce zaj\u00edmav\u00fdch materi\u00e1l\u016f? Podpo\u0159te n\u00e1s objedn\u00e1vkou nebo doporu\u010den\u00edm zn\u00e1m\u00fdm, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">cloudov\u00e9 VPS pro v\u00fdvoj\u00e1\u0159e od 4,99 $<\/a><\/noindex>, <b>unik\u00e1tn\u00ed alternativa entry-level server\u016f, kterou jsme pro v\u00e1s vymysleli:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">V\u0161echny pravdy o VPS (KVM) E5-2697 v3 (6 jader) 10GB DDR4 480GB SSD 1Gbps od 19 $ nebo jak spr\u00e1vn\u011b rozd\u011blit server?<\/a><\/noindex> (k dispozici varianty s RAID1 a RAID10, a\u017e 24 jader a a\u017e 40GB DDR4).<\/p>\n<p><b>Dell R730xd je dvakr\u00e1t levn\u011bj\u0161\u00ed v datov\u00e9m centru Equinix Tier IV v Amsterdamu?<\/b> Jen u n\u00e1s <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB od 199 $<\/a><\/noindex> v Nizozemsku! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 od 99 $!<\/b><\/b> \u010ct\u011bte o tom <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Jak postavit infrastrukturu podnikov\u00e9 t\u0159\u00eddy s pou\u017eit\u00edm server\u016f Dell R730xd E5-2650 v4 v hodnot\u011b 9000 eur za pakatel?<\/a><\/noindex><br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502614\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f Kubernetes \u0441 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d \u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 Kubernetes \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0441\u0442\u043e\u0432 Readiness \u0438 Liveness \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 Kubernetes \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u2014 Requests \u0438 Limits. \u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0443\u0437\u043b\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u0430, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82921,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82920","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\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\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov\" \/>\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-05-26T11:42:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-26T11:42:37+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\udd47Nejlep\u0161\u00ed praktiky Kubernetes. Nastaven\u00ed po\u017eadavk\u016f a limit\u016f zdroj\u016f | ProHoster","description":"Nejlep\u0161\u00ed praktiky Kubernetes.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 | ProHoster","og:description":"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov","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-05-26T11:42:37+00:00","article:modified_time":"2020-05-26T11:42:37+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82920","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 15:28:37","updated":"2022-09-28 05:48:38","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/82920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=82920"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/82920\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/82921"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=82920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=82920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=82920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}