{"id":37636,"date":"2019-10-31T22:18:44","date_gmt":"2019-10-31T19:18:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sozdayom-kubernetes-platformu-v-pinterest\/"},"modified":"2019-10-31T22:18:44","modified_gmt":"2019-10-31T19:18:44","slug":"sozdayom-kubernetes-platformu-v-pinterest","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Tworzymy platform\u0119 kubernetes w Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>W ci\u0105gu lat dzia\u0142alno\u015bci Pinterest 300 milion\u00f3w u\u017cytkownik\u00f3w serwisu stworzy\u0142o ponad 200 miliard\u00f3w pinezek na ponad 4 miliardach tablic. Aby obs\u0142u\u017cy\u0107 armi\u0119 u\u017cytkownik\u00f3w i rozbudowan\u0105 baz\u0119 tre\u015bci, portal opracowa\u0142 tysi\u0105ce us\u0142ug, od mikrous\u0142ug, kt\u00f3re mog\u0105 obs\u0142ugiwa\u0107 kilka procesor\u00f3w, po ogromne monolity, kt\u00f3re dzia\u0142aj\u0105 na ca\u0142ym parku maszyn wirtualnych. I nadszed\u0142 moment, w kt\u00f3rym firma zwr\u00f3ci\u0142a si\u0119 ku k8s. Co wi\u0119c \u201ekubik\u201d tak bardzo zainteresowa\u0142 \u201ePinterest\u201d? O tym dowiesz si\u0119 z naszego t\u0142umaczenia \u015bwie\u017cego artyku\u0142u z <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blogu in\u017cynieryjnego Pinterest<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Tworzymy platform\u0119 kubernetes w Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak wi\u0119c setki milion\u00f3w u\u017cytkownik\u00f3w i setki miliard\u00f3w pinezek. Aby obs\u0142u\u017cy\u0107 armi\u0119 u\u017cytkownik\u00f3w i rozbudowan\u0105 baz\u0119 tre\u015bci, opracowali\u015bmy tysi\u0105ce us\u0142ug, od mikrous\u0142ug, kt\u00f3re mog\u0105 obs\u0142ugiwa\u0107 kilka procesor\u00f3w, po ogromne monolity, kt\u00f3re dzia\u0142aj\u0105 na ca\u0142ym parku maszyn wirtualnych. Dodatkowo mamy r\u00f3\u017cnorodne frameworki, kt\u00f3re r\u00f3wnie\u017c mog\u0105 wymaga\u0107 zasob\u00f3w CPU, pami\u0119ci lub dost\u0119pu do operacji we\/wy.<\/p>\n<p>W trakcie wsparcia tego zoo narz\u0119dzi zesp\u00f3\u0142 deweloper\u00f3w napotyka szereg problem\u00f3w:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>In\u017cynierowie nie maj\u0105 ujednoliconego sposobu uruchamiania \u015brodowiska roboczego. Us\u0142ugi stateless, us\u0142ugi stateful oraz projekty w fazie aktywnego rozwoju opieraj\u0105 si\u0119 na zupe\u0142nie r\u00f3\u017cnych stosach technologicznych. Doprowadzi\u0142o to do utworzenia ca\u0142ego kursu szkoleniowego dla in\u017cynier\u00f3w, a tak\u017ce znacznie utrudnia prac\u0119 naszemu zespo\u0142owi infrastrukturalnemu.<\/li>\n<li>Deweloperzy, posiadaj\u0105cy w\u0142asny park maszyn wirtualnych, wywieraj\u0105 ogromn\u0105 presj\u0119 na wewn\u0119trznych administrator\u00f3w. W rezultacie proste operacje, takie jak aktualizacja systemu operacyjnego lub AMI, rozci\u0105gaj\u0105 si\u0119 na tygodnie i miesi\u0105ce. To prowadzi do zwi\u0119kszenia obci\u0105\u017ce\u0144 w, wydawa\u0142oby si\u0119, ca\u0142kowicie rutynowych sytuacjach.<\/li>\n<li>Trudno\u015bci w tworzeniu globalnych narz\u0119dzi do zarz\u0105dzania infrastruktur\u0105 na istniej\u0105cych ju\u017c rozwi\u0105zaniach. Sytuacja komplikuje si\u0119 r\u00f3wnie\u017c tym, \u017ce znalezienie w\u0142a\u015bcicieli maszyn wirtualnych jest trudne. Innymi s\u0142owy, nie wiemy, czy bezpiecznie mo\u017cna wydoby\u0107 te zasoby do pracy w innych cz\u0119\u015bciach naszej infrastruktury.<\/li>\n<\/ul>\n<p>\nSystemy orkiestracji kontener\u00f3w to spos\u00f3b na ujednolicenie zarz\u0105dzania obci\u0105\u017ceniem. Otwieraj\u0105 przed Tob\u0105 drog\u0119 do zwi\u0119kszenia szybko\u015bci rozwoju i upraszczaj\u0105 zarz\u0105dzanie infrastruktur\u0105, poniewa\u017c wszystkie zasoby zaanga\u017cowane w projekt s\u0105 zarz\u0105dzane przez jeden scentralizowany system.<\/p>\n<p><img decoding=\"async\" alt=\"Tworzymy platform\u0119 kubernetes w Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Rysunek 1: Priorytety infrastruktury (niezawodno\u015b\u0107, wydajno\u015b\u0107 programist\u00f3w i efektywno\u015b\u0107).<\/i><\/p>\n<p>Zesp\u00f3\u0142 Cloud Management Platform w Pinterest zapozna\u0142 si\u0119 z K8s w 2017 roku. W pierwszej po\u0142owie 2017 roku udokumentowali\u015bmy du\u017c\u0105 cz\u0119\u015b\u0107 naszych zdolno\u015bci produkcyjnych, w tym API i wszystkie nasze <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/\"   title=\"serwery internetowe\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">serwery internetowe<\/a>. Nast\u0119pnie przeprowadzili\u015bmy dok\u0142adn\u0105 ocen\u0119 r\u00f3\u017cnych system\u00f3w orkiestracji rozwi\u0105za\u0144 kontenerowych, budowy klastr\u00f3w i ich obs\u0142ugi. Pod koniec 2017 roku postanowili\u015bmy skorzysta\u0107 z Kubernetes. By\u0142 wystarczaj\u0105co elastyczny i mia\u0142 szerokie wsparcie w spo\u0142eczno\u015bci deweloper\u00f3w.<\/p>\n<p>Do obecnego momentu stworzyli\u015bmy w\u0142asne narz\u0119dzia do wst\u0119pnego uruchamiania klastra oparte na Kops i przenie\u015bli\u015bmy istniej\u0105ce komponenty infrastruktury na Kubernetes \u2014 takie jak sie\u0107, bezpiecze\u0144stwo, metryki, logowanie, zarz\u0105dzanie to\u017csamo\u015bci\u0105 i ruch. Zrealizowali\u015bmy r\u00f3wnie\u017c system modelowania obci\u0105\u017cenia dla naszego zasobu, kt\u00f3rego z\u0142o\u017cono\u015b\u0107 jest ukryta przed programistami. Teraz koncentrujemy si\u0119 na zapewnieniu stabilno\u015bci klastra, jego skalowaniu i pod\u0142\u0105czaniu nowych klient\u00f3w.<\/p>\n<h4>Kubernetes: droga Pinterest<\/h4>\n<p>\nRozpocz\u0119cie pracy z Kubernetes w skali Pinterest jako platformy, kt\u00f3ra zdob\u0119dzie uznanie naszych in\u017cynier\u00f3w, wi\u0105za\u0142o si\u0119 z wieloma trudno\u015bciami.<\/p>\n<p>Jako du\u017ca firma zainwestowali\u015bmy znaczne \u015brodki w narz\u0119dzia infrastrukturalne. Przyk\u0142adem mog\u0105 by\u0107 narz\u0119dzia bezpiecze\u0144stwa, kt\u00f3re obs\u0142uguj\u0105 certyfikaty i rozdzielaj\u0105 klucze, komponenty kontroli ruchu, systemy wykrywania us\u0142ug, komponenty widoczno\u015bci i przesy\u0142ania log\u00f3w oraz metryk. Wszystko to zosta\u0142o zebrane nie bez powodu: przeszli\u015bmy normaln\u0105 drog\u0119 pr\u00f3b i b\u0142\u0119d\u00f3w, dlatego chcieli\u015bmy zintegrowa\u0107 to wszystko w now\u0105 infrastruktur\u0119 na Kubernetes zamiast na nowo wymy\u015bla\u0107 stary rower na nowej platformie. Takie podej\u015bcie znacznie upro\u015bci\u0142o migracj\u0119, poniewa\u017c ca\u0142e wsparcie aplikacji ju\u017c istnieje, nie trzeba go tworzy\u0107 od podstaw.<\/p>\n<p>Z drugiej strony, modeli prognozowania obci\u0105\u017cenia w samym Kubernetes (na przyk\u0142ad wdro\u017ce\u0144, zada\u0144 i zestaw\u00f3w Daemon) jest niewystarczaj\u0105co dla naszego projektu. Problemy z u\u017cyteczno\u015bci\u0105 stanowi\u0105 ogromne przeszkody na drodze do przej\u015bcia na Kubernetes. Na przyk\u0142ad s\u0142yszeli\u015bmy, jak deweloperzy us\u0142ug narzekaj\u0105 na brak lub niepoprawne skonfigurowanie dost\u0119pu. R\u00f3wnie\u017c spotykali\u015bmy si\u0119 z niew\u0142a\u015bciwym wykorzystaniem szablon\u00f3w, co prowadzi\u0142o do tworzenia setek kopii z identycznymi specyfikacjami i zadaniami, co skutkowa\u0142o koszmarnymi problemami z debugowaniem.<\/p>\n<p>Bardzo trudno by\u0142o r\u00f3wnie\u017c utrzyma\u0107 r\u00f3\u017cne wersje w tym samym klastrze. Wyobra\u017a sobie trudno\u015bci w wsparciu klienta, gdy musisz dzia\u0142a\u0107 w wielu wersjach tej samej platformy, z wszystkimi ich problemami, b\u0142\u0119dami i aktualizacjami.<\/p>\n<h4>Zasoby u\u017cytkownik\u00f3w i kontrolery Pinterest<\/h4>\n<p>\nAby u\u0142atwi\u0107 naszym in\u017cynierom proces wdra\u017cania Kubernetes oraz upro\u015bci\u0107 infrastruktur\u0119 i przyspieszy\u0107 jej dzia\u0142anie, opracowali\u015bmy nasze w\u0142asne definicje zasob\u00f3w u\u017cytkownik\u00f3w (CRD).<\/p>\n<p>CRD zapewniaj\u0105 nast\u0119puj\u0105ce mo\u017cliwo\u015bci:<\/p>\n<ol>\n<li>Zintegrowanie r\u00f3\u017cnych natywnych zasob\u00f3w Kubernetes, aby dzia\u0142a\u0142y jako jednolite obci\u0105\u017cenie. Na przyk\u0142ad zas\u00f3b PinterestService obejmuje wdro\u017cenie, us\u0142ug\u0119 dost\u0119pu i map\u0119 konfiguracji. To pozwala deweloperom nie martwi\u0107 si\u0119 o konfiguracj\u0119 DNS.<\/li>\n<li>Wdro\u017cenie niezb\u0119dnego wsparcia aplikacji. U\u017cytkownik powinien skupi\u0107 si\u0119 tylko na specyfikacji kontenera zgodnie z w\u0142asn\u0105 logik\u0105 biznesow\u0105, podczas gdy kontroler CRD wdra\u017ca wszystkie niezb\u0119dne init-kontenery, zmienne \u015brodowiskowe i specyfikacje pod. Zapewnia to zasadniczo inny poziom komfortu dla deweloper\u00f3w.<\/li>\n<li>Kontrolery CRD zarz\u0105dzaj\u0105 r\u00f3wnie\u017c cyklem \u017cycia w\u0142asnych zasob\u00f3w i zwi\u0119kszaj\u0105 dost\u0119pno\u015b\u0107 debugowania. Obejmuje to zgodno\u015b\u0107 po\u017c\u0105danych i rzeczywistych specyfikacji, aktualizacj\u0119 stanu CRD oraz prowadzenie dziennik\u00f3w zdarze\u0144 i nie tylko. Bez CRD deweloperzy byliby zmuszeni do zarz\u0105dzania licznymi zestawami zasob\u00f3w, co tylko zwi\u0119ksza\u0142oby prawdopodobie\u0144stwo b\u0142\u0119d\u00f3w. <\/li>\n<\/ol>\n<p>\nOto przyk\u0142ad PinterestService i wewn\u0119trznego zasobu, kt\u00f3rym zarz\u0105dza nasz kontroler:<\/p>\n<p><img decoding=\"async\" alt=\"Tworzymy platform\u0119 kubernetes w Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nJak pokazano powy\u017cej, aby obs\u0142u\u017cy\u0107 u\u017cytkownika kontener, musimy zintegrowa\u0107 z nim kontener inicjalizacji oraz kilka dodatk\u00f3w, aby zapewni\u0107 bezpiecze\u0144stwo, widoczno\u015b\u0107 i obs\u0142ug\u0119 ruchu sieciowego. Dodatkowo stworzyli\u015bmy szablony map konfiguracji i wdro\u017cyli\u015bmy wsparcie dla szablon\u00f3w PVC w zadaniach wsadowych oraz \u015bledzenie wielu zmiennych \u015brodowiskowych w celu monitorowania identyfikacji, zu\u017cycia zasob\u00f3w i zbierania \u00ab\u015bmieci\u00bb.<\/p>\n<p>Trudno wyobrazi\u0107 sobie, \u017ce deweloperzy chcieliby napisa\u0107 te pliki konfiguracyjne r\u0119cznie bez wsparcia CRD, nie m\u00f3wi\u0105c ju\u017c o dalszym wsparciu i debugowaniu konfiguracji.<\/p>\n<h4>Workflow wdro\u017cenia aplikacji<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Tworzymy platform\u0119 kubernetes w Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa powy\u017cszym rysunku pokazano, jak wdro\u017cy\u0107 zas\u00f3b u\u017cytkownika Pinterest w klastrze Kubernetes:<\/p>\n<ol>\n<li>Deweloperzy wchodz\u0105 w interakcj\u0119 z naszym klastrem Kubernetes za po\u015brednictwem CLI i interfejsu u\u017cytkownika.<\/li>\n<li>Narz\u0119dzia CLI \/ UI pobieraj\u0105 pliki konfiguracyjne YAML pracy i inne w\u0142a\u015bciwo\u015bci buildu (ten sam identyfikator wersji) z Artifactory, a nast\u0119pnie przesy\u0142aj\u0105 je do Us\u0142ugi Zg\u0142aszania Zada\u0144. Ten krok zapewnia, \u017ce do klastra zostan\u0105 dostarczone tylko wersje produkcyjne. <\/li>\n<li>JSS jest bram\u0105 do r\u00f3\u017cnych platform, w tym Kubernetes. Odbywa si\u0119 tutaj uwierzytelnianie u\u017cytkownika, przydzielanie kwot i cz\u0119\u015bciowa weryfikacja konfiguracji naszego CRD.<\/li>\n<li>Po weryfikacji CRD po stronie JSS informacje s\u0105 przesy\u0142ane do API platformy k8s.<\/li>\n<li>Nasz kontroler CRD \u015bledzi zdarzenia na wszystkich zasobach u\u017cytkownika. Przekszta\u0142ca CR w natywne zasoby k8s, dodaje niezb\u0119dne modu\u0142y, ustawia odpowiednie zmienne \u015brodowiskowe i wykonuje inne zadania pomocnicze, co zapewnia aplikacjom u\u017cytkownika odpowiednie wsparcie infrastrukturalne.<\/li>\n<li>Nast\u0119pnie kontroler CRD przesy\u0142a zebrane dane do API Kubernetes, aby mog\u0142y by\u0107 przetwarzane przez scheduler i uruchomione.<\/li>\n<\/ol>\n<p>\n<b>Uwaga<\/b>: to jest wczesna wersja procesu wdro\u017cenia, kt\u00f3ra zosta\u0142a stworzona dla pierwszych u\u017cytkownik\u00f3w nowej platformy k8s. Obecnie pracujemy nad udoskonaleniem tego procesu, aby w pe\u0142ni zintegrowa\u0107 si\u0119 z naszym nowym CI\/CD. Oznacza to, \u017ce nie mo\u017cemy opowiedzie\u0107 o wszystkim zwi\u0105zanym z Kubernetes. Z niecierpliwo\u015bci\u0105 czekamy na mo\u017cliwo\u015b\u0107 podzielenia si\u0119 naszym do\u015bwiadczeniem i raportowania o post\u0119pach zespo\u0142u w tym kierunku w naszym nast\u0119pnym wpisie na blogu \u201eBudowanie platformy CI\/CD dla Pinterest\u201d.<\/p>\n<h4>Rodzaje zasob\u00f3w specjalnych<\/h4>\n<p>\nNa podstawie konkretnych potrzeb Pinterest opracowali\u015bmy nast\u0119puj\u0105ce CRD, kt\u00f3re odpowiadaj\u0105 r\u00f3\u017cnym procesom roboczym:<\/p>\n<ul>\n<li>PinterestService \u2014 to od dawna funkcjonuj\u0105ce us\u0142ugi stateless. Wiele naszych kluczowych system\u00f3w opartych jest na zestawie takich us\u0142ug.<\/li>\n<li>PinterestJobSet modeluje paczki zada\u0144 ca\u0142ego cyklu. W Pinterest wyst\u0119puje powszechny scenariusz, w kt\u00f3rym kilka zada\u0144 uruchamia te same kontenery r\u00f3wnolegle, niezale\u017cnie od innych podobnych proces\u00f3w.<\/li>\n<li>PinterestCronJob jest szeroko stosowany w po\u0142\u0105czeniu z ma\u0142ymi, regularnymi obci\u0105\u017ceniami. To pow\u0142oka dla natywnej obs\u0142ugi cron z mechanizmami wsparcia Pinterest, kt\u00f3re odpowiadaj\u0105 za bezpiecze\u0144stwo, ruch, logi i metryki.<\/li>\n<li>PinterestDaemon obejmuje daemony infrastruktury. Ta rodzina nadal ro\u015bnie, gdy\u017c dodajemy coraz wi\u0119cej wsparcia dla naszych klastr\u00f3w.<\/li>\n<li>PinterestTrainingJob obejmuje procesy Tensorflow i Pytorch, zapewniaj\u0105c ten sam poziom wsparcia podczas dzia\u0142ania, co wszystkie inne CRD. Poniewa\u017c w Pinterest aktywnie wykorzystuje si\u0119 Tensorflow i inne systemy uczenia maszynowego, mieli\u015bmy pow\u00f3d, aby zbudowa\u0107 osobn\u0105 CRD wok\u00f3\u0142 tych technologii.<\/li>\n<\/ul>\n<p>\nR\u00f3wnie\u017c pracujemy nad PinterestStatefulSet, kt\u00f3ry wkr\u00f3tce b\u0119dzie zaadaptowany dla magazyn\u00f3w danych i innych system\u00f3w stateful.<\/p>\n<h4>Wsparcie \u015brodowiska wykonawczego<\/h4>\n<p>\nGdy modu\u0142 aplikacji uruchamia si\u0119 w Kubernetes, automatycznie otrzymuje certyfikat do w\u0142asnej identyfikacji. Certyfikat ten s\u0142u\u017cy do dost\u0119pu do tajnego magazynu lub do komunikacji z innymi us\u0142ugami przez mTLS. W mi\u0119dzyczasie, konfigurator inicjalizacji kontener\u00f3w i Daemon za\u0142aduj\u0105 wszystkie niezb\u0119dne zale\u017cno\u015bci przed uruchomieniem aplikacji kontenerowej. Gdy wszystko b\u0119dzie gotowe, sidecar ruchu i Daemon zarejestruj\u0105 adres IP modu\u0142u w naszym Zookeeper, aby klienci mogli go odnale\u017a\u0107. Ca\u0142o\u015b\u0107 b\u0119dzie dzia\u0142a\u0142a, poniewa\u017c modu\u0142 sieciowy zosta\u0142 skonfigurowany jeszcze przed uruchomieniem aplikacji.<\/p>\n<p>Powy\u017cej przedstawiono typowe przyk\u0142ady wsparcia obci\u0105\u017ce\u0144 w czasie wykonywania. Dla innych typ\u00f3w obci\u0105\u017ce\u0144 mo\u017ce by\u0107 wymagane nieco inne wsparcie, ale wszystkie s\u0105 reprezentowane w postaci sidecar na poziomie pod, wirtualnych maszyn na poziomie w\u0119z\u0142a lub Daemon-\u00f3w. Dbamy o to, aby wszystko by\u0142o wdro\u017cone w ramach infrastruktury zarz\u0105dzaj\u0105cej i skoordynowane mi\u0119dzy aplikacjami, co ostatecznie znacznie redukuje obci\u0105\u017cenie w zakresie prac technicznych i wsparcia klient\u00f3w.<\/p>\n<h4>Testowanie i QA<\/h4>\n<p>\nZbudowali\u015bmy end-to-end pipeline testowy na istniej\u0105cej infrastrukturze testowej Kubernetes. Te testy obejmuj\u0105 wszystkie nasze klastry. Nasz pipeline przeszed\u0142 wiele przer\u00f3bek, zanim sta\u0142 si\u0119 cz\u0119\u015bci\u0105 klastra produktowego.<\/p>\n<p>Opr\u00f3cz system\u00f3w testowych mamy systemy monitorowania i powiadamiania, kt\u00f3re ca\u0142y czas \u015bledz\u0105 stan komponent\u00f3w systemu, zu\u017cycie zasob\u00f3w i inne wa\u017cne wska\u017aniki, powiadamiaj\u0105c nas tylko w razie potrzeby interwencji ludzkiej.<\/p>\n<h4>Alternatywy<\/h4>\n<p>\nRozwa\u017cali\u015bmy pewne alternatywy dla niestandardowych zasob\u00f3w, takie jak kontrolery mutacji dost\u0119pu i systemy szablon\u00f3w. Jednak wszystkie one wi\u0105za\u0142y si\u0119 z powa\u017cnymi trudno\u015bciami w dzia\u0142aniu, dlatego wybrali\u015bmy drog\u0119 CRD.<\/p>\n<p>Kontroler mutacji dost\u0119pu by\u0142 stosowany do wprowadzania sidecar\u00f3w, zmiennych \u015brodowiskowych i innego wsparcia podczas wykonywania. Niemniej jednak, napotyka\u0142 r\u00f3\u017cnorodne problemy, takie jak zwi\u0105zanie zasob\u00f3w i zarz\u0105dzanie ich cyklem \u017cycia, podczas gdy w CRD takich problem\u00f3w nie wyst\u0119puje.<\/p>\n<p><b>Uwaga:<\/b> Systemy szablon\u00f3w, takie jak diagramy Helm, s\u0105 szeroko stosowane do uruchamiania aplikacji o podobnych konfiguracjach. Jednak nasze aplikacje robocze s\u0105 zbyt r\u00f3\u017cnorodne, aby zarz\u0105dza\u0107 nimi za pomoc\u0105 szablon\u00f3w. Ponadto podczas ci\u0105g\u0142ego wdra\u017cania z u\u017cyciem szablon\u00f3w wyst\u0119puje zbyt wiele b\u0142\u0119d\u00f3w.<\/p>\n<h4>Nadchodz\u0105ca praca<\/h4>\n<p>\nObecnie mamy do czynienia z mieszanym obci\u0105\u017ceniem w naszych klastrach. Aby wspiera\u0107 podobne procesy r\u00f3\u017cnego typu i rozmiaru, pracujemy w nast\u0119puj\u0105cych obszarach:<\/p>\n<ul>\n<li>Zbi\u00f3r klastr\u00f3w rozdziela du\u017ce aplikacje pomi\u0119dzy r\u00f3\u017cne klastry w celu zapewnienia skalowalno\u015bci i stabilno\u015bci.<\/li>\n<li>Zapewnienie stabilno\u015bci, skalowalno\u015bci oraz widoczno\u015bci klastra w celu stworzenia po\u0142\u0105czenia mi\u0119dzy aplikacj\u0105 a jej SLA.<\/li>\n<li>Zarz\u0105dzanie zasobami i limitami, aby aplikacje nie kolidowa\u0142y ze sob\u0105, a skala klastra by\u0142a kontrolowana z naszej strony.<\/li>\n<li>Nowa platforma CI\/CD do wsparcia i wdra\u017cania aplikacji w Kubernetes.<\/li>\n<\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/465487\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0430\u0440\u043c\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043e\u0431\u0448\u0438\u0440\u043d\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u0431\u0430\u0437\u0443, \u043f\u043e\u0440\u0442\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e CPU, \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0440\u0443\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u0446\u0435\u043b\u043e\u043c \u043f\u0430\u0440\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u0418 \u0432\u043e\u0442 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043c\u043e\u043c\u0435\u043d\u0442, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37636","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=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\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\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\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\u0421\u043e\u0437\u0434\u0430\u0451\u043c kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Pinterest | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\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-31T19:18:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:44+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\udd47Tworzymy platform\u0119 kubernetes w Pinterest | ProHoster","description":"Na przestrzeni lat istnienia Pinterest 300 milion\u00f3w u\u017cytkownik\u00f3w us\u0142ugi stworzy\u0142o ponad 200 miliard\u00f3w pin\u00f3w na ponad 4 miliardach tablic.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","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\u0421\u043e\u0437\u0434\u0430\u0451\u043c kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432 Pinterest | ProHoster","og:description":"\u0417\u0430 \u0433\u043e\u0434\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Pinterest 300 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043f\u0438\u043d\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 4 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0434\u043e\u0441\u043e\u043a.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","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-31T19:18:44+00:00","article:modified_time":"2019-10-31T19:18:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37636","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 15:30:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:23:06","updated":"2026-02-09 15:30:19","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\/37636","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=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}