{"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\/sk\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Vytv\u00e1rame kubernetes platformu na Pintereste","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Za roky existencie Pinterestu 300 mili\u00f3nov pou\u017e\u00edvate\u013eov slu\u017eby vytvorilo viac ako 200 mili\u00e1rd pripnut\u00ed na viac ako 4 miliardy n\u00e1steniek. Aby sme obsl\u00fa\u017eili t\u00fato arm\u00e1du pou\u017e\u00edvate\u013eov a rozsiahlu datab\u00e1zu obsahu, port\u00e1l vyvinul tis\u00edce slu\u017eieb, po\u010dn\u00fac mikroservismi, s ktor\u00fdmi si porad\u00ed nieko\u013eko CPU, a kon\u010diac obrovsk\u00fdmi monolitmi, ktor\u00e9 be\u017eia na celom parku virtu\u00e1lnych strojov. A pri\u0161iel \u010das, kedy sa poh\u013ead spolo\u010dnosti obr\u00e1til na k8s. \u010c\u00edm teda \u201ekocka\u201c zaujala \u201ePinterest\u201c? O tom sa dozviete z n\u00e1\u0161ho prekladu \u010derstv\u00e9ho \u010dl\u00e1nku z <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blogu Pinterest engineering<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Vytv\u00e1rame kubernetes platformu na Pintereste\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak\u017ee st\u00e1tis\u00edce mili\u00f3nov pou\u017e\u00edvate\u013eov a st\u00e1tis\u00edce mili\u00e1rd pripnut\u00ed. Aby sme obsl\u00fa\u017eili t\u00fato arm\u00e1du pou\u017e\u00edvate\u013eov a rozsiahlu datab\u00e1zu obsahu, vyvinuli sme tis\u00edce slu\u017eieb, po\u010dn\u00fac mikroservismi, s ktor\u00fdmi si porad\u00ed nieko\u013eko CPU, a kon\u010diac obrovsk\u00fdmi monolitmi, ktor\u00e9 be\u017eia na celom parku virtu\u00e1lnych strojov. Okrem toho m\u00e1me r\u00f4zne frameworky, ktor\u00e9 tie\u017e m\u00f4\u017eu vy\u017eadova\u0165 zdroje CPU, pam\u00e4te alebo pr\u00edstup k oper\u00e1ci\u00e1m vstupu a v\u00fdstupu.<\/p>\n<p>Pri podpore tohto zoologick\u00e9ho parku n\u00e1strojov sa t\u00edm v\u00fdvoja stret\u00e1va s viacer\u00fdmi probl\u00e9mami:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>In\u017einieri nemaj\u00fa unified sp\u00f4sob sp\u00fa\u0161\u0165ania pracovn\u00e9ho prostredia. Stateless slu\u017eby, Stateful slu\u017eby a projekty v akt\u00edvnom v\u00fdvoji s\u00fa zalo\u017een\u00e9 na \u00faplne r\u00f4znych technologick\u00fdch stackoch. To viedlo k vytvoreniu cel\u00e9ho \u0161kolenia pre in\u017einierov a v\u00e1\u017ene komplikuje pr\u00e1cu n\u00e1\u0161ho infra\u0161trukt\u00farneho t\u00edmu.<\/li>\n<li>V\u00fdvoj\u00e1ri, ktor\u00ed maj\u00fa k dispoz\u00edcii vlastn\u00fd park virtu\u00e1lnych strojov, vytv\u00e1raj\u00fa obrovsk\u00e9 za\u0165a\u017eenie pre intern\u00fdch administr\u00e1torov. Napokon, tak\u00e9 jednoduch\u00e9 oper\u00e1cie, ako je aktualiz\u00e1cia OS alebo AMI, sa \u0165ahaj\u00fa na t\u00fd\u017edne a mesiace. To vedie k rastu za\u0165a\u017eenia v, na prv\u00fd poh\u013ead, \u00faplne be\u017en\u00fdch situ\u00e1ci\u00e1ch.<\/li>\n<li>Zlo\u017eitosti pri vytv\u00e1ran\u00ed glob\u00e1lnych n\u00e1strojov na spr\u00e1vu infra\u0161trukt\u00fary na u\u017e existuj\u00facich rie\u0161eniach. Situ\u00e1ciu komplikuje aj to, \u017ee n\u00e1js\u0165 vlastn\u00edkov virtu\u00e1lnych strojov nie je jednoduch\u00e9. To znamen\u00e1, \u017ee nevieme, \u010di m\u00f4\u017eeme bezpe\u010dne vyda\u0165 tieto zdroje na pr\u00e1cu na in\u00fdch \u00fasekoch na\u0161ej infra\u0161trukt\u00fary.<\/li>\n<\/ul>\n<p>\nOrkestr\u00e1torsk\u00e9 syst\u00e9my kontajnerov s\u00fa sp\u00f4sob, ako zjednoti\u0165 spr\u00e1vu pracovnej z\u00e1\u0165a\u017ee. Otv\u00e1raj\u00fa v\u00e1m cestu k zv\u00fd\u0161eniu r\u00fdchlosti v\u00fdvoja a zjednodu\u0161uj\u00fa spr\u00e1vu infra\u0161trukt\u00fary, preto\u017ee v\u0161etky zdroje zapojen\u00e9 do projektu spravuje jeden centralizovan\u00fd syst\u00e9m.<\/p>\n<p><img decoding=\"async\" alt=\"Vytv\u00e1rame kubernetes platformu na Pintereste\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Obr\u00e1zok 1: Prioritn\u00e9 oblasti infra\u0161trukt\u00fary (spo\u013eahlivos\u0165, v\u00fdkon v\u00fdvoj\u00e1rov a efektivita).<\/i><\/p>\n<p>T\u00edm Cloud Management Platformu v Pinterest sa s K8s zozn\u00e1mil v roku 2017. Do prvej polovice roku 2017 sme zdokumentovali v\u00e4\u010d\u0161inu na\u0161ich v\u00fdrobn\u00fdch kapac\u00edt, vr\u00e1tane API a v\u0161etk\u00fdch na\u0161ich <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sk\/server\/\"   title=\"webov\u00fdch serverov\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">webov\u00fdch serverov<\/a>. N\u00e1sledne sme vykonali d\u00f4kladn\u00e9 pos\u00fadenie r\u00f4znych syst\u00e9mov na orchestr\u00e1ciu kontajnerov\u00fdch rie\u0161en\u00ed, budovanie klastrov a ich spr\u00e1vu. Na konci roku 2017 sme sa rozhodli vyu\u017ei\u0165 Kubernetes. Bol dostato\u010dne flexibiln\u00fd a \u0161iroko podporovan\u00fd v komunite v\u00fdvoj\u00e1rov.<\/p>\n<p>Doteraz sme vytvorili vlastn\u00e9 n\u00e1stroje na zav\u00e1dzanie klastra na z\u00e1klade Kops a previedli existuj\u00face komponenty infra\u0161trukt\u00fary na Kubernetes \u2014 ako s\u00fa sie\u0165, bezpe\u010dnos\u0165, metriky, spr\u00e1va denn\u00edkov, spr\u00e1va identity a prev\u00e1dzka. Taktie\u017e sme implementovali syst\u00e9m modelovania pracovn\u00fdch z\u00e1\u0165a\u017e\u00ed pre n\u00e1\u0161 zdroj, ktor\u00e9ho zlo\u017eitosti s\u00fa od v\u00fdvoj\u00e1rov skryt\u00e9. Teraz sa s\u00fastre\u010fujeme na zabezpe\u010denie stability klastra, jeho \u0161k\u00e1lovanie a pripojenie nov\u00fdch klientov.<\/p>\n<h4>Kubernetes: cesta Pinterestu<\/h4>\n<p>\nZavedenie Kubernetes na \u00farovni Pinterestu ako ob\u013e\u00fabenej platformy medzi na\u0161imi in\u017einiermi viedlo k mnoh\u00fdm \u0165a\u017ekostiam.<\/p>\n<p>Ako ve\u013ek\u00e1 spolo\u010dnos\u0165 sme investovali zna\u010dn\u00e9 prostriedky do infra\u0161trukt\u00farnych n\u00e1strojov. Pr\u00edkladom s\u00fa bezpe\u010dnostn\u00e9 n\u00e1stroje, ktor\u00e9 spracov\u00e1vaj\u00fa certifik\u00e1ty a distribuuj\u00fa k\u013e\u00fa\u010de, komponenty na kontrolu prev\u00e1dzky, syst\u00e9my na prejavovanie slu\u017eieb, komponenty vidite\u013enosti a odosielania denn\u00edkov a metr\u00edk. Toto v\u0161etko nebolo zostaven\u00e9 len tak: pre\u0161li sme norm\u00e1lnou cestou pokusov a omylov a preto sme chceli integrova\u0165 v\u0161etku t\u00fato technol\u00f3giu do novej infra\u0161trukt\u00fary na Kubernetes namiesto toho, aby sme znova vynaliezali star\u00fd bicykel na novej platforme. Tak\u00fdto pr\u00edstup vo v\u0161eobecnosti zjednodu\u0161il migr\u00e1ciu, preto\u017ee v\u0161etka podpora aplik\u00e1ci\u00ed u\u017e existuje a nemus\u00ed sa vytv\u00e1ra\u0165 od nuly.<\/p>\n<p>Na druhej strane, modelov predikcie z\u00e1\u0165a\u017ee v samotnom Kubernetes (napr\u00edklad nasadenia, \u00faloh a Daemonsetov) nie je dostatok pre n\u00e1\u0161 projekt. Tieto probl\u00e9my pou\u017eite\u013enosti s\u00fa obrovsk\u00fdmi prek\u00e1\u017ekami na ceste k prechodu na Kubernetes. Napr\u00edklad sme po\u010duli, ako si v\u00fdvoj\u00e1ri slu\u017eieb s\u0165a\u017euj\u00fa na nedostatok alebo nespr\u00e1vne nastavenie vstupu. Taktie\u017e sme sa stretli so zl\u00fdm pou\u017e\u00edvan\u00edm templaterov, ke\u010f sa vytvorili stovky k\u00f3pi\u00ed s rovnakou \u0161pecifik\u00e1ciou a \u00falohou, \u010do viedlo k hroziv\u00fdm probl\u00e9mom s laden\u00edm.<\/p>\n<p>Bolo tie\u017e ve\u013emi \u0165a\u017ek\u00e9 udr\u017eiava\u0165 r\u00f4zne verzie v rovnakom klasteri. Predstavte si zlo\u017eitosti z\u00e1kazn\u00edckej podpory, ak mus\u00edte pracova\u0165 s\u00fa\u010dasne s mnoh\u00fdmi verziami rovnakej doby vykon\u00e1vania, so v\u0161etk\u00fdmi ich probl\u00e9mami, chybami a aktualiz\u00e1ciami.<\/p>\n<h4>U\u017e\u00edvate\u013esk\u00e9 zdroje a ovl\u00e1da\u010de Pinterestu<\/h4>\n<p>\nAby sme na\u0161im in\u017einierom u\u013eah\u010dili proces zav\u00e1dzania Kubernetes a zjednodu\u0161ili infra\u0161trukt\u00faru a ur\u00fdchlili jej chod, vyvinuli sme na\u0161e vlastn\u00e9 defin\u00edcie u\u017e\u00edvate\u013esk\u00fdch zdrojov (CRD).<\/p>\n<p>CRD poskytuj\u00fa nasleduj\u00face funk\u010dn\u00e9 schopnosti:<\/p>\n<ol>\n<li>Zl\u00fa\u010denie r\u00f4znych nat\u00edvnych zdrojov Kubernetes, aby fungovali ako jedin\u00e9 za\u0165a\u017eenie. Napr\u00edklad zdroj PinterestService zah\u0155\u0148a nasadenie, slu\u017ebu vstupu a konfigura\u010dn\u00fa mapu. To umo\u017e\u0148uje v\u00fdvoj\u00e1rom nezam\u00fd\u0161\u013ea\u0165 sa nad nastaven\u00edm DNS.<\/li>\n<li>Zav\u00e1dzanie potrebnej podpory aplik\u00e1ci\u00ed. Pou\u017e\u00edvate\u013e by sa mal s\u00fastredi\u0165 iba na \u0161pecifik\u00e1ciu kontajnera pod\u013ea svojej obchodnej logiky, zatia\u013e \u010do ovl\u00e1da\u010d CRD zav\u00e1dza v\u0161etky potrebn\u00e9 init-kontajnery, premenn\u00e9 prostredia a \u0161pecifik\u00e1cie podu. To zais\u0165uje z\u00e1sadne in\u00fd \u00farove\u0148 pohodlia pre v\u00fdvoj\u00e1rov.<\/li>\n<li>Ovl\u00e1da\u010de CRD tie\u017e spravuj\u00fa \u017eivotn\u00fd cyklus vlastn\u00fdch zdrojov a zvy\u0161uj\u00fa dostupnos\u0165 ladenia. To zah\u0155\u0148a zladenie po\u017eadovan\u00fdch a skuto\u010dn\u00fdch \u0161pecifik\u00e1ci\u00ed, aktualiz\u00e1ciu stavu CRD a vedenie protokolov udalost\u00ed a nie len to. Bez CRD by v\u00fdvoj\u00e1ri museli spravova\u0165 po\u010detn\u00fa sadu zdrojov, \u010do by len zvy\u0161ovalo pravdepodobnos\u0165 chyby. <\/li>\n<\/ol>\n<p>\nTu je pr\u00edklad PinterestService a vn\u00fatorn\u00e9ho zdroja, ktor\u00fd spravuje n\u00e1\u0161 ovl\u00e1da\u010d:<\/p>\n<p><img decoding=\"async\" alt=\"Vytv\u00e1rame kubernetes platformu na Pintereste\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nAko je uveden\u00e9 vy\u0161\u0161ie, na podporu pou\u017e\u00edvate\u013eskej kontajnerovej aplik\u00e1cie je potrebn\u00e9 integrova\u0165 do nej inicializa\u010dn\u00fd kontajner a nieko\u013eko roz\u0161\u00edren\u00ed na zabezpe\u010denie, vidite\u013enos\u0165 a pr\u00e1cu so sie\u0165ov\u00fdm prenosom. Okrem toho sme vytvorili \u0161abl\u00f3ny konfigura\u010dn\u00fdch m\u00e1p a implementovali podporu \u0161abl\u00f3n PVC pre d\u00e1vkov\u00e9 \u00falohy, ako aj sledovanie viacer\u00fdch premenn\u00fdch prostredia na sledovanie identifik\u00e1cie, spotreby zdrojov a zbieranie \"odpadu\".<\/p>\n<p>\u0164a\u017eko si predstavi\u0165, \u017ee by v\u00fdvoj\u00e1ri chceli p\u00edsa\u0165 tieto konfigura\u010dn\u00e9 s\u00fabory manu\u00e1lne bez podpory CRD, nieto e\u0161te \u010fal\u0161iu podporu a ladenie konfigur\u00e1ci\u00ed.<\/p>\n<h4>Pracovn\u00fd tok nasadenia aplik\u00e1ci\u00ed<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Vytv\u00e1rame kubernetes platformu na Pintereste\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa obr\u00e1zku vy\u0161\u0161ie je zn\u00e1zornen\u00e9, ako nasadi\u0165 pou\u017e\u00edvate\u013esk\u00fd zdroj Pinterest v klastri Kubernetes:<\/p>\n<ol>\n<li>V\u00fdvoj\u00e1ri interaguj\u00fa s na\u0161\u00edm klastra Kubernetes cez CLI a pou\u017e\u00edvate\u013esk\u00e9 rozhranie.<\/li>\n<li>N\u00e1stroje CLI \/ UI extrahuj\u00fa YAML s\u00fabory konfigura\u010dn\u00e9ho pracovn\u00e9ho toku a \u010fal\u0161ie vlastnosti zostavy (rovnak\u00fd identifik\u00e1tor verzie) z Artifactory, po \u010dom ich odosielaj\u00fa do slu\u017eieb na predlo\u017eenie \u00faloh. Tento krok zaru\u010duje, \u017ee do klastra bud\u00fa nasaden\u00e9 iba stabiln\u00e9 verzie. <\/li>\n<li>JSS funguje ako br\u00e1na pre r\u00f4zne platformy, vr\u00e1tane Kubernetes. Tu sa vykon\u00e1va autentifik\u00e1cia pou\u017e\u00edvate\u013ea, priradenie kv\u00f3t a \u010diasto\u010dn\u00e1 kontrola konfigur\u00e1cie n\u00e1\u0161ho CRD.<\/li>\n<li>Po overen\u00ed CRD na strane JSS sa inform\u00e1cie odosielaj\u00fa na API platformy k8s.<\/li>\n<li>N\u00e1\u0161 CRD kontrol\u00e9r sleduje udalosti na v\u0161etk\u00fdch pou\u017e\u00edvate\u013esk\u00fdch zdrojoch. Transformuje CR na nativn\u00e9 zdroje k8s, prid\u00e1va potrebn\u00e9 moduly, nastavuje pr\u00edslu\u0161n\u00e9 premenn\u00e9 prostredia a vykon\u00e1va \u010fal\u0161ie pomocn\u00e9 \u00falohy, \u010d\u00edm zaru\u010duje dostato\u010dn\u00fa infra\u0161trukt\u00farnu podporu pre kontajnerov\u00e9 pou\u017e\u00edvate\u013esk\u00e9 aplik\u00e1cie.<\/li>\n<li>Potom kontrol\u00e9r CRD odosiela z\u00edskan\u00e9 \u00fadaje do API Kubernetes na spracovanie pl\u00e1nova\u010dom a na spustenie ich prev\u00e1dzky.<\/li>\n<\/ol>\n<p>\n<b>Pozn\u00e1mka<\/b>: Toto predbe\u017en\u00e9 nasadenie pracovn\u00e9ho toku bolo vytvoren\u00e9 pre prv\u00fdch pou\u017e\u00edvate\u013eov na\u0161ej novej platformy k8s. Moment\u00e1lne pracujeme na vylep\u0161en\u00ed tohto procesu, aby sme sa mohli plne integrova\u0165 s na\u0161\u00edm nov\u00fdm CI\/CD. To znamen\u00e1, \u017ee nem\u00f4\u017eeme zdie\u013ea\u0165 v\u0161etko, \u010do s\u00favis\u00ed s Kubernetes. S nad\u0161en\u00edm o\u010dak\u00e1vame, \u017ee sa s vami podel\u00edme o na\u0161e sk\u00fasenosti a pokroky t\u00edmu v tejto oblasti v na\u0161om \u010fal\u0161om blogovom pr\u00edspevku \u201eVytvorenie platformy CI\/CD pre Pinterest\u201c.<\/p>\n<h4>Typy \u0161peci\u00e1lnych zdrojov<\/h4>\n<p>\nNa z\u00e1klade konkr\u00e9tnych potrieb Pinterestu sme vyvinuli nasleduj\u00face CRD, ktor\u00e9 s\u00fa vhodn\u00e9 pre r\u00f4zne pracovn\u00e9 procesy:<\/p>\n<ul>\n<li>PinterestService s\u00fa u\u017e dlhodobo funguj\u00face stateless slu\u017eby. Mnoh\u00e9 na\u0161e z\u00e1kladn\u00e9 syst\u00e9my s\u00fa zalo\u017een\u00e9 na s\u00fabore tak\u00fdchto slu\u017eieb.<\/li>\n<li>PinterestJobSet modeluje d\u00e1vkov\u00e9 \u00falohy cel\u00e9ho cyklu. V Pintereste existuje be\u017en\u00fd scen\u00e1r, v ktorom nieko\u013eko \u00faloh sp\u00fa\u0161\u0165a rovnak\u00e9 kontajnery paralelne, pri\u010dom nez\u00e1visle od in\u00fdch podobn\u00fdch procesov.<\/li>\n<li>PinterestCronJob sa \u0161iroko pou\u017e\u00edva v kombin\u00e1cii s mal\u00fdmi periodick\u00fdmi z\u00e1\u0165a\u017eami. Je to obal pre nat\u00edvne fungovanie cron s mechanizmami podpory Pinterestu, ktor\u00e9 zabezpe\u010duj\u00fa bezpe\u010dnos\u0165, prenos, protokoly a metriky.<\/li>\n<li>PinterestDaemon obsahuje z\u00e1suvn\u00e9 moduly infra\u0161trukt\u00fary. T\u00e1to rodina sa na\u010falej rozrast\u00e1, ke\u010f\u017ee prid\u00e1vame \u010doraz viac podpory pre na\u0161e klastre.<\/li>\n<li>PinterestTrainingJob sa roz\u0161iruje na procesy Tensorflow a Pytorch, zabezpe\u010duj\u00fac rovnak\u00fa \u00farove\u0148 podpory po\u010das prev\u00e1dzky ako v\u0161etky ostatn\u00e9 CRD. Ke\u010f\u017ee Pinterest akt\u00edvne pou\u017e\u00edva Tensorflow a \u010fal\u0161ie syst\u00e9my strojov\u00e9ho u\u010denia, mali sme d\u00f4vod vybudova\u0165 okolo nich samostatn\u00fa CRD.<\/li>\n<\/ul>\n<p>\nPracujeme aj na PinterestStatefulSet, ktor\u00fd \u010doskoro bude prisp\u00f4soben\u00fd na datab\u00e1zov\u00e9 \u00falo\u017eisk\u00e1 a in\u00e9 stateful syst\u00e9my.<\/p>\n<h4>Podpora vykon\u00e1vacieho prostredia<\/h4>\n<p>\nKe\u010f sa aplika\u010dn\u00fd modul spust\u00ed v Kubernetes, automaticky z\u00edska certifik\u00e1t na svoju identifik\u00e1ciu. Tento certifik\u00e1t sa pou\u017e\u00edva na pr\u00edstup k tajn\u00e9mu \u00falo\u017eisku alebo na komunik\u00e1ciu s in\u00fdmi slu\u017ebami cez mTLS. Medzit\u00fdm inicializ\u00e1tor kontajnerov a Daemon na\u010d\u00edtaj\u00fa v\u0161etky potrebn\u00e9 z\u00e1vislosti pred spusten\u00edm kontajnerovej aplik\u00e1cie. Ke\u010f je v\u0161etko pripraven\u00e9, sidecar dopravy a Daemon zaregistruj\u00fa IP adresu modulu v na\u0161om Zookeeperi, aby ho mohli klienti objavi\u0165. To v\u0161etko funguje, preto\u017ee sie\u0165ov\u00fd modul bol nastaven\u00fd e\u0161te pred spusten\u00edm aplik\u00e1cie.<\/p>\n<p>Vy\u0161\u0161ie uveden\u00e9 s\u00fa typick\u00e9 pr\u00edklady podpory pracovn\u00fdch z\u00e1\u0165a\u017e\u00ed po\u010das prev\u00e1dzky. Pre in\u00e9 typy pracovn\u00fdch z\u00e1\u0165a\u017e\u00ed m\u00f4\u017ee by\u0165 potrebn\u00e1 trochu in\u00e1 podpora, ale v\u0161etky s\u00fa predstaven\u00e9 vo forme sidecar na \u00farovni pod, uzlov\u00fdch alebo Daemonov na \u00farovni virtu\u00e1lnych strojov. Db\u00e1me na to, aby sme to v\u0161etko nasadili v r\u00e1mci mana\u017e\u00e9rskej infra\u0161trukt\u00fary a zos\u00faladili medzi aplik\u00e1ciami, \u010do v kone\u010dnom d\u00f4sledku v\u00fdznamne zni\u017euje z\u00e1\u0165a\u017e v oblasti technickej pr\u00e1ce a podpory z\u00e1kazn\u00edkov.<\/p>\n<h4>Testovanie a QA<\/h4>\n<p>\nZostavili sme end-to-end testovac\u00ed pipeline na u\u017e existuj\u00facej testovacej infra\u0161trukt\u00fare Kubernetes. Tieto testy sa roz\u0161iruj\u00fa na v\u0161etky na\u0161e klastre. N\u00e1\u0161 pipeline pre\u017eil mnoh\u00e9 \u00fapravy, ne\u017e sa stal s\u00fa\u010das\u0165ou produktov\u00e9ho klastra.<\/p>\n<p>Okrem syst\u00e9mov testovania m\u00e1me syst\u00e9my monitorovania a upozornenia, ktor\u00e9 neust\u00e1le sleduj\u00fa stav komponentov syst\u00e9mu, spotrebu recursos a \u010fal\u0161ie d\u00f4le\u017eit\u00e9 ukazovatele, informuj\u00fac n\u00e1s iba v pr\u00edpade potreby \u013eudskej intervencie.<\/p>\n<h4>Alternat\u00edvy<\/h4>\n<p>\nZv\u00e1\u017eili sme niektor\u00e9 alternat\u00edvy prisp\u00f4soben\u00fdch zdrojov, ako s\u00fa muta\u010dn\u00e9 controllery pr\u00edstupu a syst\u00e9my \u0161abl\u00f3n. Av\u0161ak v\u0161etky tieto mo\u017enosti prin\u00e1\u0161aj\u00fa v\u00e1\u017ene \u0165a\u017ekosti v prev\u00e1dzke, tak\u017ee sme sa rozhodli pre cestu CRD.<\/p>\n<p>Muta\u010dn\u00fd controller pr\u00edstupu sa pou\u017e\u00edval na zavedenie sidecarov, premenn\u00fdch prostredia a \u010fal\u0161ej podpory po\u010das prev\u00e1dzky. Napriek tomu sa stret\u00e1val s r\u00f4znymi probl\u00e9mami, ako je viazanie zdrojov a spr\u00e1va ich \u017eivotn\u00e9ho cyklu, pri\u010dom CRD tieto probl\u00e9my nem\u00e1.<\/p>\n<p><b>Pozn\u00e1mka:<\/b> Syst\u00e9my \u0161abl\u00f3n, ako s\u00fa diagramy Helm, s\u00fa tie\u017e \u0161iroko pou\u017e\u00edvan\u00e9 na sp\u00fa\u0161\u0165anie aplik\u00e1ci\u00ed so s podobn\u00fdmi konfigur\u00e1ciami. Na\u0161e pracovn\u00e9 aplik\u00e1cie s\u00fa v\u0161ak pr\u00edli\u0161 rozmanit\u00e9 na to, aby sa dali spravova\u0165 pomocou \u0161abl\u00f3n. Pri kontinu\u00e1lnom nasaden\u00ed s vyu\u017eit\u00edm \u0161abl\u00f3n by sa takisto vyskytlo pr\u00edli\u0161 ve\u013ea ch\u00fdb.<\/p>\n<h4>Nadch\u00e1dzaj\u00faca pr\u00e1ca<\/h4>\n<p>\nMoment\u00e1lne sa zaober\u00e1me zmie\u0161anou z\u00e1\u0165a\u017eou na v\u0161etk\u00fdch na\u0161ich klastroch. Aby sme podporovali podobn\u00e9 procesy r\u00f4zneho typu a ve\u013ekosti, pracujeme v nasleduj\u00facich smeroch:<\/p>\n<ul>\n<li>S\u00fabor klastrov rozde\u013euje ve\u013ek\u00e9 aplik\u00e1cie medzi r\u00f4zne klastre na zabezpe\u010denie \u0161k\u00e1lovate\u013enosti a stability.<\/li>\n<li>Zabezpe\u010denie stability, \u0161k\u00e1lovate\u013enosti a vidite\u013enosti klastra na vytvorenie spojenia aplik\u00e1cie a jej SLA.<\/li>\n<li>Riadenie zdrojov a kv\u00f3t, aby aplik\u00e1cie medzi sebou nekolidovali, a aby bol rozsah klastra kontrolovan\u00fd z na\u0161ej strany.<\/li>\n<li>Nov\u00e1 platforma CI\/CD na podporu a nasadenie aplik\u00e1ci\u00ed v Kubernetes.<\/li>\n<\/ul>\n<p>Zdroj: <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.5 - 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\/sk\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47Vytv\u00e1rame kubernetes-platformu na Pinterest | ProHoster","description":"Po\u010das svojej existencie Pinterest 300 mili\u00f3nov pou\u017e\u00edvate\u013eov slu\u017eby vytvorilo viac ako 200 mili\u00e1rd pinov na viac ako 4 miliard\u00e1ch n\u00e1steniek.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}