{"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\/ro\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Cre\u0103m o platform\u0103 kubernetes \u00een Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>De-a lungul anilor, Pinterest a avut 300 de milioane de utilizatori care au creat peste 200 de miliarde de pins pe mai mult de 4 miliarde de tablouri. Pentru a deservi aceast\u0103 armat\u0103 de utilizatori \u0219i vasta baz\u0103 de con\u021binut, portalul a dezvoltat mii de servicii, \u00eencep\u00e2nd cu microservicii, cu care pot lucra c\u00e2teva CPU, \u0219i termin\u00e2nd cu monoli\u021bi uria\u0219i, care ruleaz\u0103 pe un \u00eentreg parc de ma\u0219ini virtuale. Iat\u0103 c\u0103 a venit momentul \u00een care compania a \u00eentors privirea c\u0103tre k8s. Ce anume a atras aten\u021bia \u201ecubului\u201d de c\u0103tre Pinterest? Afl\u0103 din traducerea noastr\u0103 a unui articol recent din <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blogul de inginerie Pinterest<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Cre\u0103m o platform\u0103 kubernetes \u00een Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA\u0219adar, sute de milioane de utilizatori \u0219i sute de miliarde de pins. Pentru a deservi aceast\u0103 armat\u0103 de utilizatori \u0219i vasta baz\u0103 de con\u021binut, am dezvoltat mii de servicii, \u00eencep\u00e2nd cu microservicii, cu care poate lucra c\u00e2teva CPU, \u0219i termin\u00e2nd cu monoli\u021bi uria\u0219i, care ruleaz\u0103 pe un \u00eentreg parc de ma\u0219ini virtuale. \u00cen plus, avem diverse cadre care de asemenea pot necesita resurse de CPU, memorie sau acces la opera\u021biuni de intrare-ie\u0219ire.<\/p>\n<p>\u00cen sprijinul acestui zoo de instrumente, echipa de dezvoltare se confrunt\u0103 cu o serie de probleme:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Inginerii nu au o modalitate unificat\u0103 de a lansa mediile de lucru. Serviciile Stateless, serviciile Stateful \u0219i proiectele aflate \u00een dezvoltare activ\u0103 se bazeaz\u0103 pe stive tehnologice complet diferite. Acest lucru a dus la crearea unui \u00eentreg curs de formare pentru ingineri \u0219i complic\u0103 semnificativ activitatea echipei noastre de infrastructur\u0103.<\/li>\n<li>Dezvoltatorii, care dispun de propriul parc de ma\u0219ini virtuale, impun o povar\u0103 enorm\u0103 asupra administratorilor interni. Ca rezultat, opera\u021biuni aparent simple, cum ar fi actualizarea sistemului de operare sau a AMI, se \u00eentind pe s\u0103pt\u0103m\u00e2ni \u0219i luni. Aceasta duce la o cre\u0219tere a sarcinii chiar \u0219i \u00een situa\u021bii care par complet banale.<\/li>\n<li>Dificult\u0103\u021bi \u00een crearea de instrumente globale de gestionare a infrastructurii pe cele deja existente. Situa\u021bia este complicat\u0103 \u0219i de faptul c\u0103 g\u0103sirea proprietarilor ma\u0219inilor virtuale nu este u\u0219or. Adic\u0103, nu \u0219tim dac\u0103 putem extrage \u00een siguran\u021b\u0103 aceste resurse pentru a le folosi pe alte por\u021biuni ale infrastructurii noastre.<\/li>\n<\/ul>\n<p>\nSistemele de orchestrare a containerelor reprezint\u0103 o modalitate de a unifica gestionarea sarcinilor de lucru. Acestea \u00ee\u021bi deschid calea c\u0103tre cre\u0219terea vitezei de dezvoltare \u0219i simplific\u0103 gestionarea infrastructurii, deoarece toate resursele implicate \u00een proiect sunt gestionate de un singur sistem centralizat.<\/p>\n<p><img decoding=\"async\" alt=\"Cre\u0103m o platform\u0103 kubernetes \u00een Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figura 1: Priorit\u0103\u021bile infrastructurii (fiabilitate, performan\u021ba dezvoltatorilor \u0219i eficien\u021b\u0103).<\/i><\/p>\n<p>Echipa Cloud Management Platform de la Pinterest a \u00eenceput s\u0103 lucreze cu K8s \u00een 2017. \u00cen prima jum\u0103tate a anului 2017, am documentat cea mai mare parte a capacit\u0103\u021bilor noastre de produc\u021bie, inclusiv API-ul \u0219i toate <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/\"   title=\"serverele web\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">serverele web<\/a>. Apoi, am efectuat o evaluare riguros a diferitelor sisteme de orchestrare a solu\u021biilor de containere, construirea clusterelor \u0219i gestionarea acestora. P\u00e2n\u0103 la sf\u00e2r\u0219itul anului 2017, am decis s\u0103 utiliz\u0103m Kubernetes. Acesta era suficient de flexibil \u0219i era bine sus\u021binut \u00een comunitatea dezvoltatorilor.<\/p>\n<p>P\u00e2n\u0103 \u00een prezent, am creat propriile instrumente de ini\u021bializare a clusterului bazate pe Kops \u0219i am migrat componentele existente ale infrastructurii \u2014 precum re\u021beaua, securitatea, metricile, jurnalizarea, managementul identit\u0103\u021bii \u0219i traficul \u2014 pe Kubernetes. De asemenea, am implementat un sistem de modelare a sarcinilor de lucru pentru resursa noastr\u0103, complexitatea acestuia fiind ascuns\u0103 de dezvoltatori. Acum ne concentr\u0103m pe asigurarea stabilit\u0103\u021bii clusterului, scal\u0103rii acestuia \u0219i conect\u0103rii de noi clien\u021bi.<\/p>\n<h4>Kubernetes: drumul Pinterest<\/h4>\n<p>\n\u00cenceperea utiliz\u0103rii Kubernetes la scar\u0103 larg\u0103 \u00een Pinterest ca platform\u0103 care va fi apreciat\u0103 de inginerii no\u0219tri a venit cu numeroase dificult\u0103\u021bi.<\/p>\n<p>Ca companie mare, am investit sume semnificative \u00een instrumentele de infrastructur\u0103. De exemplu, putem men\u021biona instrumentele de securitate care gestioneaz\u0103 certificatele \u0219i distribuie cheile, componentele de control al traficului, sistemele de descoperire a serviciilor, componentele de vizibilitate \u0219i trimitere a jurnalelor \u0219i metricilor. Toate acestea au fost adunate nu f\u0103r\u0103 un motiv: am parcurs un drum normal de \u00eencerc\u0103ri \u0219i erori \u0219i, prin urmare, ne-am dorit s\u0103 integr\u0103m toate aceste componente \u00een noua infrastructur\u0103 pe Kubernetes \u00een loc s\u0103 reinvent\u0103m bicicleta veche pe o nou\u0103 platform\u0103. Aceast\u0103 abordare a simplificat \u00een general migrarea, deoarece tot suportul aplica\u021biilor exista deja, f\u0103r\u0103 a fi necesar s\u0103 fie creat de la zero.<\/p>\n<p>Pe de alt\u0103 parte, modelele de prognozare a \u00eenc\u0103rc\u0103rilor \u00een Kubernetes (de exemplu, desf\u0103\u0219ur\u0103ri, sarcini \u0219i seturi de Daemon) sunt insuficiente pentru proiectul nostru. Aceste probleme de utilizare sunt obstacole uria\u0219e \u00een calea tranzi\u021biei c\u0103tre Kubernetes. De exemplu, am auzit cum dezvoltatorii de servicii se pl\u00e2ng de lipsa sau configurarea incorect\u0103 a intr\u0103rilor. De asemenea, ne-am confruntat cu utilizarea gre\u0219it\u0103 a \u0219abloanelor, c\u00e2nd s-au creat sute de modalit\u0103\u021bi cu aceea\u0219i specifica\u021bie \u0219i sarcin\u0103, ceea ce a dus la probleme teribile de depanare.<\/p>\n<p>A fost, de asemenea, foarte dificil s\u0103 men\u021binem versiuni diferite \u00eentr-un singur cluster. Imagina\u021bi-v\u0103 dificultatea suportului pentru clien\u021bi, dac\u0103 trebuie s\u0103 lucra\u021bi pe mai multe versiuni ale acelea\u0219i medii de execu\u021bie, cu toate problemele, bugurile \u0219i actualiz\u0103rile acestora.<\/p>\n<h4>Resursele \u0219i controlerele personalizate Pinterest<\/h4>\n<p>\nPentru a facilita inginerilor no\u0219tri procesul de implementare a Kubernetes, precum \u0219i pentru a simplifica infrastructura \u0219i a accelera func\u021bionarea acesteia, am dezvoltat propriile defini\u021bii ale resurselor personalizate (CRD).<\/p>\n<p>CRD-urile ofer\u0103 urm\u0103toarele func\u021bionalit\u0103\u021bi:<\/p>\n<ol>\n<li>Uniunea diferitelor resurse native Kubernetes, astfel \u00eenc\u00e2t s\u0103 func\u021bioneze ca o singur\u0103 sarcin\u0103. De exemplu, resursa PinterestService include desf\u0103\u0219urarea, serviciul de autentificare \u0219i harta de configura\u021bie. Acest lucru permite dezvoltatorilor s\u0103 nu se preocupe de configurarea DNS.<\/li>\n<li>Implementarea suportului necesar pentru aplica\u021bii. Utilizatorul trebuie s\u0103 se concentreze doar pe specifica\u021bia containerului conform logicii sale de afaceri, \u00een timp ce controlerul CRD implementeaz\u0103 toate init-containerele necesare, variabilele de mediu \u0219i specifica\u021biile podurilor. Acest lucru asigur\u0103 un nivel de confort complet diferit pentru dezvoltatori.<\/li>\n<li>Controlerele CRD administreaz\u0103, de asemenea, ciclul de via\u021b\u0103 al resurselor proprii \u0219i \u00eembun\u0103t\u0103\u021besc disponibilitatea pentru depanare. Acest lucru include armonizarea specifica\u021biilor dorite \u0219i reale, actualizarea st\u0103rii CRD \u0219i p\u0103strarea jurnalelor de evenimente \u0219i nu numai. F\u0103r\u0103 CRD, dezvoltatorii ar fi fost nevoi\u021bi s\u0103 gestioneze un set numeros de resurse, ceea ce ar fi crescut doar probabilitatea de eroare. <\/li>\n<\/ol>\n<p>\nIat\u0103 un exemplu de PinterestService \u0219i resursa intern\u0103 care este gestionat\u0103 de controlerul nostru:<\/p>\n<p><img decoding=\"async\" alt=\"Cre\u0103m o platform\u0103 kubernetes \u00een Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nDup\u0103 cum se poate vedea mai sus, pentru a sus\u021bine containerul utilizatorului, trebuie s\u0103 integr\u0103m \u00een acesta un container de ini\u021bializare \u0219i c\u00e2teva extensii pentru a asigura securitatea, vizibilitatea \u0219i gestionarea traficului de re\u021bea. \u00cen plus, am creat \u0219abloane de h\u0103r\u021bi de configurare \u0219i am implementat suport pentru \u0219abloane PVC pentru sarcini de lucru, precum \u0219i urm\u0103rirea mai multor variabile de mediu pentru a monitoriza identifica\u021bia, consumul de resurse \u0219i colectarea \u201egunoiului\u201d.<\/p>\n<p>Este greu de imaginat c\u0103 dezvoltatorii ar dori s\u0103 scrie aceste fiche de configurare manual, f\u0103r\u0103 suport CRD, cu at\u00e2t mai pu\u021bin s\u0103 le sus\u021bin\u0103 \u0219i s\u0103 le depaneze ulterior.<\/p>\n<h4>Fluxul de lucru pentru desf\u0103\u0219urarea aplica\u021biilor<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Cre\u0103m o platform\u0103 kubernetes \u00een Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIlustra\u021bia de mai sus arat\u0103 cum s\u0103 desf\u0103\u0219ura\u021bi un resurs\u0103 personalizat\u0103 Pinterest \u00een clusterul Kubernetes:<\/p>\n<ol>\n<li>Dezvoltatorii interac\u021bioneaz\u0103 cu clusterul nostru Kubernetes prin CLI \u0219i interfa\u021ba utilizatorului.<\/li>\n<li>Instrumentele CLI \/ UI extrag fi\u0219ierele YAML de configurare pentru fluxul de lucru \u0219i alte propriet\u0103\u021bi de construc\u021bie (acela\u0219i identificator de versiune) din Artifactory, dup\u0103 care le trimit c\u0103tre Serviciul de Trimitere a Sarcinilor. Acest pas garanteaz\u0103 c\u0103 \u00een cluster vor fi livrate doar versiunile func\u021bionale. <\/li>\n<li>JSS este un portal pentru diverse platforme, inclusiv Kubernetes. Aici se face autentificarea utilizatorului, emiterea cotelor \u0219i o verificare par\u021bial\u0103 a configura\u021biei CRD-ului nostru.<\/li>\n<li>Dup\u0103 verificarea CRD-ului pe partea JSS, informa\u021biile sunt trimise c\u0103tre API-ul platformei k8s.<\/li>\n<li>Controlerul nostru CRD monitorizeaz\u0103 evenimentele de pe toate resursele personalizate. Acesta transform\u0103 CR \u00een resurse native k8s, adaug\u0103 modulele necesare, stabile\u0219te variabilele de mediu corespunz\u0103toare \u0219i efectueaz\u0103 alte sarcini auxiliare, garant\u00e2nd astfel aplica\u021biilor containerizate suportul infrastructural necesar.<\/li>\n<li>Apoi, controlerul CRD trimite datele ob\u021binute c\u0103tre API-ul Kubernetes pentru a fi procesate de planificator \u0219i pentru a fi puse \u00een func\u021biune.<\/li>\n<\/ol>\n<p>\n<b>Not\u0103<\/b>: acest workflow de deploy \u00een pre-lansare a fost creat pentru primii utilizatori ai noii platforme k8s. Acum ne afl\u0103m \u00een procesul de \u00eembun\u0103t\u0103\u021bire a acestui proces pentru a ne integra complet cu noua noastr\u0103 CI\/CD. Asta \u00eenseamn\u0103 c\u0103 nu putem discuta tot ce este legat de Kubernetes. A\u0219tept\u0103m cu ner\u0103bdare s\u0103 \u00eemp\u0103rt\u0103\u0219im experien\u021ba noastr\u0103 \u0219i s\u0103 vorbim despre progresul echipei \u00een aceast\u0103 direc\u021bie \u00een urm\u0103torul nostru blog \u00abBuilding a CI\/CD platform for Pinterest\u00bb.<\/p>\n<h4>Tipuri de resurse speciale<\/h4>\n<p>\n\u00cen func\u021bie de nevoile specifice ale Pinterest, am dezvoltat urm\u0103toarele CRD, care se potrivesc diferitelor fluxuri de lucru:<\/p>\n<ul>\n<li>PinterestService sunt servicii stateless care func\u021bioneaz\u0103 de mult timp. Multe dintre sistemele noastre principale se bazeaz\u0103 pe un set de astfel de servicii.<\/li>\n<li>PinterestJobSet modeleaz\u0103 seturi de lucr\u0103ri cu ciclu complet. Exist\u0103 un scenariu comun \u00een Pinterest \u00een care mai multe lucr\u0103ri pornesc acelea\u0219i containere \u00een paralel, f\u0103r\u0103 a depinde de alte procese similare.<\/li>\n<li>PinterestCronJob este utilizat pe scar\u0103 larg\u0103 \u00een combina\u021bie cu sarcini periodice mici. Aceasta este o interfa\u021b\u0103 pentru func\u021bionarea nativ\u0103 cron, cu mecanisme de suport Pinterest care se ocup\u0103 de securitate, trafic, jurnale \u0219i metrici.<\/li>\n<li>PinterestDaemon include daemon-urile infrastructurii. Aceast\u0103 familie continu\u0103 s\u0103 creasc\u0103 pe m\u0103sur\u0103 ce ad\u0103ug\u0103m tot mai mult suport pentru clusterele noastre.<\/li>\n<li>PinterestTrainingJob se extinde la procesele Tensorflow \u0219i Pytorch, asigur\u00e2nd acela\u0219i nivel de suport pe durata execu\u021biei, ca \u0219i celelalte CRD. Deoarece Tensorflow \u0219i alte sisteme de \u00eenv\u0103\u021bare automat\u0103 sunt utilizate activ \u00een Pinterest, am avut motive s\u0103 construim \u00een jurul lor un CRD separat.<\/li>\n<\/ul>\n<p>\nDe asemenea, lucr\u0103m la PinterestStatefulSet, care va fi adaptat \u00een cur\u00e2nd pentru stocarea de date \u0219i alte sisteme stateful.<\/p>\n<h4>Suport pentru mediu de execu\u021bie<\/h4>\n<p>\nC\u00e2nd un modul de aplica\u021bii este lansat \u00een Kubernetes, acesta prime\u0219te automat un certificat pentru a se identifica pe sine. Acest certificat este folosit pentru accesarea stoc\u0103rii secrete sau pentru comunicarea cu alte servicii prin mTLS. \u00centre timp, configuratorul de ini\u021bializare a containerelor \u0219i Daemon-ul vor \u00eenc\u0103rca toate dependen\u021bele necesare \u00eenainte de a lansa aplica\u021bia containerizat\u0103. C\u00e2nd totul este gata, sidecar-ul de trafic \u0219i Daemon-ul vor \u00eenregistra adresa IP a modulului \u00een Zookeeper-ul nostru, astfel \u00eenc\u00e2t clien\u021bii s\u0103 o poat\u0103 descoperi. Totul va func\u021biona, deoarece modulul de re\u021bea a fost configurat \u00eenainte de lansarea aplica\u021biei.<\/p>\n<p>Mai sus sunt prezentate exemple tipice de suport pentru sarcini de lucru \u00een timpul execu\u021biei. Pentru alte tipuri de sarcini de lucru poate fi necesar un suport pu\u021bin diferit, dar toate sunt prezentate sub form\u0103 de sidecar-uri la nivel de pod, noduri sau Daemon-uri la nivel de ma\u0219ini virtuale. Ne asigur\u0103m c\u0103 totul este implementat \u00een cadrul infrastructurii de gestionare \u0219i aliniat \u00eentre aplica\u021bii, ceea ce reduce semnificativ sarcina \u00een ceea ce prive\u0219te lucr\u0103rile tehnice \u0219i suportul pentru clien\u021bi.<\/p>\n<h4>Teste \u0219i QA<\/h4>\n<p>\nAm construit un pipeline de testare end-to-end pe baza infrastructurii de testare existente \u00een Kubernetes. Aceste teste se aplic\u0103 tuturor clusterelor noastre. Pipeline-ul nostru a suferit numeroase revizuiri \u00eenainte de a deveni parte a clusterului de produc\u021bie.<\/p>\n<p>Pe l\u00e2ng\u0103 sistemele de testare, avem sisteme de monitorizare \u0219i alertare care urm\u0103resc constant starea componentelor sistemului, consumul de resurse \u0219i alte m\u0103sur\u0103tori importante, notific\u00e2ndu-ne doar atunci c\u00e2nd este nevoie de interven\u021bie uman\u0103.<\/p>\n<h4>Alternative<\/h4>\n<p>\nAm analizat c\u00e2teva alternative pentru resurse personalizate, precum controlerele de acces muta\u021bionale \u0219i sistemele de \u0219abloane. Totu\u0219i, toate acestea vin cu dificult\u0103\u021bi considerabile \u00een operare, a\u0219a c\u0103 am ales calea CRD.<\/p>\n<p>Controlerul de acces muta\u021bional a fost folosit pentru introducerea sidecar-urilor, variabilelor de mediu \u0219i altor suporturi \u00een timpul execu\u021biei. Totu\u0219i, s-a confruntat cu diverse probleme, cum ar fi legarea resurselor \u0219i gestionarea ciclului lor de via\u021b\u0103, \u00een timp ce \u00een CRD aceste probleme nu apar.<\/p>\n<p><b>Not\u0103:<\/b> Sistemele de \u0219abloane, cum ar fi diagramele Helm, sunt de asemenea utilizate pe scar\u0103 larg\u0103 pentru a lansa aplica\u021bii cu configura\u021bii similare. Cu toate acestea, aplica\u021biile noastre de lucru sunt prea diverse pentru a fi gestionate prin \u0219abloane. De asemenea, \u00een timpul desf\u0103\u0219ur\u0103rii continue, utilizarea \u0219abloanelor va genera prea multe erori.<\/p>\n<h4>Lucr\u0103rile viitoare<\/h4>\n<p>\nAcum ne confrunt\u0103m cu o sarcin\u0103 mixt\u0103 pe toate clusterele noastre. Pentru a sus\u021bine astfel de procese de diferite tipuri \u0219i dimensiuni, lucr\u0103m \u00een urm\u0103toarele direc\u021bii:<\/p>\n<ul>\n<li>Conjunto-ul de clustere distribuie aplica\u021bii mari pe diferite clustere pentru a asigura scalabilitatea \u0219i stabilitatea.<\/li>\n<li>Asigurarea stabilit\u0103\u021bii, scalabilit\u0103\u021bii \u0219i vizibilit\u0103\u021bii clusterele pentru a crea leg\u0103turi \u00eentre aplica\u021bie \u0219i SLA-ul s\u0103u.<\/li>\n<li>Gestionarea resurselor \u0219i cotelor, astfel \u00eenc\u00e2t aplica\u021biile s\u0103 nu intre \u00een conflict \u00eentre ele, iar scalabilitatea clusterei s\u0103 fie controlat\u0103 de c\u0103tre noi.<\/li>\n<li>Noua platform\u0103 CI\/CD pentru sprijinirea \u0219i desf\u0103\u0219urarea aplica\u021biilor \u00een Kubernetes.<\/li>\n<\/ul>\n<p>Sursa: <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.2.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\/ro\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Construim o platform\u0103 Kubernetes la Pinterest | ProHoster","description":"De-a lungul anilor de existen\u021b\u0103, Pinterest a acumulat 300 de milioane de utilizatori care au creat peste 200 de miliarde de pini pe mai mult de 4 miliarde de panouri.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}