{"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\/sq\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","title":{"rendered":"Krijimi i platform\u00ebs kubernetes n\u00eb Pinterest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Gjat\u00eb viteve t\u00eb saj t\u00eb ekzistenc\u00ebs, Pinterest ka 300 milion p\u00ebrdorues q\u00eb kan\u00eb krijuar m\u00eb shum\u00eb se 200 miliard pin\u00eb n\u00eb m\u00eb shum\u00eb se 4 miliard tabela. P\u00ebr t\u00eb sh\u00ebrbyer k\u00ebt\u00eb ushtri p\u00ebrdoruesish dhe baz\u00ebn e gjer\u00eb t\u00eb p\u00ebrmbajtjeve, portali ka zhvilluar mij\u00ebra sh\u00ebrbime, duke filluar nga mikrosh\u00ebrbimet q\u00eb mund t\u00eb menaxhohen nga disa CPU, deri te gjigant\u00ebt monolit\u00eb q\u00eb funksionojn\u00eb n\u00eb t\u00eb gjith\u00eb nj\u00eb park t\u00eb makinave virtuale. Dhe ja, erdhi momenti kur kompania i hodhi syt\u00eb mbi k8s. \u00c7far\u00eb e t\u00ebrhoqi \"kubin\" tek \"Pinterest\"? K\u00ebt\u00eb do ta m\u00ebsoni n\u00eb p\u00ebrkthimin ton\u00eb t\u00eb artikullit t\u00eb fundit nga <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/pinterest-engineering\">blogu i inxhinieris\u00eb s\u00eb Pinterest<\/a><\/noindex>.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Krijimi i platform\u00ebs kubernetes n\u00eb Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/71719121d8d0ed8e284b471c3bcb7328.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPra, qindra miliona p\u00ebrdorues dhe qindra miliard pin\u00eb. P\u00ebr t\u00eb sh\u00ebrbyer k\u00ebt\u00eb ushtri p\u00ebrdoruesish dhe baz\u00ebn e gjer\u00eb t\u00eb p\u00ebrmbajtjeve, ne kemi zhvilluar mij\u00ebra sh\u00ebrbime, duke filluar nga mikrosh\u00ebrbimet q\u00eb mund t\u00eb menaxhohen nga disa CPU, deri te gjigant\u00ebt monolit\u00eb q\u00eb funksionojn\u00eb n\u00eb t\u00eb gjith\u00eb nj\u00eb park t\u00eb makinave virtuale. P\u00ebr m\u00eb tep\u00ebr, ne kemi nj\u00eb p\u00ebrzgjedhje t\u00eb ndryshme framework-esh, t\u00eb cilat gjithashtu mund t\u00eb k\u00ebrkojn\u00eb burime CPU, memorie ose qasje n\u00eb operacione t\u00eb hyrjes-daljes.<\/p>\n<p>Gjat\u00eb mb\u00ebshtetjes s\u00eb k\u00ebtij zooteku mjetesh, ekipi i zhvillimit p\u00ebrballet me nj\u00eb s\u00ebr\u00eb problemesh:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Inxhinier\u00ebt nuk kan\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb unifikuar p\u00ebr t\u00eb nisur ambientin e pun\u00ebs. Sh\u00ebrbimet pa gjendje, sh\u00ebrbimet me gjendje dhe projektet n\u00eb zhvillim aktiv bazohen n\u00eb grupe t\u00eb ndryshme teknologjike. Kjo ka \u00e7uar n\u00eb krijimin e nj\u00eb kursi t\u00eb t\u00ebr\u00eb trajnimi p\u00ebr inxhinier\u00ebt, si dhe e komplikon seriozisht pun\u00ebn e ekipit ton\u00eb infrastrukturor.<\/li>\n<li>Zhvilluesit, t\u00eb cil\u00ebt kan\u00eb n\u00eb dispozicion parkun e tyre t\u00eb makinave virtuale, krijojn\u00eb nj\u00eb ngarkes\u00eb t\u00eb madhe p\u00ebr administrator\u00ebt e brendsh\u00ebm. Si rezultat, operacione t\u00eb thjeshta, si p\u00ebrdit\u00ebsimi i OS-s\u00eb ose AMI-s\u00eb, shtrihen p\u00ebr jav\u00eb dhe muaj. Kjo \u00e7on n\u00eb nj\u00eb rritje t\u00eb ngarkes\u00ebs n\u00eb situata q\u00eb duket se jan\u00eb krejt\u00ebsisht rutin\u00eb.<\/li>\n<li>V\u00ebshtir\u00ebsi n\u00eb krijimin e mjeteve globale p\u00ebr menaxhimin e infrastruktur\u00ebs mbi zgjidhjet ekzistuese. Situata shp\u00ebrndahet edhe m\u00eb shum\u00eb nga fakti se \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb gjejm\u00eb pronar\u00ebt e makinave virtuale. Pra, ne nuk dim\u00eb n\u00ebse \u00ebsht\u00eb e sigurt t\u00eb nxjerrim k\u00ebto kapacitete p\u00ebr t'u p\u00ebrdorur n\u00eb seksione t\u00eb tjera t\u00eb infrastruktur\u00ebs son\u00eb.<\/li>\n<\/ul>\n<p>\nSistemet e orkestrimit t\u00eb kontejner\u00ebve jan\u00eb nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb unifikuar menaxhimin e ngarkes\u00ebs s\u00eb pun\u00ebs. Ato ju hapin rrug\u00ebn p\u00ebr t\u00eb rritur shpejt\u00ebsin\u00eb e zhvillimit dhe e leht\u00ebsojn\u00eb menaxhimin e infrastruktur\u00ebs, pasi t\u00eb gjitha burimet e angazhuara n\u00eb projekt menaxhohen nga nj\u00eb sistem qendror.<\/p>\n<p><img decoding=\"async\" alt=\"Krijimi i platform\u00ebs kubernetes n\u00eb Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/8ce586ab31e593c99310ae2bf2a7bafb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Figura 1: Prioritetet e infrastruktur\u00ebs (besueshm\u00ebria, performanca e zhvilluesve dhe efikasiteti).<\/i><\/p>\n<p>Ekipa e Platform\u00ebs s\u00eb Menaxhimit t\u00eb Rejllave n\u00eb Pinterest u njoh me K8s n\u00eb vitin 2017. Gjat\u00eb gjysm\u00ebs s\u00eb par\u00eb t\u00eb vitit 2017 ne dokumentuam pjes\u00ebn m\u00eb t\u00eb madhe t\u00eb kapaciteteve tona t\u00eb prodhimit, duke p\u00ebrfshir\u00eb API-n\u00eb dhe t\u00eb gjitha <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/server\/\"   title=\"server\u00ebt web.\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1189\">server\u00ebt web.<\/a>M\u00eb pas ne kryem nj\u00eb vler\u00ebsim t\u00eb kujdessh\u00ebm t\u00eb sistemeve t\u00eb ndryshme t\u00eb orkestrimit t\u00eb zgjidhjeve t\u00eb kontejner\u00ebve, nd\u00ebrtimit t\u00eb klaster\u00ebve dhe operimit me to. N\u00eb fund t\u00eb vitit 2017 vendos\u00ebm t\u00eb shfryt\u00ebzojm\u00eb Kubernetes. Ai ishte mjaft fleksib\u00ebl dhe mb\u00ebshtetej gjer\u00ebsisht n\u00eb komunitetin e zhvilluesve.<\/p>\n<p>N\u00eb momentin e tanish\u00ebm, ne krijuam mjetet tona p\u00ebr ngarkimin e par\u00eb t\u00eb klasterit bazuar n\u00eb Kops dhe e kaluam n\u00eb Kubernetes komponentet ekzistuese t\u00eb infrastruktur\u00ebs \u2014 si rrjeti, siguria, metrikat, regjistrimi, menaxhimi i identitetit dhe trafiku. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, ne implementuam nj\u00eb sistem modelimi t\u00eb ngarkesave t\u00eb pun\u00ebs p\u00ebr burimin ton\u00eb, kompleksiteti i t\u00eb cilit \u00ebsht\u00eb i fshehur nga zhvilluesit. Tani jemi t\u00eb fokusuar n\u00eb sigurimin e stabilitetit t\u00eb klasterit, shkall\u00ebzimin e tij dhe lidhjen e klient\u00ebve t\u00eb rinj.<\/p>\n<h4>Kubernetes: Rruga e Pinterest<\/h4>\n<p>\nFillimi i pun\u00ebs me Kubernetes n\u00eb shkall\u00eb t\u00eb gjer\u00eb n\u00eb Pinterest si nj\u00eb platform\u00eb q\u00eb do t\u00eb donin inxhinier\u00ebt tan\u00eb, rezultoi me shum\u00eb v\u00ebshtir\u00ebsi.<\/p>\n<p>Si nj\u00eb kompani e madhe, ne kemi investuar shuma t\u00eb konsiderueshme n\u00eb mjetet infrastrukturore. Nj\u00eb shembull mund t\u00eb jen\u00eb mjetet e siguris\u00eb, t\u00eb cilat p\u00ebrcjellin certifikatat dhe shp\u00ebrndajn\u00eb \u00e7el\u00ebsat, komponentet e kontrollit t\u00eb trafikut, sistemet e zbulimit t\u00eb sh\u00ebrbimeve, komponentet e dukshm\u00ebris\u00eb dhe regjistrimit t\u00eb metrikave. T\u00eb gjitha k\u00ebto u mblodh\u00ebn jo thjesht k\u00ebshtu: ne kaluam nj\u00eb rrug\u00eb normale p\u00ebr prov\u00eb dhe gabim, dhe p\u00ebr k\u00ebt\u00eb arsye donim t\u00eb integronim t\u00eb gjith\u00eb k\u00ebt\u00eb pasuri n\u00eb infrastruktur\u00ebn e re n\u00eb Kubernetes n\u00eb vend q\u00eb t\u00eb shpiknim nga e para nj\u00eb bi\u00e7iklet\u00eb t\u00eb vjet\u00ebr n\u00eb nj\u00eb platform\u00eb t\u00eb re. Ky qasje, n\u00eb p\u00ebrgjith\u00ebsi, e thjeshtoi migrimin, pasi mb\u00ebshtetje p\u00ebr aplikacionet tashm\u00eb ekziston, nuk \u00ebsht\u00eb e nevojshme ta krijosh nga e para.<\/p>\n<p>Po an\u00ebn tjet\u00ebr, modelet e parashikimit t\u00eb ngarkesave n\u00eb vet\u00eb Kubernetes (si\u00e7 jan\u00eb shp\u00ebrndarjet, detyrat dhe grupe t\u00eb daemon-ve) nuk jan\u00eb t\u00eb mjaftueshme p\u00ebr projektin ton\u00eb. K\u00ebto probleme p\u00ebrdorimi p\u00ebrb\u00ebjn\u00eb pengesa t\u00eb m\u00ebdha n\u00eb rrug\u00ebn drejt kalimit n\u00eb Kubernetes. P\u00ebr shembull, kemi d\u00ebgjuar si zhvilluesit e sh\u00ebrbimeve ankohen p\u00ebr munges\u00ebn ose konfigurimin e pap\u00ebrshtatsh\u00ebm t\u00eb hyrjes. Gjithashtu, kemi hasur n\u00eb p\u00ebrdorimin e gabuar t\u00eb shabloneve, kur jan\u00eb krijuar qindra kopje me specifikime dhe detyra identike, q\u00eb ka \u00e7uar n\u00eb probleme t\u00eb tmerrshme me debugimin.<\/p>\n<p>Ishte gjithashtu shum\u00eb e v\u00ebshtir\u00eb t\u00eb mbahet versionet e ndryshme n\u00eb t\u00eb nj\u00ebjtin klaster. Imagjinoni v\u00ebshtir\u00ebsit\u00eb n\u00eb mb\u00ebshtetje p\u00ebr klient\u00ebt, n\u00ebse duhet t\u00eb punoni n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb me shum\u00eb versione t\u00eb t\u00eb nj\u00ebjtit ambient ekzekutimi, me t\u00eb gjitha problemet, defektet dhe azhurnimet e tyre.<\/p>\n<h4>Burimet dhe kontrollet e personalizuara t\u00eb Pinterest<\/h4>\n<p>\nP\u00ebr t\u00eb leht\u00ebsuar procesin e implementimit t\u00eb Kubernetes p\u00ebr inxhinier\u00ebt tan\u00eb, si dhe p\u00ebr t\u00eb thjeshtuar infrastruktur\u00ebn dhe p\u00ebr t\u00eb p\u00ebrshpejtuar funksionimin e saj, ne zhvilluam definicionet tona t\u00eb burimeve t\u00eb personalizuara (CRD).<\/p>\n<p>CRD ofrojn\u00eb funksionalitetet e m\u00ebposhtme:<\/p>\n<ol>\n<li>Kombinimi i burimeve t\u00eb ndryshme natively t\u00eb Kubernetes, n\u00eb m\u00ebnyr\u00eb q\u00eb ato t\u00eb funksionojn\u00eb si nj\u00eb ngarkes\u00eb e vetme. P\u00ebr shembull, burimi PinterestService p\u00ebrfshin shp\u00ebrndarjen, sh\u00ebrbimin e hyrjes dhe hart\u00ebn e konfigurimit. Kjo i lejon zhvilluesit t\u00eb mos shqet\u00ebsohen p\u00ebr konfigurimin e DNS.<\/li>\n<li>Implementimi i mb\u00ebshtetjes s\u00eb nevojshme p\u00ebr aplikacionet. P\u00ebrdoruesi duhet t\u00eb p\u00ebrqendrohet vet\u00ebm n\u00eb specifikimin e kontejnerit sipas logjik\u00ebs s\u00eb tij t\u00eb biznesit, nd\u00ebrsa kontrolluesi CRD implementon t\u00eb gjitha init-kontejner\u00ebt e nevojsh\u00ebm, variablat e mjedisit dhe specifikimet e pod-it. Kjo siguron nj\u00eb nivel ndryshe komoditeti p\u00ebr zhvilluesit.<\/li>\n<li>Kontrolluesit CRD gjithashtu menaxhojn\u00eb ciklin e jet\u00ebs s\u00eb burimeve t\u00eb tyre dhe rrisin disponueshm\u00ebrin\u00eb e debugimit. Kjo p\u00ebrfshin pajtimin e specifikimeve t\u00eb d\u00ebshiruara dhe reale, p\u00ebrdit\u00ebsimin e statusit CRD dhe mbajtjen e log-eve t\u00eb ngjarjeve dhe jo vet\u00ebm. Pa CRD, zhvilluesit do t\u00eb ishin t\u00eb detyruar t\u00eb menaxhonin nj\u00eb grup t\u00eb madh burimesh, \u00e7ka vet\u00ebm do t\u00eb rris\u00eb mund\u00ebsin\u00eb e gabimeve. <\/li>\n<\/ol>\n<p>\nJa nj\u00eb shembull i PinterestService dhe nj\u00eb burim t\u00eb brendsh\u00ebm q\u00eb menaxhohet nga kontrolluesi yn\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Krijimi i platform\u00ebs kubernetes n\u00eb Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/5f76107d023d18f535447a13d41404fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSi mund t\u00eb shihet m\u00eb sip\u00ebr, p\u00ebr t\u00eb mb\u00ebshtetur en\u00ebn e p\u00ebrdoruesit, na nevojitet t\u00eb integrojm\u00eb brenda saj nj\u00eb en\u00eb inicializimi dhe disa shtesa p\u00ebr t\u00eb siguruar sigurin\u00eb, dukshm\u00ebrin\u00eb dhe funksionimin me trafikun rrjet\u00ebs. P\u00ebr m\u00eb tep\u00ebr, ne krijuam skema konfigurimi dhe zbatuam mb\u00ebshtetje p\u00ebr shabllon PVC p\u00ebr pun\u00ebt e paketuar, si dhe gjurmimin e shum\u00eb variablave t\u00eb ambientit p\u00ebr t\u00eb ndjekur identifikimin, konsumimin e burimeve dhe mbledhjen e \"plehrave\".<\/p>\n<p>\u00cbsht\u00eb e v\u00ebshtir\u00eb t\u00eb imagjinohet se zhvilluesit do t\u00eb d\u00ebshironin t\u00eb shkruanin k\u00ebto skedat konfigurimi manualisht pa mb\u00ebshtetje CRD, p\u00ebr t\u00eb mos p\u00ebrmendur mb\u00ebshtetje t\u00eb m\u00ebtejshme dhe shp\u00ebrndarje t\u00eb konfigurations.<\/p>\n<h4>Fluksi i aplikacioneve t\u00eb shp\u00ebrndarjes<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Krijimi i platform\u00ebs kubernetes n\u00eb Pinterest\" src=\"\/wp-content\/uploads\/2019\/08\/08c953d5cf32244733cf4193c1b304bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb diagramin m\u00eb sip\u00ebr tregohet si t\u00eb shp\u00ebrndani burimin e p\u00ebrdoruesve Pinterest n\u00eb nj\u00eb klaster Kubernetes:<\/p>\n<ol>\n<li>Zhvilluesit nd\u00ebrveprojn\u00eb me klasterin ton\u00eb Kubernetes p\u00ebrmes CLI dhe nd\u00ebrfaqes p\u00ebrdoruesit.<\/li>\n<li>Mjetet CLI \/ UI nxjerrin skedar\u00ebt YAML t\u00eb konfigurimit t\u00eb fluksit t\u00eb pun\u00ebs dhe pron\u00ebsi t\u00eb tjera t\u00eb nd\u00ebrtimit (t\u00eb nj\u00ebjtin identifikues versioni) nga Artifactory, dhe m\u00eb pas i d\u00ebrgojn\u00eb ato n\u00eb Sh\u00ebrbimin e Dh\u00ebnies s\u00eb Pun\u00ebve. Ky hap siguron q\u00eb n\u00eb klaster t\u00eb d\u00ebrgohen vet\u00ebm versionet funksionale. <\/li>\n<li>JSS \u00ebsht\u00eb nj\u00eb port\u00eb p\u00ebr platforma t\u00eb ndryshme, duke p\u00ebrfshir\u00eb Kubernetes. K\u00ebtu ndodh autentikimi i p\u00ebrdoruesit, dh\u00ebnia e kuotave dhe verifikimi i pjes\u00ebmarr\u00ebs i konfigurimit t\u00eb CRD ton\u00eb.<\/li>\n<li>Pas verifikimit t\u00eb CRD-s\u00eb n\u00eb an\u00ebn e JSS-s\u00eb, informacioni d\u00ebrgohet n\u00eb API-n\u00eb e platform\u00ebs k8s.<\/li>\n<li>Kontrollori yn\u00eb CRD ndjek ngjarjet n\u00eb t\u00eb gjitha burimet e p\u00ebrdoruesve. Ai shnd\u00ebrron CR n\u00eb burime natyrale k8s, shton modulat e nevojshme, vendos variablat p\u00ebrkat\u00ebse t\u00eb ambientit dhe realizon pun\u00eb t\u00eb tjera mb\u00ebshtet\u00ebse, duke garantuar p\u00ebr aplikacionet e p\u00ebrdoruesve t\u00eb kontejner\u00ebve mb\u00ebshtetje t\u00eb mjaftueshme infrastrukturore.<\/li>\n<li>M\u00eb pas kontrollori CRD d\u00ebrgon t\u00eb dh\u00ebnat e marra n\u00eb API-n\u00eb Kubernetes p\u00ebr t'u procesuar nga planifikuesi dhe p\u00ebr t'u nxjerr\u00eb n\u00eb pun\u00eb.<\/li>\n<\/ol>\n<p>\n<b>Sh\u00ebnim<\/b>: ky ky ky ky ky ky ky ky ky ky ky ky ky ky ky ky. Tani jemi duke punuar p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar k\u00ebt\u00eb proces q\u00eb t\u00eb integrohemi plot\u00ebsisht me CI\/CD-n\u00eb ton\u00eb t\u00eb re. Kjo do t\u00eb thot\u00eb se nuk mund t\u00eb ndajm\u00eb t\u00eb gjith\u00eb detajet e lidhura me Kubernetes. Jemi n\u00eb pritje p\u00ebr t\u00eb ndar\u00eb eksperienc\u00ebn ton\u00eb dhe p\u00ebr t\u00eb folur p\u00ebr p\u00ebrparimin e ekipit n\u00eb k\u00ebt\u00eb drejtim n\u00eb postimin ton\u00eb t\u00eb ardhsh\u00ebm n\u00eb blogun \"Nd\u00ebrtimi i nj\u00eb platforme CI\/CD p\u00ebr Pinterest\".<\/p>\n<h4>Llojet e burimeve speciale<\/h4>\n<p>\nDuke u bazuar n\u00eb nevojat specifike t\u00eb Pinterest, ne zhvilluam CRD-t\u00eb e m\u00ebposhtme q\u00eb p\u00ebrshtaten p\u00ebr procese t\u00eb ndryshme pune:<\/p>\n<ul>\n<li>PinterestService \u00ebsht\u00eb sh\u00ebrbimet stateless q\u00eb funksionojn\u00eb prej koh\u00ebsh. Shum\u00eb nga sistemet tona kryesore bazohen n\u00eb nj\u00eb grup t\u00eb till\u00eb sh\u00ebrbimesh.<\/li>\n<li>PinterestJobSet modelon pun\u00ebt me cik\u00ebl t\u00eb plot\u00eb. N\u00eb Pinterest, ka nj\u00eb skenar t\u00eb zakonsh\u00ebm, ku disa pun\u00eb nisin t\u00eb nj\u00ebjtat kontejner\u00eb n\u00eb m\u00ebnyr\u00eb paralele, pa qen\u00eb e varur nga proceset e ngjashme.<\/li>\n<li>PinterestCronJob aplikohet gjer\u00ebsisht p\u00ebr ngarkesa t\u00eb vogla periodike. Kjo \u00ebsht\u00eb nj\u00eb mb\u00ebshtetje p\u00ebr funksionimin natyror t\u00eb cron me mekanizma mb\u00ebshtetje p\u00ebr Pinterest, t\u00eb cil\u00ebt jan\u00eb p\u00ebrgjegj\u00ebs p\u00ebr sigurin\u00eb, trafik, regjistrat dhe metrikat.<\/li>\n<li>PinterestDaemon p\u00ebrfshin daemon\u00ebt e infrastruktur\u00ebs. Ky grup vazhdon t\u00eb rritet, nd\u00ebrsa ne shtojm\u00eb mb\u00ebshtetje p\u00ebr klasteret tona.<\/li>\n<li>PinterestTrainingJob zgjerohet n\u00eb proceset Tensorflow dhe Pytorch, duke ofruar t\u00eb nj\u00ebjtin nivel mb\u00ebshtetjeje gjat\u00eb funksionimit, ashtu si t\u00eb gjitha CRD-t\u00eb e tjera. Duke qen\u00eb se p\u00ebrdorim shum\u00eb Tensorflow dhe sisteme t\u00eb tjera t\u00eb t\u00eb m\u00ebsuarit t\u00eb makinerive n\u00eb Pinterest, na erdhi n\u00eb ndihm\u00eb t\u00eb nd\u00ebrtosh nj\u00eb CRD t\u00eb ve\u00e7ant\u00eb p\u00ebr to.<\/li>\n<\/ul>\n<p>\nGjithashtu po punojm\u00eb mbi PinterestStatefulSet, q\u00eb s\u00eb shpejti do t\u00eb adaptohet p\u00ebr magazinat e t\u00eb dh\u00ebnave dhe sisteme t\u00eb tjera stateful.<\/p>\n<h4>Mb\u00ebshtetje p\u00ebr mjedisin e ekzekutimit<\/h4>\n<p>\nKur moduli i aplikacioneve starton n\u00eb Kubernetes, ai merr automatikisht nj\u00eb certifikat\u00eb p\u00ebr identifikimin e tij. Kjo certifikat\u00eb p\u00ebrdoret p\u00ebr qasje n\u00eb depo sekrete ose p\u00ebr komunikim me sh\u00ebrbime t\u00eb tjera p\u00ebrmes mTLS. Nd\u00ebrkoh\u00eb, konfiguratori i inicializimit t\u00eb konteiner\u00ebve dhe Daemon do t\u00eb ngarkojn\u00eb t\u00eb gjitha var\u00ebsit\u00eb e nevojshme para se t\u00eb nisin aplikacionin n\u00eb konteiner. Kur gjith\u00e7ka t\u00eb jet\u00eb gati, sidecar i trafikut dhe Daemon do t\u00eb regjistrojn\u00eb adres\u00ebn IP t\u00eb modulit n\u00eb Zookeeper ton\u00eb, n\u00eb m\u00ebnyr\u00eb q\u00eb klient\u00ebt ta zbulojn\u00eb at\u00eb. T\u00eb gjitha k\u00ebto do t\u00eb funksionojn\u00eb, pasi moduli rrjetor ishte konfiguruar para nisjes s\u00eb aplikacionit.<\/p>\n<p>M\u00eb sip\u00ebr jan\u00eb disa shembuj tipik\u00eb t\u00eb mb\u00ebshtetjes p\u00ebr ngarkesat gjat\u00eb ekzekutimit. P\u00ebr lloje t\u00eb tjera ngarkesash mund t\u00eb nevojitet pak mb\u00ebshtetje ndryshe, por t\u00eb gjitha ato paraqiten si sidecar n\u00eb nivel pod, n\u00eb nivel node ose Daemon n\u00eb nivelin e makinave virtuale. Ne sigurohemi q\u00eb gjith\u00e7ka t\u00eb jet\u00eb e implementuar brenda infrastruktur\u00ebs menaxhuese dhe e harmonizuar mes aplikacioneve, gj\u00eb q\u00eb n\u00eb fund ul ndjesh\u00ebm ngarkes\u00ebn n\u00eb pun\u00ebt teknike dhe mb\u00ebshtetje p\u00ebr klient\u00ebt.<\/p>\n<h4>Testimi dhe QA<\/h4>\n<p>\nNe krijuam nj\u00eb pipeline testimi end-to-end mbi infrastruktur\u00ebn ekzistuese t\u00eb testimeve t\u00eb Kubernetes. K\u00ebto teste shtrihen mbi t\u00eb gjitha klaster\u00ebt tan\u00eb. Pipeline yn\u00eb ka kaluar shum\u00eb riformatime para se t\u00eb b\u00ebhet pjes\u00eb e klasterit t\u00eb produktit.<\/p>\n<p>P\u00ebrve\u00e7 sistemeve t\u00eb testimit, ne kemi sisteme monitorimi dhe alarmi q\u00eb ndjekin p\u00ebrhersh\u00ebm gjendjen e komponent\u00ebve t\u00eb sistemit, konsumimin e burimeve dhe tregues t\u00eb tjer\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm, duke na njoftuar vet\u00ebm kur nevojitet nd\u00ebrhyrja e njeriut.<\/p>\n<h4>Alternativat<\/h4>\n<p>\nNe shqyrtuam disa alternativa t\u00eb burimeve t\u00eb personalizuara, si\u00e7 jan\u00eb kontrollet e aksesit dhe sistemet e shablloneve. Megjithat\u00eb, t\u00eb gjitha ato lidhen me v\u00ebshtir\u00ebsi t\u00eb konsiderueshme, k\u00ebshtu q\u00eb ne zgjodh\u00ebm t\u00eb shkonim me rrug\u00ebn e CRD.<\/p>\n<p>Kontrolli mujor i lejes \u00ebsht\u00eb p\u00ebrdorur p\u00ebr t\u00eb futur sidecar, variablin e ambientit dhe mb\u00ebshtetje t\u00eb tjera gjat\u00eb ekzekutimit. Megjithat\u00eb, ai hasi n\u00eb probleme t\u00eb ndryshme, si\u00e7 jan\u00eb lidhja e burimeve dhe menaxhimi i ciklit t\u00eb jet\u00ebs s\u00eb tyre, ndryshe nga CRD q\u00eb nuk ka k\u00ebto probleme.<\/p>\n<p><b>V\u00ebrejtje:<\/b> Sistemat e shablloneve, si diagramet Helm, p\u00ebrdoren gjer\u00ebsisht p\u00ebr t\u00eb b\u00ebr\u00eb lan\u00e7ime aplikacionesh me konfigurime t\u00eb ngjashme. Megjithat\u00eb, aplikacionet tona t\u00eb pun\u00ebs jan\u00eb shum\u00eb t\u00eb ndryshme p\u00ebr t'u menaxhuar p\u00ebrmes shablloneve. Gjithashtu, gjat\u00eb implementimit t\u00eb vazhduesh\u00ebm duke p\u00ebrdorur shabllone, do t\u00eb ket\u00eb shum\u00eb gabime.<\/p>\n<h4>Puna e ardhshme<\/h4>\n<p>\nAktualisht po merremi me nj\u00eb ngarkes\u00eb t\u00eb kombinuar n\u00eb t\u00eb gjitha klasteret tona. P\u00ebr t\u00eb mb\u00ebshtetur procese t\u00eb tilla t\u00eb llojeve dhe madh\u00ebsive t\u00eb ndryshme, ne punojm\u00eb n\u00eb drejtimet e m\u00ebposhtme:<\/p>\n<ul>\n<li>Kombinimi i klastereve shp\u00ebrndan aplikacione t\u00eb m\u00ebdha n\u00eb klastere t\u00eb ndryshme p\u00ebr t\u00eb siguruar shkall\u00ebzueshm\u00ebrin\u00eb dhe stabilitetin.<\/li>\n<li>T\u00eb sigurojm\u00eb stabilitet, shkall\u00ebzim dhe dukshm\u00ebri t\u00eb klasterit p\u00ebr t\u00eb krijuar lidhjen midis aplikacionit dhe SLA-s\u00eb s\u00eb tij.<\/li>\n<li>Menaxhimi i burimeve dhe kuotave, n\u00eb m\u00ebnyr\u00eb q\u00eb aplikacionet t\u00eb mos p\u00ebrplasen nd\u00ebrsjelltas, dhe shkalla e klasterit t\u00eb kontrollohet nga ana jon\u00eb.<\/li>\n<li>Platforma e re CI\/CD p\u00ebr mb\u00ebshtetje dhe shp\u00ebrndarjen e aplikacioneve n\u00eb Kubernetes.<\/li>\n<\/ul>\n<p>Burimi: <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\/sq\/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=\"sq_AL\" \/>\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\/sq\/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\udd47Po krijojm\u00eb platform\u00ebn kubernetes n\u00eb Pinterest | ProHoster","description":"Gjat\u00eb viteve t\u00eb ekzistenc\u00ebs s\u00eb Pinterest, 300 milion p\u00ebrdorues t\u00eb sh\u00ebrbimit kan\u00eb krijuar m\u00eb shum\u00eb se 200 miliard pin\u00eb n\u00eb mbi 4 miliard tabela.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/sozdayom-kubernetes-platformu-v-pinterest","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/37636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=37636"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37636\/revisions"}],"predecessor-version":[{"id":158433,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37636\/revisions\/158433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28249"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}