Kugadzira kubernetes chikuva paPinterest

Kwemakore, vashandisi vePinterest 300 miriyoni vakagadzira anopfuura mabhiriyoni mazana maviri epini pamabhodhi anopfuura mabhiriyoni mana. Kushandira iyi uto revashandisi uye yakakura yemukati base, iyo portal yakagadzira zviuru zvemasevhisi, kubva kumamicroservices anogona kubatwa nemaCPU mashoma, kune hofori monoliths inomhanya pane yakazara ngarava yemashini chaiwo. Zvino nguva yakasvika apo maziso ekambani akawira pak200s. Sei "cube" yaitaridzika zvakanaka paPinterest? Iwe uchadzidza nezve izvi kubva mushanduro yedu yechinyorwa chazvino kubva blog Pinterest engeneering.

Kugadzira kubernetes chikuva paPinterest

Saka, mazana emamiriyoni evashandisi uye mazana emabhiriyoni emapini. Kushandira iyi uto revashandisi uye yakakura yemukati base, isu takagadzira zviuru zvemasevhisi, kubva kumamicroservices anogona kubatwa nemaCPU mashoma, kune hofori monoliths inomhanya pazvikepe zvese zvemashini chaiwo. Pamusoro pezvo, isu tine akasiyana masisitimu angangodawo CPU, ndangariro, kana I/O kuwana.

Mukuchengetedza iyi zoo yezvishandiso, timu yekusimudzira inotarisana nematambudziko akati wandei:

  • Iko hakuna nzira yakafanana yekuti mainjiniya aite nharaunda yekugadzira. Stateless masevhisi, Stateful masevhisi uye mapurojekiti ari pasi pekusimudzira anoshanda akavakirwa pane akasiyana zvachose tekinoroji stacks. Izvi zvakakonzera kugadzirwa kwese kosi yekudzidzira mainjiniya, uye zvakare kuomesa zvakanyanya basa rechikwata chedu chezvivakwa.
  • Vagadziri vane ngarava yavo yemakina chaiwo vanogadzira mutoro wakakura kune vatariri vemukati. Nekuda kweizvozvo, mashandiro akareruka akadai sekuvandudza OS kana AMI anotora mavhiki nemwedzi. Izvi zvinotungamirira kukuwedzera kwebasa mumamiriro ezvinhu anoita semazuva ose.
  • Zvinetso mukugadzira maturusi epasi rose ekugadzirisa zvivakwa pamusoro pezvigadziriso zviripo. Mamiriro acho akawedzera kuomeswa nenyaya yekuti kutsvaga varidzi vemichina chaiyo hakusi nyore. Ndokunge, isu hatizive kana ichi chiyero chinogona kuburitswa zvakachengeteka kushanda mune zvimwe zvikamu zvezvivakwa zvedu.

Container orchestration masisitimu inzira yekubatanidza manejimendi ebasa. Vanovhura musuwo wekuwedzera kukurumidza kusimudzira uye kurerutsa manejimendi ezvivakwa, sezvo zviwanikwa zvese zvinosanganisirwa mupurojekiti zvinotungamirwa neimwe yepakati system.

Kugadzira kubernetes chikuva paPinterest

Mufananidzo 1: Zvivakwa zvekutanga (kuvimbika, kugadzirwa kwemugadziri, uye kugona).

Chikwata cheCloud Management Platform kuPinterest chakawana maK8 muna 2017. Pakazosvika hafu yekutanga ya2017, takange tanyora akawanda ezvatinogona kugadzira, kusanganisira iyo API uye ese ewebhu maseva edu. Mushure mezvo, takaita ongororo yakakwana yeakasiyana masisitimu ekugadzirisa zvigadziriso zvemidziyo, kuvaka masumbu uye kushanda nawo. Kunopera kwa2017, takasarudza kushandisa Kubernetes. Yainyatso shanduka uye yakatsigirwa zvakanyanya munharaunda yevagadziri.

Parizvino, takavaka edu ega maturusi ebhutsu maturusi akavakirwa paKops uye takatamisa zvinhu zviripo zvezvivakwa zvakaita setiweki, chengetedzo, metrics, kutema miti, identity management, uye traffic kuKubernetes. Isu takaitawo basa rekuita modelling system kune yedu sosi, iyo yakaoma yakavanzika kubva kune vanogadzira. Iye zvino isu takatarisana nekuona kugadzikana kwesumbu, kuyera uye nekubatanidza vatengi vatsva.

