{"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\/pl\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov","title":{"rendered":"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502052\/\">Najlepsze praktyki Kubernetes. Tworzenie ma\u0142ych kontener\u00f3w<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502320\/\">Najlepsze praktyki Kubernetes. Organizacja Kubernetes z przestrzeni\u0105 nazw<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/502430\/\">Najlepsze praktyki Kubernetes. Sprawdzanie \u017cywotno\u015bci Kubernetes za pomoc\u0105 test\u00f3w Readiness i Liveness<\/a><\/noindex><\/p>\n<p>Dla ka\u017cdego zasobu Kubernetes istnieje mo\u017cliwo\u015b\u0107 skonfigurowania dw\u00f3ch typ\u00f3w wymaga\u0144 - Requests i Limits. Pierwsze opisuje minimalne wymagania dotycz\u0105ce dost\u0119pno\u015bci wolnych zasob\u00f3w w\u0119z\u0142a, niezb\u0119dnych do uruchomienia kontenera lub poda, a drugie sztywno ogranicza zasoby dost\u0119pne dla kontenera. <\/p>\n<p>Kiedy Kubernetes planuje pod, bardzo wa\u017cne jest, aby kontenery mia\u0142y wystarczaj\u0105ce zasoby do normalnego dzia\u0142ania. Je\u015bli planujesz wdro\u017cy\u0107 du\u017c\u0105 aplikacj\u0119 na w\u0119\u017ale z ograniczonymi zasobami, istnieje du\u017ce prawdopodobie\u0144stwo, \u017ce nie b\u0119dzie ona dzia\u0142a\u0107 z powodu braku pami\u0119ci lub niewystarczaj\u0105cej mocy procesora. W tym artykule om\u00f3wimy, jak mo\u017cna rozwi\u0105za\u0107 problemy z brakiem mocy obliczeniowej za pomoc\u0105 \u017c\u0105da\u0144 zasob\u00f3w i ogranicze\u0144.<\/p>\n<p>\u017b\u0105dania Requests i ograniczenia Limits to mechanizmy, kt\u00f3re Kubernetes wykorzystuje do zarz\u0105dzania takimi zasobami jak procesor i pami\u0119\u0107. Requests to to, dzi\u0119ki czemu kontener gwarantowanie otrzymuje \u017c\u0105dany zas\u00f3b. Je\u015bli kontener \u017c\u0105da zasobu, Kubernetes zaplanuje go tylko na tym w\u0119\u017ale, kt\u00f3ry jest w stanie go zapewni\u0107. Ograniczenia Limits kontroluj\u0105, \u017ce zasoby \u017c\u0105dane przez kontener nigdy nie przekrocz\u0105 okre\u015blonej warto\u015bci.<\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" 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>Kontener mo\u017ce zwi\u0119ksza\u0107 moce obliczeniowe tylko do okre\u015blonego limitu, po czym b\u0119dzie ograniczony. Przyjrzyjmy si\u0119, jak to dzia\u0142a. Istniej\u0105 dwa typy zasob\u00f3w - procesor i pami\u0119\u0107. Planista Kubernetes wykorzystuje dane o tych zasobach, aby ustali\u0107, gdzie uruchamia\u0107 Twoje pady. Typowa specyfikacja zasob\u00f3w dla poda wygl\u0105da tak.<\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" src=\"\/wp-content\/uploads\/2020\/05\/84f1212f7098d25273217d4218d661f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKa\u017cdy kontener w podzie mo\u017ce ustawia\u0107 w\u0142asne limity i zapotrzebowania, wszystko odbywa si\u0119 w spos\u00f3b addytywny. Zasoby procesora okre\u015blane s\u0105 w mili-core'ach. Je\u015bli tw\u00f3j kontener potrzebuje do dzia\u0142ania dw\u00f3ch pe\u0142nych rdzeni, ustalasz warto\u015b\u0107 2000m. Je\u015bli natomiast kontener wymaga tylko 1\/4 rdzenia, warto\u015b\u0107 wyniesie 250m. Pami\u0119taj, \u017ce je\u015bli przydzielisz warto\u015b\u0107 zasob\u00f3w procesora wi\u0119ksz\u0105 ni\u017c liczba rdzeni najwi\u0119kszego w\u0119z\u0142a, uruchomienie twojego poda w og\u00f3le nie zostanie zaplanowane. Podobna sytuacja zajdzie, je\u015bli b\u0119dziesz mia\u0142 pod, kt\u00f3ry potrzebuje czterech rdzeni, a klaster Kubernetes sk\u0142ada si\u0119 tylko z dw\u00f3ch podstawowych maszyn wirtualnych.<\/p>\n<p>O ile twoja aplikacja nie jest specjalnie zaprojektowana do wykorzystania zalet wielu rdzeni (na my\u015bli mam takie programy jak zaawansowane obliczenia naukowe oraz operacje na bazach danych), to najlepsz\u0105 praktyk\u0105 jest ustawienie zapotrzebowania CPU na 1 lub mniej, a nast\u0119pnie uruchomienie wi\u0119kszej liczby replik dla skalowalno\u015bci. Takie rozwi\u0105zanie nada systemowi wi\u0119ksz\u0105 elastyczno\u015b\u0107 i niezawodno\u015b\u0107.<\/p>\n<p>Kiedy mowa o limitach procesora, sytuacja staje si\u0119 ciekawsza, poniewa\u017c jest on uwa\u017cany za zas\u00f3b kompresowalny. Je\u015bli twoja aplikacja zacznie zbli\u017ca\u0107 si\u0119 do limitu mocy procesora, Kubernetes zacznie spowalnia\u0107 tw\u00f3j kontener, wykorzystuj\u0105c CPU Throttling \u2014 obni\u017cenie cz\u0119stotliwo\u015bci procesora. Oznacza to, \u017ce procesor b\u0119dzie sztucznie ograniczany, co mo\u017ce prowadzi\u0107 do gorszej wydajno\u015bci aplikacji, jednak proces nie zostanie przerwany ani zako\u0144czony. <\/p>\n<p>Zasoby pami\u0119ci okre\u015blane s\u0105 w bajtach. Zazwyczaj warto\u015b\u0107 w ustawieniach mierzona jest w mebibajtach Mib, ale mo\u017cesz ustawi\u0107 dowoln\u0105 warto\u015b\u0107, od bajt\u00f3w do petabajt\u00f3w. Sytuacja z pami\u0119ci\u0105 jest podobna do tej z CPU \u2014 je\u015bli umie\u015bcisz zapotrzebowanie na ilo\u015b\u0107 pami\u0119ci przekraczaj\u0105c\u0105 dost\u0119pno\u015b\u0107 pami\u0119ci na twoich w\u0119z\u0142ach, wykonanie tego poda nie b\u0119dzie zaplanowane. Jednak w odr\u00f3\u017cnieniu od zasob\u00f3w procesora, pami\u0119\u0107 nie jest kompresowalna, poniewa\u017c nie ma sposobu na ograniczenie jej u\u017cycia. Dlatego wykonanie kontenera zostanie zatrzymane, gdy tylko przekroczy przydzielon\u0105 mu pami\u0119\u0107.<\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" src=\"\/wp-content\/uploads\/2020\/05\/a2b372ad9de7e065b435dae87ee62708.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWa\u017cne jest, aby pami\u0119ta\u0107, \u017ce nie mo\u017cesz ustawi\u0107 zapyta\u0144, kt\u00f3re przekraczaj\u0105 rozmiar zasob\u00f3w, jakie mog\u0105 zapewni\u0107 twoje w\u0119z\u0142y. Cechy wsp\u00f3lnych zasob\u00f3w dla maszyn wirtualnych GKE mo\u017cna znale\u017a\u0107 w linkach umieszczonych poni\u017cej tego wideo.<\/p>\n<p>W idealnym \u015bwiecie domy\u015blne ustawienia kontenera powinny by\u0107 wystarczaj\u0105ce, aby procesy przebiega\u0142y g\u0142adko. Jednak rzeczywisto\u015b\u0107 jest inna \u2013 ludzie mog\u0105 \u0142atwo zapomnie\u0107 o konfiguracji wykorzystania zasob\u00f3w, a hakerzy mog\u0105 ustawi\u0107 zapytania i ograniczenia przekraczaj\u0105ce rzeczywiste mo\u017cliwo\u015bci infrastruktury. Aby zapobiec takim scenariuszom, mo\u017cna skonfigurowa\u0107 kwoty zasob\u00f3w ResourceQuota oraz zakresy limit\u00f3w LimitRange.<\/p>\n<p>Po utworzeniu przestrzeni nazw mo\u017cna je zablokowa\u0107 za pomoc\u0105 kwot. Na przyk\u0142ad, je\u015bli masz przestrzenie nazw prod i dev, stosuje si\u0119 wz\u00f3r, w kt\u00f3rym kwoty dla produkcji s\u0105 ca\u0142kowicie nieobecne, a kwoty dla rozwoju s\u0105 bardzo rygorystyczne. Pozwala to na to, aby w przypadku nag\u0142ego wzrostu ruchu, prod m\u00f3g\u0142 zaj\u0105\u0107 ca\u0142y dost\u0119pny zas\u00f3b, ca\u0142kowicie blokuj\u0105c dev.<\/p>\n<p>Kwota zasob\u00f3w mo\u017ce wygl\u0105da\u0107 w ten spos\u00f3b. W tym przyk\u0142adzie mamy 4 sekcje \u2013 to 4 dolne linie kodu.<\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" src=\"\/wp-content\/uploads\/2020\/05\/569f4ddde6ad46c707e91cc05947fc6b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrzyjrzyjmy si\u0119 ka\u017cdemu z nich. Requests.cpu to maksymalna liczba skumulowanych zapyta\u0144 mocy procesora, kt\u00f3re mog\u0105 pochodzi\u0107 ze wszystkich kontener\u00f3w w przestrzeni nazw. W tym przyk\u0142adzie mo\u017cesz mie\u0107 50 kontener\u00f3w z zapytaniami po 10m, pi\u0119\u0107 kontener\u00f3w z zapytaniami po 100m lub po prostu jeden kontener z zapytaniem 500m. Dop\u00f3ki ca\u0142kowita liczba requests.cpu tej przestrzeni nazw b\u0119dzie mniejsza ni\u017c 500m, wszystko b\u0119dzie w porz\u0105dku.<\/p>\n<p>Zapytana pami\u0119\u0107 requests.memory to maksymalna warto\u015b\u0107 skumulowanych zapyta\u0144 pami\u0119ci, kt\u00f3re mog\u0105 mie\u0107 wszystkie kontenery w przestrzeni nazw. Podobnie jak wcze\u015bniej, mo\u017cesz mie\u0107 50 kontener\u00f3w po 2 MiB, pi\u0119\u0107 kontener\u00f3w po 20 MiB lub jeden kontener z 100 MiB, dop\u00f3ki ca\u0142kowita liczba zapytanej pami\u0119ci w przestrzeni nazw b\u0119dzie mniejsza ni\u017c 100 mebibajt\u00f3w.<\/p>\n<p>Limits.cpu to maksymalna skumulowana warto\u015b\u0107 mocy procesora, kt\u00f3r\u0105 mog\u0105 wykorzysta\u0107 wszystkie kontenery w przestrzeni nazw. Mo\u017cna to postrzega\u0107 jako limit zapyta\u0144 mocy procesora.<\/p>\n<p>Ostatecznie, limits.memory to maksymalna ilo\u015b\u0107 pami\u0119ci og\u00f3lnej, kt\u00f3r\u0105 mog\u0105 wykorzysta\u0107 wszystkie kontenery w przestrzeni nazw. To ograniczenie sumarycznych \u017c\u0105da\u0144 pami\u0119ci.<br \/>\nDomy\u015blnie kontenery w klastrze Kubernetes dzia\u0142aj\u0105 z nieograniczonymi zasobami obliczeniowymi. Dzi\u0119ki kwotom zasob\u00f3w, administratorzy klastra mog\u0105 ograniczy\u0107 zu\u017cycie zasob\u00f3w oraz ich tworzenie na podstawie przestrzeni nazw. W przestrzeni nazw modu\u0142 pod lub kontener mo\u017ce zu\u017cywa\u0107 tyle mocy CPU i pami\u0119ci, ile zosta\u0142o okre\u015blone przez kwot\u0119 zasob\u00f3w przestrzeni nazw. Istnieje jednak obawa, \u017ce jeden pod lub kontener mo\u017ce zmonopolizowa\u0107 wszystkie dost\u0119pne zasoby. Aby zapobiec takiej sytuacji, stosuje si\u0119 zakres limit\u00f3w Limit Range - polityk\u0119 ograniczaj\u0105c\u0105 przydzia\u0142 zasob\u00f3w (dla pod\u00f3w lub kontener\u00f3w) w przestrzeni nazw.<\/p>\n<p>Zakres limit\u00f3w zapewnia ograniczenia, kt\u00f3re mog\u0105:<\/p>\n<ul>\n<li>zapewnia\u0107 minimalne i maksymalne wykorzystanie zasob\u00f3w obliczeniowych dla ka\u017cdego modu\u0142u lub kontenera w przestrzeni nazw;<\/li>\n<li>wymusza\u0107 minimalne i maksymalne \u017c\u0105danie pami\u0119ci Storage Request dla ka\u017cdego PersistentVolumeClaim w przestrzeni nazw;<\/li>\n<li>wymusza\u0107 ustalanie stosunku pomi\u0119dzy \u017c\u0105daniem Request a ograniczeniem Limit dla zasobu w przestrzeni nazw;<\/li>\n<li>ustala\u0107 Requests\/Limits domy\u015blnie dla zasob\u00f3w obliczeniowych w przestrzeni nazw i automatycznie wprowadza\u0107 je do kontener\u00f3w podczas uruchamiania.<\/li>\n<\/ul>\n<p>\nW ten spos\u00f3b mo\u017cesz stworzy\u0107 zakres limit\u00f3w w swojej przestrzeni nazw. W przeciwie\u0144stwie do kwoty, kt\u00f3ra dotyczy ca\u0142ej przestrzeni nazw, Limit Range dotyczy poszczeg\u00f3lnych kontener\u00f3w. Mo\u017ce to zapobiec tworzeniu przez u\u017cytkownik\u00f3w zbyt ma\u0142ych lub przeciwnie, gigantycznych kontener\u00f3w w przestrzeni nazw. Zakres limit\u00f3w Limit Range mo\u017ce wygl\u0105da\u0107 tak. <\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" src=\"\/wp-content\/uploads\/2020\/05\/3fb358788910ca21e267a887032cdf1a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPodobnie jak w poprzednim przypadku, mo\u017cna tu wyr\u00f3\u017cni\u0107 4 sekcje. Przyjrzyjmy si\u0119 ka\u017cdemu z nich.<br \/>\nW sekcji default ustalane s\u0105 domy\u015blne ograniczenia dla kontenera w podzie. Je\u015bli ustawisz te warto\u015bci w zakresie limit\u00f3w, to wszelkie kontenery, dla kt\u00f3rych te warto\u015bci nie zosta\u0142y wyra\u017anie okre\u015blone, b\u0119d\u0105 kierowane przez warto\u015bci domy\u015blne.<\/p>\n<p>W sekcji domy\u015blne \u017c\u0105danie defaultRequest ustawione s\u0105 domy\u015blne \u017c\u0105dania dla kontenera w podzie. Ponownie, je\u015bli ustawisz te warto\u015bci w zakresie maksymalnym, to wszelkie kontenery, dla kt\u00f3rych te parametry nie s\u0105 jawnie okre\u015blone, b\u0119d\u0105 korzysta\u0107 z tych warto\u015bci domy\u015blnych.<\/p>\n<p>W sekcji max okre\u015blone s\u0105 maksymalne limity, kt\u00f3re mog\u0105 by\u0107 ustawione dla kontenera w podzie. Warto\u015bci w sekcji default i limity dla kontenera nie mog\u0105 by\u0107 ustawione powy\u017cej tego limitu. Wa\u017cne jest, \u017ce je\u015bli ustawiona jest warto\u015b\u0107 max, a sekcja default jest nieobecna, to maksymalna warto\u015b\u0107 staje si\u0119 warto\u015bci\u0105 domy\u015bln\u0105.<\/p>\n<p>W sekcji min okre\u015blone s\u0105 minimalne \u017c\u0105dania, kt\u00f3re mog\u0105 by\u0107 ustawione dla kontenera w podzie. Przy tym warto\u015bci w sekcji default i \u017c\u0105dania dla kontenera nie mog\u0105 by\u0107 ustawione poni\u017cej tego limitu.<\/p>\n<p>Ponownie, wa\u017cne jest, \u017ce je\u015bli ta warto\u015b\u0107 jest ustawiona, a default \u2013 nie, to minimalna warto\u015b\u0107 staje si\u0119 \u017c\u0105daniem domy\u015blnym.<\/p>\n<p>Ostatecznie te \u017c\u0105dania zasob\u00f3w s\u0105 u\u017cywane przez scheduler Kubernetes do realizacji twoich obci\u0105\u017ce\u0144 roboczych. Aby prawid\u0142owo skonfigurowa\u0107 swoje kontenery, bardzo wa\u017cne jest zrozumienie, jak to dzia\u0142a. Za\u0142\u00f3\u017cmy, \u017ce chcesz uruchomi\u0107 kilka modu\u0142\u00f3w w swoim klastrze. Zak\u0142adaj\u0105c, \u017ce specyfikacje podu s\u0105 wa\u017cne, w harmonogramie Kubernetes u\u017cywana b\u0119dzie cykliczna r\u00f3wnowa\u017cenie dla wyboru w\u0119z\u0142a do realizacji obci\u0105\u017cenia roboczego.<\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" src=\"\/wp-content\/uploads\/2020\/05\/29abd097fc0158dfbb585c4617036ccf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes sprawdzi, czy w\u0119ze\u0142 Node 1 ma wystarczaj\u0105ce zasoby do realizacji \u017c\u0105da\u0144 kontener\u00f3w podu. Je\u015bli nie, przejdzie do nast\u0119pnego w\u0119z\u0142a. Je\u015bli \u017caden z w\u0119z\u0142\u00f3w w systemie nie jest w stanie zaspokoi\u0107 \u017c\u0105da\u0144, pody przechodz\u0105 w stan oczekiwania Pending state. Dzi\u0119ki funkcjom takim jak automatyczne skalowanie w\u0119z\u0142\u00f3w, Google Kubernetes Engine (GKE) mo\u017ce automatycznie wykry\u0107 stan oczekiwania i utworzy\u0107 kilka dodatkowych w\u0119z\u0142\u00f3w. <\/p>\n<p>Je\u015bli p\u00f3\u017aniej pojawi si\u0119 nadmiarowa pojemno\u015b\u0107 w\u0119z\u0142\u00f3w, funkcja automatycznego skalowania zmniejszy ich liczb\u0119, aby zaoszcz\u0119dzi\u0107 ci pieni\u0105dze. Dlatego Kubernetes planuje pody na podstawie \u017c\u0105da\u0144. Jednak limit mo\u017ce by\u0107 wy\u017cszy ni\u017c \u017c\u0105dania i w niekt\u00f3rych przypadkach w\u0119ze\u0142 mo\u017ce faktycznie wyczerpa\u0107 zasoby. Nazywamy ten stan stanem overcommitment.<\/p>\n<p><img decoding=\"async\" alt=\"Najlepsze praktyki Kubernetes. Konfiguracja \u017c\u0105da\u0144 i limit\u00f3w zasob\u00f3w\" src=\"\/wp-content\/uploads\/2020\/05\/995c906880f09734c4765519f1f2465d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak ju\u017c wspomnia\u0142em, je\u015bli m\u00f3wimy o procesorze, Kubernetes zacznie ogranicza\u0107 zasoby dla pod\u00f3w. Ka\u017cdy pod otrzyma tyle, ile poprosi\u0142, ale je\u015bli nie osi\u0105gnie limitu, zacznie by\u0107 stosowane throttling. <\/p>\n<p>Je\u015bli chodzi o zasoby pami\u0119ci, Kubernetes musi podejmowa\u0107 decyzje, kt\u00f3re pody usun\u0105\u0107, a kt\u00f3re zatrzyma\u0107, dop\u00f3ki nie zwolnisz zasob\u00f3w systemowych, w przeciwnym razie ca\u0142a system si\u0119 zawali.<\/p>\n<p>Wyobra\u017amy sobie scenariusz, w kt\u00f3rym masz maszyn\u0119, kt\u00f3ra wyczerpa\u0142a limit pami\u0119ci \u2013 jak w takim przypadku zareaguje Kubernetes? <\/p>\n<p>Kubernetes b\u0119dzie szuka\u0142 pod\u00f3w, kt\u00f3re u\u017cywaj\u0105 wi\u0119cej zasob\u00f3w, ni\u017c prosi\u0142y. Je\u017celi twoje kontenery w og\u00f3le nie maj\u0105 ustawionych Requests, to oznacza, \u017ce domy\u015blnie wykorzystuj\u0105 wi\u0119cej, ni\u017c prosi\u0142y, po prostu dlatego, \u017ce w og\u00f3le nic nie prosi\u0142y! Takie kontenery staj\u0105 si\u0119 g\u0142\u00f3wnymi kandydatami do wy\u0142\u0105czenia. Kolejnymi kandydatami s\u0105 kontenery, kt\u00f3re zaspokoi\u0142y wszystkie swoje pro\u015bby, ale nadal s\u0105 poni\u017cej maksymalnego limitu. <\/p>\n<p>Je\u015bli Kubernetes znajdzie kilka pod\u00f3w, kt\u00f3re przekroczy\u0142y parametry swoich pro\u015bb, to posortuje je wed\u0142ug priorytetu, a nast\u0119pnie usunie te o najni\u017cszym priorytecie. Je\u015bli wszystkie modu\u0142y maj\u0105 ten sam priorytet, Kubernetes zako\u0144czy prac\u0119 tych pod\u00f3w, kt\u00f3re przekroczy\u0142y swoje pro\u015bby bardziej ni\u017c inne pody. <\/p>\n<p>W bardzo rzadkich przypadkach Kubernetes mo\u017ce przerwa\u0107 dzia\u0142anie pod\u00f3w, kt\u00f3re nadal mieszcz\u0105 si\u0119 w ramach swoich pro\u015bb. Mo\u017ce si\u0119 to zdarzy\u0107, gdy krytyczne komponenty systemu, takie jak agent Kubelet lub Docker, zaczynaj\u0105 wykorzystywa\u0107 wi\u0119cej zasob\u00f3w, ni\u017c zosta\u0142o dla nich zarezerwowanych. <br \/>\nNa wczesnych etapach dzia\u0142alno\u015bci ma\u0142ych firm klaster Kubernetes mo\u017ce dzia\u0142a\u0107 doskonale bez ustawiania pro\u015bb o zasoby i ogranicze\u0144, ale w miar\u0119 wzrostu zespo\u0142\u00f3w i projekt\u00f3w ryzykujesz napotkanie problem\u00f3w w tej dziedzinie. Dodanie pro\u015bb i ogranicze\u0144 do twoich modu\u0142\u00f3w i przestrzeni nazw wymaga niewielkich dodatkowych wysi\u0142k\u00f3w i mo\u017ce zaoszcz\u0119dzi\u0107 wiele k\u0142opot\u00f3w.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/503488\/\"> Najlepsze praktyki Kubernetes. Prawid\u0142owe wy\u0142\u0105czanie 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=\"Odtwarzaj wideo\" 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>Troch\u0119 reklamy \ud83d\ude42<\/h3>\n<p>\nDzi\u0119kujemy, \u017ce jeste\u015b z nami. Podobaj\u0105 Ci si\u0119 nasze artyku\u0142y? Chcesz zobaczy\u0107 wi\u0119cej interesuj\u0105cych materia\u0142\u00f3w? Wspieraj nas sk\u0142adaj\u0105c zam\u00f3wienie lub polecaj\u0105c nas znajomym, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">chmurowe VPS dla programist\u00f3w od 4,99 $<\/a><\/noindex>, <b>unikatowy odpowiednik serwer\u00f3w entry-level, kt\u00f3ry zosta\u0142 stworzony przez nas dla Ciebie:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Ca\u0142a prawda o VPS (KVM) E5-2697 v3 (6 rdzeni) 10GB DDR4 480GB SSD 1Gbps od 19 $ lub jak prawid\u0142owo podzieli\u0107 serwer?<\/a><\/noindex> (dost\u0119pne opcje z RAID1 i RAID10, do 24 rdzeni i do 40GB DDR4).<\/p>\n<p><b>Dell R730xd dwa razy ta\u0144szy w centrum danych Equinix Tier IV w Amsterdamie?<\/b> Tylko u nas <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 100TB od 199 dolar\u00f3w<\/a><\/noindex> w Holandii! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 od 99 dolar\u00f3w!<\/b><\/b> Czytaj o tym <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Jak zbudowa\u0107 infrastruktur\u0119 klasy korporacyjnej z zastosowaniem serwer\u00f3w Dell R730xd E5-2650 v4 kosztuj\u0105cych 9000 euro za grosze?<\/a><\/noindex><br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.1 - 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\/pl\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Najlepsze praktyki Kubernetes. Ustawianie pro\u015bb i limit\u00f3w zasob\u00f3w | ProHoster","description":"Najlepsze praktyki Kubernetes.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/luchshie-praktiki-kubernetes-nastrojka-zaprosov-i-limitov-resursov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/82920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=82920"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/82920\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/82921"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=82920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=82920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=82920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}