{"id":33773,"date":"2019-10-31T21:54:36","date_gmt":"2019-10-31T18:54:36","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rezervirovanie-v-kubernetes-ono-sushhestvuet\/"},"modified":"2019-10-31T21:54:36","modified_gmt":"2019-10-31T18:54:36","slug":"rezervirovanie-v-kubernetes-ono-sushhestvuet","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet","title":{"rendered":"Rezerwacja w Kubernetes: to istnieje","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nazywam si\u0119 Sergiej, jestem z firmy ITSumma i chc\u0119 opowiedzie\u0107, jak podchodzimy do rezerwacji w Kubernetes. Ostatnio wiele czasu po\u015bwi\u0119cam pracy doradczej nad wdra\u017caniem r\u00f3\u017cnych rozwi\u0105za\u0144 devops dla r\u00f3\u017cnych zespo\u0142\u00f3w, a w szczeg\u00f3lno\u015bci intensywnie pracuj\u0119 nad projektami z wykorzystaniem K8s. Na konferencji Uptime day 4, kt\u00f3ra by\u0142a po\u015bwi\u0119cona rezerwacji w z\u0142o\u017conych architekturach, wyg\u0142osi\u0142em referat na temat rezerwacji 'kubeletu', i oto jego swobodna interpretacja. Tylko wcze\u015bniej ostrzegam, \u017ce to nie jest bezpo\u015bredni przewodnik do dzia\u0142ania, a raczej og\u00f3lnym podsumowaniem rozwa\u017ca\u0144 na ten temat.<\/p>\n<p><img decoding=\"async\" alt=\"Rezerwacja w Kubernetes: to istnieje\" src=\"\/wp-content\/uploads\/2019\/05\/4797b240a8e9fd4bbbce4370b9b44108.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZasadniczo monitorowanie i rezerwacja to dwa podstawowe narz\u0119dzia zwi\u0119kszaj\u0105ce odporno\u015b\u0107 ka\u017cdego projektu. Ale przecie\u017c w Kubernetes wszystko si\u0119 samo bilansuje, powiecie, wszystko si\u0119 samo skaluj\u0105c, a je\u015bli co\u015b si\u0119 wydarzy \u2014 uruchomi si\u0119 samo\u2026 To znaczy, przy pierwszym powierzchownym badaniu tematu, odpowied\u017a internetu na pytanie, jak kto podchodzi do rezerwacji K8s, brzmia\u0142a: 'po co?'. Wielu my\u015bli, \u017ce Kubernetes to co\u015b magicznego, co eliminuje wszystkie problemy infrastrukturalne i sprawia, \u017ce projekt nigdy nie upadnie. Ale\u2026 \u015bwiat nie jest tym, czym si\u0119 wydaje.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJak podchodzili\u015bmy do procesu rezerwacji wcze\u015bniej? Mieli\u015bmy identyczne platformy do hostowania \u2013 by\u0142y to albo maszyny wirtualne, albo urz\u0105dzenia fizyczne, <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/\"   title=\"serwery\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1830\">serwery<\/a>, do kt\u00f3rych stosowali\u015bmy trzy podstawowe praktyki: <\/p>\n<ol>\n<li>synchronizacj\u0119 kodu i statyk\u0119<\/li>\n<li>synchronizacj\u0119 konfiguracji<\/li>\n<li>replikacj\u0119 bazy danych<\/li>\n<\/ol>\n<p>\nI voil\u00e0: w ka\u017cdej chwili prze\u0142\u0105czamy si\u0119 na zapasow\u0105 platform\u0119, wszyscy s\u0105 szcz\u0119\u015bliwi, wstajemy i si\u0119 rozchodzimy. <\/p>\n<p><img decoding=\"async\" alt=\"Rezerwacja w Kubernetes: to istnieje\" src=\"\/wp-content\/uploads\/2019\/05\/4c2164d4469efb7ebbfe9c02970d7ae9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nCo nam oferuj\u0105, aby zwi\u0119kszy\u0107 ci\u0105g\u0142\u0105 dost\u0119pno\u015b\u0107 naszej aplikacji Kubernetes? Pierwsze, o czym m\u00f3wi nieoficjalna dokumentacja, to postawi\u0107 wiele maszyn, stworzy\u0107 wielu master\u00f3w \u2014 ich liczba powinna spe\u0142nia\u0107 warunki osi\u0105gni\u0119cia kworum w klastrze, a na ka\u017cdym z master\u00f3w powinien by\u0107 uruchomiony etcd, API, MC, scheduler\u2026 I wydaje si\u0119, \u017ce wszystko jest w porz\u0105dku: przy awarii kilku w\u0119z\u0142\u00f3w roboczych lub master\u00f3w nasz klaster zostanie zrebalansowany, a aplikacja b\u0119dzie kontynuowa\u0107 dzia\u0142anie. Znowu wygl\u0105da to jak magia! Ale cz\u0119sto nasz klaster znajduje si\u0119 w jednym centrum danych, co mo\u017ce rodzi\u0107 pewne pytania. Co je\u015bli przyjedzie koparka i przekopie kabel, uderzy piorun, nast\u0105pi potop? Wszystko si\u0119 ko\u0144czy, nasz klaster znika. Jak podej\u015b\u0107 do rezerwacji, bior\u0105c pod uwag\u0119 ten aspekt problemu? <\/p>\n<p>Przede wszystkim, powiniene\u015b mie\u0107 jeszcze jeden klaster w gor\u0105cym rezerwie, czyli klaster, na kt\u00f3ry mo\u017cesz prze\u0142\u0105czy\u0107 si\u0119 w ka\u017cdej chwili. Przy tym, z punktu widzenia Kubernetesa, infrastruktury musz\u0105 by\u0107 ca\u0142kowicie identyczne. To znaczy, \u017ce je\u015bli istniej\u0105 jakie\u015b niestandardowe wtyczki do pracy z systemem plik\u00f3w, dostosowane rozwi\u0105zania dla ingress, musz\u0105 by\u0107 w pe\u0142ni identyczne na twoich dw\u00f3ch (lub trzech, lub dziesi\u0119ciu, tutaj ju\u017c w zale\u017cno\u015bci od dost\u0119pnych funduszy i si\u0142y admin\u00f3w) klastrach. Nale\u017cy wyra\u017anie okre\u015bli\u0107 dwa zestawy aplikacji (deployment\u00f3w, statefulset\u00f3w, daemonset\u00f3w, cronjob\u00f3w itd.): kt\u00f3re z nich mog\u0105 dzia\u0142a\u0107 na rezerwie na sta\u0142e, a kt\u00f3re lepiej nie uruchamia\u0107 a\u017c do bezpo\u015bredniego prze\u0142\u0105czenia. <\/p>\n<p>Czy nasz klaster rezerwowy powinien by\u0107 ca\u0142kowicie identyczny z naszym klastrem produkcyjnym? Nie. Je\u015bli wcze\u015bniej w ramach pracy z monolitycznymi projektami, z fizyczn\u0105 infrastruktur\u0105 utrzymywali\u015bmy prawie ca\u0142kowicie identyczne \u015brodowisko, to w przypadku Kubernetesa, uwa\u017cam, \u017ce nie powinno tak by\u0107. Przyjrzyjmy si\u0119, dlaczego.<\/p>\n<p>Na przyk\u0142ad, zaczniemy od podstawowych jednostek Kubernetes \u2013 deployments \u2013 kt\u00f3re powinny by\u0107 identyczne. Aplikacje powinny by\u0107 uruchomione, aby w ka\u017cdej chwili mog\u0142y przej\u0105\u0107 przetwarzanie ruchu i pozwoli\u0107 naszemu projektowi dalej funkcjonowa\u0107. M\u00f3wi\u0105c o plikach konfiguracyjnych, musimy sprawdzi\u0107, czy powinny by\u0107 identyczne, czy nie. To znaczy, \u017ce je\u015bli my, rozs\u0105dni ludzie, nie u\u017cywamy \u017cadnych zabronionych substancji i nie przechowujemy bazy w K8s, to w configmaps powinny by\u0107 ustawienia dost\u0119pu do produkcyjnej bazy (proces jej rezerwacji zbudowany jest oddzielnie). W zwi\u0105zku z tym, aby zapewni\u0107 dost\u0119p do zapasowej wersji bazy danych, musimy mie\u0107 oddzielny plik konfiguracyjny (configmap). Tak samo dzia\u0142amy z secretami: has\u0142ami do dost\u0119pu do bazy, kluczami API; w ka\u017cdej chwili mo\u017ce by\u0107 aktywny albo produkcyjny secret, albo zapasowy. W rezultacie mamy ju\u017c dwie jednostki Kubernetes, kt\u00f3rych zapasowe wersje nie powinny by\u0107 identyczne z produkcyjnymi. Nast\u0119pn\u0105 jednostk\u0105, na kt\u00f3rej warto si\u0119 skupi\u0107, jest cronjob. Cronjoby na zapasowej wersji w \u017cadnym wypadku nie powinny by\u0107 identyczne z zestawem cronjob\u00f3w klastra produkcyjnego! Je\u015bli uruchamiamy zapasowy klaster i podnosimy go ca\u0142kowicie z wszystkimi w\u0142\u0105czonymi cronjobami \u2013 na przyk\u0142ad, ludzie b\u0119d\u0105 otrzymywa\u0107 od Ciebie dwa maile jednocze\u015bnie zamiast jednego. Lub jaka\u015b synchronizacja danych z zewn\u0119trznymi \u017ar\u00f3d\u0142ami b\u0119dzie przebiega\u0107 dwa razy, co w konsekwencji sprawi, \u017ce zaczniemy narzeka\u0107, p\u0142aka\u0107, krzycze\u0107 i k\u0142\u00f3ci\u0107 si\u0119. <\/p>\n<p><img decoding=\"async\" alt=\"Rezerwacja w Kubernetes: to istnieje\" src=\"\/wp-content\/uploads\/2019\/05\/38be6370f08d75e5c48bce7b4304e861.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nA jak proponuj\u0105 zorganizowa\u0107 rezerwowy klaster ludzie z internetu? Drug\u0105 najpopularniejsz\u0105 odpowiedzi\u0105 po 'a po co?' jest wykorzystanie Kubernetes Federation. <\/p>\n<p>Co to jest? To, powiedzmy, du\u017cy meta-klaster. Je\u015bli wyobrazimy sobie architektur\u0119 Kubernetes \u2014 gdzie mamy mastera, kilka w\u0119z\u0142\u00f3w \u2014 to z punktu widzenia federacji mamy r\u00f3wnie\u017c mastera i kilka w\u0119z\u0142\u00f3w, tylko \u017ce ka\u017cdy w\u0119ze\u0142 to oddzielny klaster. Pracujemy z tymi samymi bytami, tymi samymi prymitywami, co w pojedynczym Kubernetesie, tylko obracamy nie naszymi fizycznymi maszynami, ale ca\u0142ymi klastrami. W ramach federacji mamy pe\u0142n\u0105 synchronizacj\u0119 zasob\u00f3w federacyjnych od rodzic\u00f3w do potomk\u00f3w. Na przyk\u0142ad, je\u015bli uruchomili\u015bmy jak\u0105\u015b implementacj\u0119 przez federacj\u0119 \u2014 zostanie ona wdro\u017cona w ka\u017cdym naszym podrz\u0119dnym klastrze. Je\u015bli we\u017amiemy dowolny configmap, sekret, i wdro\u017cymy go w federacji \u2014 rozprzestrzeni si\u0119 to we wszystkich naszych podrz\u0119dnych klastrach; przy tym federacja pozwala na dostosowanie naszych zasob\u00f3w na dzieciach. To znaczy, \u017ce wzi\u0119li\u015bmy jaki\u015b configmap, wdro\u017cyli\u015bmy go przez federacj\u0119, a nast\u0119pnie, je\u015bli potrzebujemy co\u015b poprawi\u0107 w konkretnych klastrach, idziemy wprowadzi\u0107 poprawki w oddzielnym klastrze, a ta zmiana ju\u017c nigdzie nie b\u0119dzie synchronizowana. <\/p>\n<p>Kubernetes Federation to stosunkowo nowy narz\u0119dzie, kt\u00f3re nie wspiera jeszcze wszystkich zasob\u00f3w oferowanych przez K8s. W momencie publikacji jednej z pierwszych wersji dokumentacji wspomniano jedynie o wsparciu dla config maps, deployment\u00f3w pod replicaset oraz ingress. Sekrety nie by\u0142y obs\u0142ugiwane, a praca z volume r\u00f3wnie\u017c by\u0142a wykluczona. To zbyt ograniczony zestaw. Szczeg\u00f3lnie je\u015bli lubimy eksperymentowa\u0107 \u2014 na przyk\u0142ad, przekazuj\u0105c w\u0142asne zasoby do Kubernetes za pomoc\u0105 custom resource definition, nie mo\u017cemy ich ju\u017c w\u0142\u0105czy\u0107 do federacji. Innymi s\u0142owy, to bardzo realne rozwi\u0105zanie, ale czasami wymusza na nas my\u015blenie o problemach. Z drugiej strony, federacja pozwala elastycznie zarz\u0105dza\u0107 naszym replicaset\u2019em. Na przyk\u0142ad, chcemy, aby uruchomionych by\u0142o 10 replik naszej aplikacji; domy\u015blnie federacja rozdzieli t\u0119 liczb\u0119 proporcjonalnie pomi\u0119dzy klastry. Mo\u017cna to r\u00f3wnie\u017c skonfigurowa\u0107! Mo\u017cliwe jest okre\u015blenie, \u017ce na g\u0142\u00f3wnym klastrze ma by\u0107 6 replik naszej aplikacji, a na zapasowym klastrze \u2014 dla oszcz\u0119dno\u015bci zasob\u00f3w lub w\u0142asnych rozrywek \u2014 tylko 4 repliki naszej aplikacji. To r\u00f3wnie\u017c do\u015b\u0107 wygodne. Jednak z federacj\u0105 musimy u\u017cywa\u0107 nowych rozwi\u0105za\u0144, co\u015b dodatkowo wdra\u017ca\u0107 w locie, zmusza\u0107 si\u0119 do wi\u0119kszej my\u015bli... <\/p>\n<p>Czy mo\u017cna podej\u015b\u0107 do procesu rezerwacji Kubernetesa w prostszy spos\u00f3b? Jakie narz\u0119dzia s\u0105 w og\u00f3le dost\u0119pne?<\/p>\n<p>Po pierwsze, zawsze mamy jak\u0105\u015b system ci\/cd, co oznacza, \u017ce nie musimy r\u0119cznie wchodzi\u0107 i pisa\u0107 na serwerach create\/apply. System generuje pliki yaml dla naszych kontener\u00f3w. <\/p>\n<p>Po drugie, mamy kilka klastr\u00f3w, mamy albo jedno, albo kilka (je\u015bli jeste\u015bmy m\u0105drzy) rejestr\u00f3w, kt\u00f3re r\u00f3wnie\u017c zarezerwowali\u015bmy. I jest wspania\u0142a utilita kubectl, kt\u00f3ra mo\u017ce wsp\u00f3\u0142pracowa\u0107 z wieloma klastrami jednocze\u015bnie. <\/p>\n<p><img decoding=\"async\" alt=\"Rezerwacja w Kubernetes: to istnieje\" src=\"\/wp-content\/uploads\/2019\/05\/e4276c4d5bf4dfd9e3abe7210e345343.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nZ mojego punktu widzenia najprostszym i najpewniejszym rozwi\u0105zaniem budowy zapasowego klastra jest prosty r\u00f3wnoleg\u0142y wdro\u017cenie. Mamy jaki\u015b pipeline w systemie ci\/cd; najpierw budujemy nasze kontenery, testujemy je i wdra\u017camy aplikacje za pomoc\u0105 kubectl na kilka niezale\u017cnych klastr\u00f3w. Mo\u017cemy r\u00f3wnocze\u015bnie budowa\u0107 wdro\u017cenia na kilka klastr\u00f3w. Odpowiednio, dostarczanie konfiguracji r\u00f3wnie\u017c rozwi\u0105zuje si\u0119 na tym etapie. Mo\u017cna wcze\u015bniej okre\u015bli\u0107 zbi\u00f3r konfiguracji dla naszego klastra produkcyjnego, zbi\u00f3r konfiguracji dla zapasowego klastra i na poziomie systemu ci\/cd wdra\u017ca\u0107 \u015brodowisko produkcyjne do klastra produkcyjnego, a zapasowe \u015brodowisko \u2014 do zapasowego klastra. W por\u00f3wnaniu do federacji nie musimy przechodzi\u0107 po okre\u015bleniu federacyjnego zasobu do ka\u017cdego podrz\u0119dnego klastra i cokolwiek redefiniowa\u0107. Zrobili\u015bmy to z wyprzedzeniem. Jacy jeste\u015bmy zdolni.<\/p>\n<p>Ale... jest... napisa\u0142em kiedy\u015b, \u017ce istnieje \u201ekorze\u0144 wszelkiego z\u0142a\u201d, ale jest ich tak naprawd\u0119 dwa. Po pierwsze, system plik\u00f3w. Istnieje jaki\u015b PV, lub u\u017cywamy zewn\u0119trznego magazynu. Je\u015bli przechowujemy pliki w klastrze, musimy post\u0119powa\u0107 zgodnie z dawnymi praktykami, kt\u00f3re zachowa\u0142y si\u0119 od czas\u00f3w tradycyjnych infrastruktur: na przyk\u0142ad, synchronizowa\u0107 za pomoc\u0105 lsync\u2019a. Lub w jakikolwiek inny spos\u00f3b, kt\u00f3ry osobi\u015bcie preferujesz. Rozprowadzamy wszystko na inne maszyny i \u017cyjemy.<\/p>\n<p>Po drugie, i to jest w rzeczywisto\u015bci jeszcze wa\u017cniejszy punkt \u2014 baza danych. Je\u015bli jeste\u015bmy m\u0105drymi lud\u017ami i nie trzymamy bazy danych w kube, to proces tworzenia kopii zapasowej danych wed\u0142ug tej samej starej schemy \u2014 replikacja master-slave, potem prze\u0142\u0105czenie, doko\u0144czymy replik\u0119 i b\u0119dziemy \u017cy\u0107 dobrze. Ale je\u015bli b\u0119dziemy trzyma\u0107 nasz\u0105 baz\u0119 danych wewn\u0105trz klastra, to zasadniczo jest wiele gotowych rozwi\u0105za\u0144 do zorganizowania tej samej repliki master-slave, wiele rozwi\u0105za\u0144 do uruchamiania bazy danych wewn\u0105trz kube. <br \/>\n Na temat tworzenia kopii zapasowych baz danych przeczytano miliard referat\u00f3w, napisano miliard artyku\u0142\u00f3w, nic nowego w zasadzie tu nie ma. Og\u00f3lnie rzecz bior\u0105c, pod\u0105\u017caj za swoimi marzeniami, \u017cyj tak, jak chcesz, wynajduj sobie r\u00f3wnie\u017c jakie\u015b skomplikowane rozwi\u0105zania, ale koniecznie przemy\u015bl, jak wszystko to b\u0119dziesz rezerwowa\u0107.<\/p>\n<p>A teraz o tym, jak w zasadzie b\u0119dzie wygl\u0105da\u0142 proces prze\u0142\u0105czania na zapasow\u0105 platform\u0119 w przypadku po\u017caru. Po pierwsze, jednocze\u015bnie wdra\u017camy aplikacje stateless. Nie wp\u0142ywaj\u0105 one na logik\u0119 biznesow\u0105 naszych aplikacji, naszego projektu, mo\u017cemy stale mie\u0107 dwie uruchomione instancje aplikacji, kt\u00f3re mog\u0105 zacz\u0105\u0107 przyjmowa\u0107 ruch. Bardzo wa\u017cne jest, aby w procesie prze\u0142\u0105czania na zapasow\u0105 platform\u0119 koniecznie sprawdzi\u0107 \u2014 czy nale\u017cy redefiniowa\u0107 konfiguracje? Na przyk\u0142ad mamy produkcyjny klaster Kubernetes, mamy zapasowy klaster Kubernetes, mamy zewn\u0119trzn\u0105 baz\u0119 danych master, mamy zapasow\u0105 baz\u0119 danych master. Mamy cztery mo\u017cliwo\u015bci, jak te aplikacje w produkcji mog\u0105 zacz\u0105\u0107 ze sob\u0105 wsp\u00f3\u0142dzia\u0142a\u0107. Mo\u017ce si\u0119 zdarzy\u0107 prze\u0142\u0105czenie bazy, co oznacza, \u017ce trzeba prze\u0142\u0105czy\u0107 ruch w klastrze produkcyjnym na now\u0105 baz\u0119, lub klaster mo\u017ce nawali\u0107 \u2014 i przechodzimy na zapas, ale nadal pracujemy z produkcyjn\u0105 baz\u0105, a trzeci\u0105 mo\u017cliwo\u015bci\u0105 jest to, \u017ce jedno i drugie zawiod\u0142o, i prze\u0142\u0105czamy obie aplikacje, redefiniuj\u0105c nasz\u0105 konfiguracj\u0119, aby nowe aplikacje mog\u0142y ju\u017c pracowa\u0107 z now\u0105 baz\u0105 danych. <\/p>\n<p>Jakie wnioski mo\u017cna z tego wyci\u0105gn\u0105\u0107? <\/p>\n<p><img decoding=\"async\" alt=\"Rezerwacja w Kubernetes: to istnieje\" src=\"\/wp-content\/uploads\/2019\/05\/e055f1b4aaa99c5e70d735f4c9fe61e2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPierwszy wniosek: dobrze jest mie\u0107 zapas. Ale to kosztuje. W idealnej sytuacji nie powinni\u015bmy mie\u0107 tylko jednego zapasu. Idealnie by\u0142oby mie\u0107 kilka zapas\u00f3w. Po pierwsze, zapas powinien by\u0107 przynajmniej w innym centrum danych, a po drugie, najlepiej u innego dostawcy. Cz\u0119sto mia\u0142em takie sytuacje \u2014 i w mojej praktyce to si\u0119 zdarza\u0142o. Projekt\u00f3w nie mog\u0119 niestety nazywa\u0107, ale dok\u0142adnie w momencie, gdy wybuch\u0142 po\u017car w centrum danych\u2026 M\u00f3wi\u0119: prze\u0142\u0105czamy si\u0119 na zapas! A serwery zapasowe by\u0142y w tej samej szafie...<\/p>\n<p>Albo wyobra\u017a sobie, \u017ce Amazon zosta\u0142 zablokowany w Rosji (co si\u0119 zdarzy\u0142o). I wszystko: co z tego, \u017ce w innym amazon mamy nasz zapas? On tak\u017ce jest niedost\u0119pny. Dlatego powtarzam: trzymaj zapas przynajmniej w innym centrum danych, a najlepiej \u2014 u innego dostawcy. <\/p>\n<p>Drugi wniosek: je\u015bli twoja aplikacja w Kubernetes \u0142\u0105czy si\u0119 z jakimi\u015b zewn\u0119trznymi \u017ar\u00f3d\u0142ami (mo\u017ce to by\u0107 zar\u00f3wno baza danych, jak i zewn\u0119trzne API), koniecznie zdefiniuj j\u0105 jako us\u0142ug\u0119 z zewn\u0119trznym endpointem, aby podczas prze\u0142\u0105czania nie redeployowa\u0107 15 twoich aplikacji, kt\u00f3re komunikuj\u0105 si\u0119 z t\u0105 sam\u0105 baz\u0105. Zdefiniuj baz\u0119 jako oddzieln\u0105 us\u0142ug\u0119 i \u0142\u0105cz si\u0119 z ni\u0105, jakby by\u0142a wewn\u0105trz twojego klastra: je\u015bli twoja baza si\u0119 zepsuje, zmieniasz adres IP w jednym miejscu i \u017cyjesz dalej szcz\u0119\u015bliwie. <\/p>\n<p>I na koniec: uwielbiam \"kube\", tak jak eksperymenty z nim. A tak\u017ce lubi\u0119 dzieli\u0107 si\u0119 wynikami tych eksperyment\u00f3w oraz swoim osobistym do\u015bwiadczeniem. Dlatego nagra\u0142em seri\u0119 webinar\u00f3w na temat K8s, zapraszam do <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=Qmac8MNlhmg&amp;list=PLVSuF-7tjVUgPSW-YAhrGjnShRsW9gA7_\">naszego kana\u0142u na youtube<\/a><\/noindex> po szczeg\u00f3\u0142y.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/452078\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u043f\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 devops-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u043b\u043e\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c K8s. \u041d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Uptime day 4, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25449,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33773","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=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 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\/rezervirovanie-v-kubernetes-ono-sushhestvuet\" \/>\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\u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: \u043e\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet\" \/>\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=\"2019-10-31T18:54:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:54:36+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\udd47Rezerwacja w Kubernetes: to istnieje | ProHoster","description":"Nazywam si\u0119 Sergey, jestem z firmy ITSumma i chc\u0119 wam opowiedzie\u0107, jak podchodzimy do rezerwacji w Kubernetes.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet","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\u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes: \u043e\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 | ProHoster","og:description":"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439, \u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 ITSumma, \u0438 \u044f \u0445\u043e\u0447\u0443 \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432 Kubernetes.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rezervirovanie-v-kubernetes-ono-sushhestvuet","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":"2019-10-31T18:54:36+00:00","article:modified_time":"2019-10-31T18:54:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33773","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":"2026-02-09 17:03:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:33:25","updated":"2026-02-09 17:03:20","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\/33773","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=33773"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33773\/revisions"}],"predecessor-version":[{"id":159074,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33773\/revisions\/159074"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/25449"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=33773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=33773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=33773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}