Kubernetes: Iyo Pinterest Nzira

Kutanga neKubernetes pachiyero chePinterest sepuratifomu yaizoda mainjiniya edu yakauya nematambudziko mazhinji.

Sekambani hombe, takaisa mari yakawanda mumidziyo yezvivakwa. Mienzaniso inosanganisira maturusi ekuchengetedza anobata kugadzirisa zvitupa uye kugovera kiyi, zvikamu zvekudzora traffic, masisitimu ekutsvaga sevhisi, zvikamu zvekuonekwa, uye log uye metrics ekutumira zvikamu. Zvese izvi zvakaunganidzwa nechikonzero: takapfuura neyakajairwa nzira yekuyedza uye kukanganisa, uye nekudaro taida kubatanidza zvese izvi zvishandiso muzvivakwa zvitsva paKubernetes pane kudzoreredza vhiri rekare pachikuva chitsva. Iyi nzira yakarerusa kutama, sezvo rutsigiro rwese rwekushandisa rwatovepo uye harufanire kugadzirwa kubva kutanga.

Kune rimwe divi, mhando dzekufanotaura kwemutoro muKubernetes pachayo (sekutumirwa, mabasa, uye seti yeDaemon) haina kukwana purojekiti yedu. Idzi nyaya dzekushandisa zvipingamupinyi zvakakura zvekuenda kuKubernetes. Semuenzaniso, takanzwa vanogadzira masevhisi vachinyunyuta nezvekushaikwa kana kusarongeka kwekupinda. Isu takasanganawo nekushandiswa kusiri iko kweinjini dze template, apo mazana emakopi akagadzirwa aine dhizaini uye basa rakafanana, izvo zvakakonzera matambudziko ehusiku.

Zvakanga zvakaoma zvikuru kuchengetedza shanduro dzakasiyana musumbu rimwe chete. Fungidzira kuoma kwekutsigirwa kwevatengi kana iwe uchida kushanda panguva imwe chete mune akawanda mavhezheni eiyo yakafanana runtime nharaunda, nematambudziko avo ese, tsikidzi uye zvigadziriso.

Pinterest User Properties uye Controllers

Kuita kuti zvive nyore kuti mainjiniya edu ashandise Kubernetes, uye kurerutsa uye nekumhanyisa zvivakwa zvedu, takagadzira yedu yetsika zviwanikwa tsananguro (CRDs).

MaCRD anopa zvinotevera kushanda:

  1. Kubatanidza akasiyana ekuzvarwa Kubernetes zviwanikwa kuitira kuti vashande sebasa rimwe chete. Semuenzaniso, iyo PinterestService sosi inosanganisira kutumirwa, sevhisi yekupinda, uye mepu yekumisikidza. Izvi zvinobvumira vanogadzira kuti vasanetseka nezve kumisikidza DNS.
  2. Isai inodiwa application rutsigiro. Mushandisi anofanirwa kutarisa chete pane yezvigadziro zvinoenderana nebhizinesi ravo logic, ukuwo CRD controller inoshandisa ese anodiwa init midziyo, nharaunda siyana uye pod yakatarwa. Izvi zvinopa mwero wakasiyana wakasiyana wekunyaradza kune vanogadzira.
  3. Vatongi veCRD vanogadzirisawo mararamiro ezviwanikwa zvechivanhu uye vanovandudza kuwanikwa kwedebug. Izvi zvinosanganisira kuyananisa zvinodiwa uye chaizvo zvakatemwa, kuvandudza mamiriro eCRD uye kuchengetedza matanda ezviitiko, nezvimwe. Pasina CRD, vanogadzira vaizomanikidzwa kubata zviwanikwa zvakawanda, izvo zvinongowedzera mukana wekukanganisa.

Heino muenzaniso wePinterestService uye yemukati sosi inotungamirwa nemutungamiriri wedu:

Kugadzira kubernetes chikuva paPinterest

