{"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\/hr\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Kreiramo kubernetes platformu u Pinterestu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Tijekom godina postojanja Pinteresta, 300 milijuna korisnika servisa stvorilo je vi\u0161e od 200 milijardi pinova na vi\u0161e od 4 milijarde plo\u010da. Kako bi opslu\u017eio ovu vojsku korisnika i opse\u017enu bazu sadr\u017eaja, portal je razvio tisu\u0107e servisa, po\u010dev\u0161i od mikroservisa koji mogu podnijeti nekoliko CPU-a do golemih monolita koji rade na \u010ditavom paru virtualnih strojeva. I do\u0161lo je vrijeme kada je pogled kompanije pao na k8s. \u0160to je to to\u010dno \u201ekockica\u201d privuklo pa\u017enju \u201ePinteresta\u201d? O tome \u0107ete saznati u na\u0161em prijevodu svje\u017ee objavljene \u010dlanka iz <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blogu Pinterest in\u017eenjerstva<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kreiramo kubernetes platformu u Pinterestu\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDakle, stotine milijuna korisnika i stotine milijardi pinova. Kako bismo opslu\u017eili ovu vojsku korisnika i opse\u017enu bazu sadr\u017eaja, razvili smo tisu\u0107e servisa, po\u010dev\u0161i od mikroservisa koji mogu podnijeti nekoliko CPU-a do golemih monolita koji rade na \u010ditavom paru virtualnih strojeva. Osim toga, imamo razne okvire koji tako\u0111er mogu zahtijevati CPU resurse, memoriju ili pristup operacijama ulaza-izlaza.<\/p>\n<p>Tijekom podr\u0161ke ovog zoolo\u0161kog vrta alata, razvojni tim suo\u010dava se s nizom problema:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>In\u017eenjeri nemaju jedinstveni na\u010din pokretanja radne okoline. Stateless servisi, Stateful servisi i projekti koji su u aktivnom razvoju oslanjaju se na potpuno razli\u010dite tehnolo\u0161ke stackove. To je dovelo do stvaranja cijelog te\u010daja obuke za in\u017eenjere, a tako\u0111er ozbiljno ote\u017eava rad na\u0161em infrastrukturnom timu.<\/li>\n<li>Razvojni programeri, koji imaju vlastiti park virtualnih strojeva, stvaraju ogroman pritisak na interne administratore. Kao rezultat, jednostavne operacije poput a\u017euriranja operativnog sustava ili AMI-ja produ\u017euju se na tjedne i mjeseci. To dovodi do pove\u0107anja optere\u0107enja u, \u010dini se, potpuno svakodnevnim situacijama.<\/li>\n<li>Te\u0161ko\u0107e u stvaranju globalnih alata za upravljanje infrastrukturom na postoje\u0107im rje\u0161enjima. Situaciju dodatno ote\u017eava to \u0161to je te\u0161ko prona\u0107i vlasnike virtualnih strojeva. Drugim rije\u010dima, ne znamo mo\u017eemo li sigurno povu\u0107i te resurse za rad na drugim dijelovima na\u0161e infrastrukture.<\/li>\n<\/ul>\n<p>\nSustavi orkestracije kontejnera su na\u010din za objedinjavanje upravljanja radnim optere\u0107enjem. Otvaraju vam put prema pove\u0107anju brzine razvoja i pojednostavljuju upravljanje infrastrukturom, jer svi resursi uklju\u010deni u projekt upravljaju jednom centraliziranom sustavom.<\/p>\n<p><img decoding=\"async\" alt=\"Kreiramo kubernetes platformu u Pinterestu\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Slika 1: Prioriteti infrastrukture (pouzdanje, produktivnost programera i u\u010dinkovitost).<\/i><\/p>\n<p>Tim Cloud Management Platforme u Pinterestu upoznao se s K8s 2017. godine. Do prve polovice 2017. dokumentirali smo ve\u0107inu na\u0161ih proizvodnih kapaciteta, uklju\u010duju\u0107i API i sve na\u0161e <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hr\/server\/\"   title=\"web poslu\u017eitelje\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">web poslu\u017eitelje<\/a>. Nakon toga proveli smo pa\u017eljivu procjenu razli\u010ditih sustava orkestracije kontejnerskih rje\u0161enja, izgradnje klastera i rada s njima. Do kraja 2017. odlu\u010dili smo se za kori\u0161tenje Kubernetesa. Bio je dovoljno fleksibilan i \u0161iroko podr\u017eavan u zajednici programera.<\/p>\n<p>Do sada smo stvorili vlastite alate za prvu inicijalizaciju klastera temeljenih na Kopsu i prebacili postoje\u0107e komponente infrastrukture na Kubernetes \u2014 kao \u0161to su mre\u017ea, sigurnost, metrike, vo\u0111enje dnevnika, upravljanje identitetom i promet. Tako\u0111er smo implementirali sustav modeliranja radnih optere\u0107enja za na\u0161 resurs, \u010dija je slo\u017eenost skrivena od programera. Sada smo usredoto\u010deni na osiguranje stabilnosti klastera, njegovom skaliranju i povezivanju novih klijenata.<\/p>\n<h4>Kubernetes: put Pinterest<\/h4>\n<p>\nPo\u010detak rada s Kubernetesom na razini Pinteresta kao platforme koja \u0107e biti omiljena me\u0111u na\u0161im in\u017eenjerima donio je mno\u0161tvo pote\u0161ko\u0107a.<\/p>\n<p>Kao velika tvrtka ulo\u017eili smo zna\u010dajna sredstva u infrastrukturne alate. Na primjer, postoje alati za sigurnost koji obra\u0111uju certifikate i distribuiraju klju\u010deve, komponente kontrole prometa, sustavi otkrivanja usluga, komponente vidljivosti i slanja dnevnika i metrika. Sve je to prikupljeno ne slu\u010dajno: pro\u0161li smo normalan put poku\u0161aja i pogre\u0161aka, i stoga smo \u017eeljeli integrirati cijeli taj sustav u novu infrastrukturu na Kubernetesu umjesto da izmi\u0161ljamo stari bicikl na novoj platformi. Takav pristup je uvelike pojednostavio migraciju, jer je cijela podr\u0161ka aplikacija ve\u0107 postojala, nije je trebalo stvoriti ispo\u010detka.<\/p>\n<p>S druge strane, modeli predikcije optere\u0107enja unutar samog Kubernetesa (kao \u0161to su rasporedi, zadaci i Daemon setovi) nisu dostatni za na\u0161 projekt. Ovi problemi s upotrebljivo\u0161\u0107u predstavljaju ogromne prepreke na putu prema prelasku na Kubernetes. Na primjer, \u010duli smo kako se programeri usluga \u017eale na nedostatak ili nepravilnu konfiguraciju ulaza. Tako\u0111er smo se susreli s pogre\u0161nim kori\u0161tenjem \u0161ablona, kada su nastajale stotine kopija s istom specifikacijom i zadatkom, \u0161to je izazvalo u\u017easne probleme s debagiranjem.<\/p>\n<p>Tako\u0111er je bilo vrlo te\u0161ko odr\u017eavati razli\u010dite verzije unutar istog klastera. Zamislite slo\u017eenost korisni\u010dke podr\u0161ke ako morate raditi s vi\u0161e verzija istog okru\u017eenja izvr\u0161avanja, sa svim njihovim problemima, gre\u0161kama i a\u017euriranjima.<\/p>\n<h4>Korisni\u010dki resursi i kontroleri Pinterest<\/h4>\n<p>\nKako bismo olak\u0161ali na\u0161im in\u017eenjerima proces implementacije Kubernetesa, kao i pojednostavili infrastrukturu i ubrzali njezin rad, razvili smo vlastite definicije korisni\u010dkih resursa (CRD).<\/p>\n<p>CRD pru\u017eaju sljede\u0107e funkcionalnosti:<\/p>\n<ol>\n<li>Kombinacija razli\u010ditih nativnih resursa Kubernetesa kako bi radili kao jedinstveno optere\u0107enje. Na primjer, resurs PinterestService uklju\u010duje raspored, ulaznu uslugu i konfiguracijsku mapu. To omogu\u0107uje programerima da se ne brinu o pode\u0161avanju DNS-a.<\/li>\n<li>Implementacija potrebne podr\u0161ke za aplikacije. Korisnik se mora fokusirati samo na specifikaciju kontejnera prema svojoj poslovnoj logici, dok kontroler CRD implementira sve potrebne init-kontejnere, varijable okru\u017eenja i specifikacije podova. To osigurava bitno druga\u010diju razinu udobnosti za programere.<\/li>\n<li>Kontroleri CRD tako\u0111er upravljaju \u017eivotnim ciklusom vlastitih resursa i pove\u0107avaju dostupnost debagiranja. To uklju\u010duje uskla\u0111ivanje \u017eeljenih i stvarnih specifikacija, a\u017euriranje statusa CRD-a i vo\u0111enje evidencije o doga\u0111ajima i ne samo. Bez CRD-a, programeri bi bili prisiljeni upravljati brojnim skupovima resursa, \u0161to bi samo pove\u0107alo vjerojatnost gre\u0161ke. <\/li>\n<\/ol>\n<p>\nEvo primjera PinterestService i unutarnjeg resursa koji upravlja na\u0161 kontroler:<\/p>\n<p><img decoding=\"async\" alt=\"Kreiramo kubernetes platformu u Pinterestu\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKao \u0161to je prikazano iznad, za podr\u0161ku korisni\u010dkom kontejneru potrebno je integrirati kontejner za inicijalizaciju i nekoliko dodataka kako bi se osigurala sigurnost, vidljivost i rad s mre\u017enim prometom. Tako\u0111er, kreirali smo predlo\u0161ke konfiguracijskih karata i implementirali podr\u0161ku za PVC predlo\u0161ke za grupne zadatke, kao i pra\u0107enje vi\u0161e varijabli okru\u017eenja radi identifikacije, potro\u0161nje resursa i prikupljanja 'otpada'.<\/p>\n<p>Te\u0161ko je zamisliti da bi programeri \u017eeljeli ru\u010dno pisati te konfiguracijske datoteke bez podr\u0161ke CRD-a, ne govore\u0107i o daljnjoj podr\u0161ci i ispravljanju konfiguracija.<\/p>\n<h4>Tijek isporuke aplikacija<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Kreiramo kubernetes platformu u Pinterestu\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa gornjoj slici prikazano je kako implementirati korisni\u010dki resurs Pinterest u Kubernetes klasteru:<\/p>\n<ol>\n<li>Programeri komuniciraju s na\u0161im Kubernetes klasterom putem CLI-a i korisni\u010dkog su\u010delja.<\/li>\n<li>CLI \/ UI alati izvla\u010de YAML datoteke konfiguracije radnog procesa i druge atribute izgradnje (ista identifikacija verzije) iz Artifactory-a, a zatim ih \u0161alju u Uslugnu platformu za zadatke. Ovaj korak osigurava da se u klaster isporu\u010duju samo stabilne verzije. <\/li>\n<li>JSS slu\u017ei kao pristupna to\u010dka za razli\u010dite platforme, uklju\u010duju\u0107i Kubernetes. Tamo se odvija autentifikacija korisnika, dodijeljivanje kvota i djelomi\u010dna provjera konfiguracije na\u0161eg CRD-a.<\/li>\n<li>Nakon provjere CRD-a sa strane JSS, informacije se \u0161alju na API platforme k8s.<\/li>\n<li>Na\u0161 CRD kontroler prati doga\u0111aje svih korisni\u010dkih resursa. On pretvara CR u nativne resurse k8s, dodaje potrebne module, postavlja odgovaraju\u0107e varijable okru\u017eenja i obavlja druge pomo\u0107ne poslove, \u010dime osigurava adekvatnu infrastrukturnu podr\u0161ku korisni\u010dkim aplikacijama u kontejnerima.<\/li>\n<li>Zatim CRD kontroler \u0161alje prikupljene podatke u API Kubernetes za obradu od strane planera i pokretanje.<\/li>\n<\/ol>\n<p>\n<b>Napomena<\/b>: Ovaj predizbor za deploy workflow stvoren je za prve korisnike nove k8s platforme. Trenutno radimo na doradi ovog procesa kako bismo se potpuno integrirali s na\u0161im novim CI\/CD. To zna\u010di da ne mo\u017eemo otkriti sve u vezi s Kubernetesom. Radujemo se dijeljenju na\u0161eg iskustva i izvje\u0161tavanju o napretku tima u tom smjeru u na\u0161em sljede\u0107em blogu \u00abIzgradnja CI\/CD platforme za Pinterest\u00bb.<\/p>\n<h4>Vrste posebnih resursa<\/h4>\n<p>\nNa temelju specifi\u010dnih potreba Pinteresta, razvili smo sljede\u0107e CRD-ove koji odgovaraju raznolikim radnim procesima:<\/p>\n<ul>\n<li>PinterestService su ve\u0107 dugo u funkciji stateless servisi. Mnogi na\u0161i osnovni sustavi se temelje na setu takvih servisa.<\/li>\n<li>PinterestJobSet modelira pakete zadataka cjelokupnog ciklusa. U Pinteresta postoji uobi\u010dajena situacija u kojoj vi\u0161e zadataka pokre\u0107e iste kontejnere paralelno, neovisno o drugim sli\u010dnim procesima.<\/li>\n<li>PinterestCronJob se \u0161iroko koristi u kombinaciji s malim periodi\u010dnim optere\u0107enjima. Ovo je omota\u010d za native rad cron-a s mehanizmima podr\u0161ke Pinteresta koji se brinu za sigurnost, promet, logove i metrike.<\/li>\n<li>PinterestDaemon uklju\u010duje Daemon-e infrastrukture. Ova porodica nastavlja rasti kako dodajemo sve ve\u0107u podr\u0161ku za na\u0161e klastere.<\/li>\n<li>PinterestTrainingJob pokriva procese Tensorflow i Pytorch, osiguravaju\u0107i isti nivo podr\u0161ke tijekom rada kao i svi drugi CRD-ovi. Budu\u0107i da Pinterest aktivno koristi Tensorflow i druge sustave ma\u0161inskog u\u010denja, imali smo razloga izgraditi posebni CRD oko njih.<\/li>\n<\/ul>\n<p>\nTako\u0111er radimo na PinterestStatefulSet, koji \u0107e uskoro biti prilago\u0111en za skladi\u0161ta podataka i druge stateful sustave.<\/p>\n<h4>Podr\u0161ka okru\u017eenju za izvr\u0161avanje<\/h4>\n<p>\nKada se modul aplikacija pokrene u Kubernetes-u, automatski dobiva certifikat za identifikaciju samog sebe. Ovaj certifikat se koristi za pristup tajnom skladi\u0161tu ili za komunikaciju s drugim uslugama putem mTLS-a. U me\u0111uvremenu, konfigurator inicijalizacije kontejnera i Daemon u\u010ditavaju sve potrebne ovisnosti prije pokretanja kontejnerske aplikacije. Kada sve bude spremno, sidecar za promet i Daemon registriraju IP adresu modula u na\u0161em Zookeeper-u, kako bi ga klijenti mogli otkriti. Sve to \u0107e raditi, jer je mre\u017eni modul bio konfiguriran prije pokretanja aplikacije.<\/p>\n<p>Gore navedeni su tipi\u010dni primjeri podr\u0161ke radnim optere\u0107enjima tijekom izvr\u0161avanja. Za druge vrste radnih optere\u0107enja mo\u017ee biti potrebna malo druga\u010dija podr\u0161ka, ali svi su predstavljeni kao sidecar na razini pod-a, \u010dvorovima ili Daemon-ima na razini virtualnih ma\u0161ina. Pratimo da sve to bude implementirano unutar upravlja\u010dke infrastrukture i uskla\u0111eno me\u0111u aplikacijama, \u0161to zna\u010dajno smanjuje optere\u0107enje u pogledu tehni\u010dkog rada i podr\u0161ke klijentima.<\/p>\n<h4>Testiranje i QA<\/h4>\n<p>\nSabrali smo end-to-end testni pipeline iznad ve\u0107 postoje\u0107e testne infrastrukture Kubernetes. Ovi testovi se odnose na sve na\u0161e klastere. Na\u0161 pipeline je prolazio kroz mnoge prerade prije nego \u0161to je postao dio produkcijskog klastera.<\/p>\n<p>Osim sistema testiranja, imamo sisteme monitoringa i obavje\u0161tavanja koji neprekidno prate stanje komponenti sistema, kori\u0161tenje resursa i druge va\u017ene pokazatelje, obavje\u0161tavaju\u0107i nas samo kada je potrebno ljudsko posredovanje.<\/p>\n<h4>Alternatives<\/h4>\n<p>\nRazmatrali smo neke alternative za prilago\u0111ene resurse, kao \u0161to su mutacijski kontroleri pristupa i sistemi \u0161ablona. Me\u0111utim, svi su oni povezani s ozbiljnim pote\u0161ko\u0107ama u radu, pa smo odabrali put CRD.<\/p>\n<p>Mutacijski kontroler pristupa kori\u0161ten je za uvo\u0111enje sidecara, varijable okru\u017eenja i druge podr\u0161ke tijekom izvr\u0161avanja. Ipak, suo\u010davao se s razli\u010ditim problemima, kao \u0161to su povezivanje resursa i upravljanje njihovim \u017eivotnim ciklusom, dok u CRD takvi problemi ne nastaju.<\/p>\n<p><b>Napomena:<\/b> Sustavi predlo\u017eaka, poput Helm dijagrama, tako\u0111er se \u0161iroko koriste za pokretanje aplikacija sli\u010dnih konfiguracija. Me\u0111utim, na\u0161e radne aplikacije su previ\u0161e raznolike da bi se njima moglo upravljati putem predlo\u017eaka. Tako\u0111er, tijekom kontinuirane implementacije pri kori\u0161tenju predlo\u017eaka javlja se previ\u0161e gre\u0161aka.<\/p>\n<h4>Nadogradnja<\/h4>\n<p>\nTrenutno se suo\u010davamo s mje\u0161ovitim optere\u0107enjem na svim na\u0161im klasterima. Kako bismo podr\u017eali takve procese razli\u010ditih vrsta i veli\u010dina, radimo na sljede\u0107im podru\u010djima:<\/p>\n<ul>\n<li>Skup klastera raspore\u0111uje velike aplikacije po razli\u010ditim klasterima radi osiguravanja skalabilnosti i stabilnosti.<\/li>\n<li>Osiguravanje stabilnosti, skalabilnosti i vidljivosti klastera za povezivanje aplikacije i njezinog SLA.<\/li>\n<li>Upravljanje resursima i kvotama kako bi se sprije\u010dili sukobi izme\u0111u aplikacija te kontroliranje razmjera klastera s na\u0161e strane.<\/li>\n<li>Nova CI\/CD platforma za podr\u0161ku i implementaciju aplikacija u Kubernetesu.<\/li>\n<\/ul>\n<p>Izvor: <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.4 - 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\/hr\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\/hr\/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\udd47 Stvaramo kubernetes platformu u Pinterestu | ProHoster","description":"Tijekom godina postojanja, Pinterest je 300 milijuna korisnika usluge stvorilo vi\u0161e od 200 milijardi pinova na vi\u0161e od 4 milijarde plo\u010da.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}