Sezvauri kuona pamusoro, kutsigira chigadziko chetsika tinoda kubatanidza init mudziyo uye akati wandei ma-add-on kupa chengetedzo, kuoneka, uye network traffic. Pamusoro pezvo, isu takagadzira matemplate emepu ekugadzirisa uye takaisa rutsigiro rwePVC matemplate ebasa rebatch, pamwe nekutevedzwa kwenzvimbo dzakasiyana siyana dzekutevera kuzivikanwa, kushandiswa kwezviwanikwa, uye kuunganidzwa kwemarara.

Zvakaoma kufungidzira kuti vanogadzira vangada kunyora aya mafaera ekumisikidza neruoko pasina CRD rutsigiro, rega kuenderera mberi nekuchengetedza uye kugadzirisa zvigadziriso.

Kufambiswa kwekushandisa application

Kugadzira kubernetes chikuva paPinterest

Mufananidzo uri pamusoro unoratidza maitiro ekuisa Pinterest tsika sosi kune Kubernetes cluster:

  1. Vagadziri vanodyidzana neyedu Kubernetes cluster kuburikidza neCLI uye mushandisi interface.
  2. Maturusi eCLI/UI anotora mafaera ekufambisa kwekushanda kweYAML uye zvimwe zvivakwa zvekuvaka (same vhezheni ID) kubva kuArtifactory wobva wazviendesa kuJob Submission Service. Iyi nhanho inovimbisa kuti chete shanduro dzekugadzira dzinounzwa kune sumbu.
  3. JSS igedhi remapuratifomu akasiyana, kusanganisira Kubernetes. Pano mushandisi anotenderwa, makoti anopihwa uye kumisikidzwa kweCRD yedu inotariswa zvishoma.
  4. Mushure mekutarisa iyo CRD padivi reJSS, ruzivo rwunotumirwa kune k8s papuratifomu API.
  5. Yedu CRD controller inotarisisa zviitiko pane ese evashandisi zviwanikwa. Iyo inoshandura maCR kuita echinyakare k8s zviwanikwa, inowedzera anodiwa mamodule, inoseta akakodzera nharaunda inosiyana, uye inoita rimwe basa rekutsigira kuti ive nechokwadi chekuti midziyo yemushandisi ine tsigiro yakakwana.
  6. Iyo CRD controller inobva yapfuudza iyo yakagamuchirwa data kuKubernetes API kuitira kuti igone kugadziriswa neanoronga uye kuiswa mukugadzira.

taura pfungwa: Uku kusati kwaburitswa basa kuyerera kwekutumirwa kwakagadzirwa kune vekutanga vashandisi veiyo k8s papuratifomu. Parizvino tiri mushishi yekunatsurudza hurongwa uhu kuti hubatane zvizere neCI/CD yedu itsva. Izvi zvinoreva kuti isu hatigone kukuudza zvese zvine chekuita neKubernetes. Tinotarisira kugovera ruzivo rwedu uye kufambira mberi kwechikwata munzira ino mune yedu inotevera blog post, "Kuvaka CI/CD chikuva chePinterest."

Mhando dzezviwanikwa zvakakosha

Zvichienderana nezvinodiwa chaizvo naPinterest, takagadzira maCRD anotevera kuti aenderane nekufambiswa kwebasa kwakasiyana:

  • PinterestService masevhisi asingaverengeki anga achimhanya kwenguva yakareba. Mazhinji emasisitimu edu epakati akavakirwa pane seti yemasevhisi akadaro.
  • PinterestJobSet modhi yakazara kutenderera batch mabasa. Chiitiko chakajairwa paPinterest ndechekuti mabasa akawanda anomhanyisa midziyo yakafanana, zvisinei nemamwe maitiro akafanana.
  • PinterestCronJob inoshandiswa zvakanyanya pamwe chete nediki periodic mitoro. Ichi chiputiriso chebasa rekuzvarwa cron nePinterest tsigiro nzira dzine basa rekuchengetedza, traffic, matanda uye metrics.
  • PinterestDaemon inosanganisira zvivakwa Daemons. Mhuri iyi inoramba ichikura apo tinowedzera rutsigiro kumapoka edu.
  • PinterestTrainingJob inotambanukira kuTensorflow nePytorch maitiro, ichipa iyo yakafanana nhanho yerutsigiro rwenguva yekumhanya semamwe ese maCRD. Sezvo Pinterest ichishingairira kushandisa Tensorflow uye mamwe masisitimu ekudzidza muchina, takanga tine chikonzero chekuvaka yakaparadzana CRD yakavatenderedza.

Isu tiri kushandawo paPinterestStatefulSet, iyo ichakurumidza kuchinjirwa kudura re data uye mamwe masisitimu ane hunyanzvi.

Runtime rutsigiro

Kana application pod ichimhanya paKubernetes, inogashira otomatiki chitupa chekuzvizivisa. Ichi chitupa chinoshandiswa kuwana chengetedzo yakavanzika kana kutaurirana nemamwe masevhisi kuburikidza nemTLS. Zvichakadaro, iyo Container Init Configurator uye Daemon inodhawunirodha ese anodiwa anotsamira asati amhanyisa application ine mudziyo. Kana zvese zvagadzirwa, traffic sidecar uye Daemon inonyoresa IP kero yemodule neZookeeper yedu kuitira kuti vatengi vazviwane. Zvese izvi zvichashanda nekuti network module yakagadziriswa application isati yatangwa.

Izvo zviri pamusoro apa mienzaniso yakajairika yeruntime rutsigiro rwemabasa. Mamwe marudzi emabasa angada tsigiro yakati siyanei, asi ese anouya ari muchimiro chepod-level sidecars, node-level kana virtual muchina-level Daemons. Isu tinoita shuwa kuti zvese izvi zvakaiswa mukati meiyo manejimendi zvivakwa uye zvinopindirana pane ese maapplication, izvo zvinozopedzisira zvaderedza zvakanyanya mutoro maererano nebasa rehunyanzvi uye rutsigiro rwevatengi.

Kuedza uye QA

Isu takavaka pombi yekupedzisira-yekupedzisira-yekupedzisira pamusoro peiyo iripo Kubernetes bvunzo zvivakwa. Miedzo iyi inoshanda kumasumbu edu ese. Pombi yedu yakapfuura nekudzokororwa kwakawanda isati yave chikamu cheboka rezvigadzirwa.

Pamusoro pemasystem ekuyedza, isu tine ekutarisa uye yekuzivisa masisitimu anogara achitarisa mamiriro ehurongwa hwezvikamu, mashandisirwo ezviwanikwa uye zvimwe zvakakosha zviratidzo, zvichitizivisa chete kana kupindira kwevanhu kuchidikanwa.

Alternatives

Takatarisa dzimwe nzira dzezviwanikwa zvetsika, senge mutation access controllers uye template masisitimu. Nekudaro, vese vanouya nematambudziko akakosha ekushanda, saka takasarudza nzira yeCRD.

A mutational admission controller yakashandiswa kuunza sidecars, nharaunda siyana, uye imwe runtime rutsigiro. Nekudaro, yakatarisana nezvinetso zvakasiyana, senge zviwanikwa zvinosunga uye manejimendi ehupenyu, uko matambudziko akadaro asingamuke muCRD.

Cherechedza: Matemplate masisitimu akadai seHelm machati anoshandiswawo zvakanyanya kumhanyisa maapplication ane akafanana magadzirirwo. Nekudaro, mashandisirwo edu ebasa akasiyana zvakanyanya kuti agadziriswe uchishandisa matemplate. Zvakare panguva yekuenderera mberi kwekuendesa pachave nezvikanganiso zvakawandisa kana uchishandisa matemplate.

Basa riri kuuya

Parizvino tiri kubata nemutoro wakavhengana pamasumbu edu ese. Kutsigira maitiro akadaro emhando dzakasiyana uye saizi, tinoshanda munzvimbo dzinotevera:

  • Muunganidzwa wemasumbu anogovera zvikumbiro zvakakura mumasumbu akasiyana siyana kuti scalability uye kugadzikana.
  • Kuve nechokwadi chekugadzikana kwesumbu, scalability uye kuoneka kugadzira application yekubatanidza uye SLAs.
  • Kugadzirisa zviwanikwa uye makoti kuitira kuti zvikumbiro zvisapesane, uye chiyero cheboka chinodzorwa kwatiri.
  • Iyo itsva CI/CD chikuva chekutsigira uye kutumira zvikumbiro paKubernetes.

Source: www.habr.com

Voeg