Afirandina platformek kubernetes li ser Pinterest

Bi salan, 300 mîlyon bikarhênerên Pinterest li ser zêdetirî 200 mîlyar panelan zêdetirî 4 mîlyar pin çêkirine. Ji bo xizmeta vê artêşê bikarhêneran û bingeha naverokê ya berfireh, portal bi hezaran karûbar pêşxistiye, ji mîkroxizmetên ku ji hêla çend CPU ve têne rêve kirin, heya monolîtên mezin ên ku li ser tevahî fîloya makîneyên virtual dixebitin. Û paşê wexta ku çavê şirketê li k8s ket. Çima "kube" li Pinterest baş xuya bû? Hûn ê li ser vê yekê ji wergera me ya gotarek vê dawiyê fêr bibin blog Pinterest engeneering.

Afirandina platformek kubernetes li ser Pinterest

Ji ber vê yekê, bi sedan mîlyon bikarhêner û bi sed mîlyar pin. Ji bo xizmeta vê artêşê ya bikarhêneran û bingeha naverokê ya berfireh, me bi hezaran karûbar pêşve xistin, ji mîkroxizmetên ku ji hêla çend CPU ve têne rêve kirin, heya monolîtên mezin ên ku li ser tevahî fîloyên makîneyên virtual dixebitin. Wekî din, me cûrbecûr çarçove hene ku dibe ku CPU, bîranîn, an gihîştina I/O jî hewce bike.

Di domandina vê zooyê amûran de, tîmê pêşkeftinê bi gelek pirsgirêkan re rû bi rû dimîne:

  • Ji bo endezyaran rêyek yekgirtî tune ku hawîrdorek hilberînê bimeşînin. Karûbarên bêdewlet, karûbarên dewletî û projeyên di bin pêşkeftina çalak de li ser bingehên teknolojiyên bi tevahî cûda ne. Ev bû sedema afirandina qursek perwerdehiyê ya tevahî ji bo endezyaran, û di heman demê de karê tîmê binesaziya me bi giranî tevlihev dike.
  • Pêşdebiran bi fîloya xwe ya makîneyên virtual barek mezin li ser rêveberên navxweyî diafirînin. Wekî encamek, operasyonên weha hêsan ên wekî nûvekirina OS an AMI hefte û mehan digire. Ev dibe sedem ku di rewşên bê guman rojane de giraniya xebatê zêde bibe.
  • Zehmetiyên di afirandina amûrên rêveberiya binesaziya gerdûnî de li ser çareseriyên heyî. Rewş ji hêla rastiya ku dîtina xwediyên makîneyên virtual ne hêsan e, tevlihevtir dibe. Ango, em nizanin gelo ev kapasîteyê dikare bi ewlehî were derxistin da ku li beşên din ên binesaziya me bixebite.

Pergalên orkestrasyona konteyner rêyek e ku meriv rêveberiya bargiraniyê yek bike. Ew derî ji zêdebûna leza pêşkeftinê re vedikin û rêveberiya binesaziyê hêsan dikin, ji ber ku hemî çavkaniyên ku di projeyê de beşdar dibin ji hêla yek pergala navendî ve têne rêve kirin.

Afirandina platformek kubernetes li ser Pinterest

Wêne 1: Pêşîniyên binesaziyê (pêbawerî, hilberîna pêşdebir, û karîgerî).

Tîma Platforma Rêvebiriya Cloud li Pinterest di sala 8 de K2017 keşf kir. Di nîvê yekem a 2017-an de, me piraniya kapasîteyên hilberîna xwe, di nav de API û hemî serverên me yên malperê, belge kiribû. Dûv re, me nirxandinek bêkêmasî ya pergalên cihêreng ên ji bo organîzekirina çareseriyên konteyneran, avakirina koman û xebata bi wan re kir. Di dawiya 2017 de, me biryar da ku Kubernetes bikar bînin. Ew di civata pêşdebiran de pir maqûl bû û bi berfirehî piştgirî bû.

Heya nuha, me amûrên xwe yên bootê yên komê li ser bingeha Kops ava kirine û hêmanên binesaziya heyî yên wekî torê, ewlehî, metrîk, têketin, rêveberiya nasnameyê, û seyrûsefera Kubernetes koç kirine. Me her weha ji bo çavkaniya xwe pergalek modelkirina bargiraniyê bicîh kir, ku tevliheviya wê ji pêşdebiran veşartî ye. Naha em balê dikişînin ser dabînkirina aramiya komê, mezinkirina wê û girêdana xerîdarên nû.

Kubernetes: Riya Pinterest

Destpêka Kubernetes-ê di pîvana Pinterest-ê de wekî platformek ku endezyarên me jê hez dikin bi gelek dijwariyan re hat.

Wekî pargîdaniyek mezin, me di amûrên binesaziyê de veberhênanek mezin kir. Nimûne amûrên ewlehiyê yên ku hilberandina sertîfîkayê û belavkirina mifteyê, hêmanên kontrolkirina trafîkê, pergalên vedîtina karûbarê, hêmanên dîtinê, û hêmanên şandina têketin û metrîkê digirin. Hemî ev yek ji ber sedemek hate berhev kirin: em di riya normal ya ceribandin û xeletiyê re derbas bûn, û ji ber vê yekê me xwest ku em hemî van amûran di binesaziya nû ya li ser Kubernetes de yek bikin li şûna ku em çerxa kevn li ser platformek nû ji nû ve îcad bikin. Vê nêzîkatiyê bi tevahî koçberiyê hêsan kir, ji ber ku hemî piştevaniya serîlêdanê jixwe heye û ne hewce ye ku ji nû ve were afirandin.

Ji hêla din ve, modelên pêşbînkirina barkirinê yên di Kubernetes bixwe de (wek bicîhkirin, kar, û setên Daemon) ji bo projeya me ne bes in. Van pirsgirêkên bikêrhatîbûnê astengên mezin in ku diçin Kubernetes. Mînakî, me bihîstiye ku pêşdebirên karûbar li ser mîhengên têketinê yên wenda an nerast gilî dikin. Me di heman demê de rastî karanîna nerast a motorên şablonê jî hat, dema ku bi sedan kopiyên bi heman taybetmendî û peywirê hatin afirandin, ku di encamê de pirsgirêkên kabûskirina xeletiyê derket.

Di heman demê de domandina guhertoyên cihêreng di heman komê de jî pir dijwar bû. Tevliheviya piştevaniya xerîdar bifikire heke hûn hewce ne ku bi hevdemî di gelek guhertoyên heman hawîrdora xebitandinê de, digel hemî pirsgirêk, xeletî û nûvekirinên wan, bixebitin.

Taybetmendî û Kontrolkerên Bikarhêner Pinterest

Ji bo ku endezyarên me pêkanîna Kubernetes-ê hêsantir bikin, û binesaziya xwe hêsan bikin û bilezînin, me pênaseyên xweya çavkaniya xwerû (CRD) pêşve xistine.

CRD fonksiyonên jêrîn peyda dikin:

  1. Berhevkirina çavkaniyên cihêreng ên xwecihî yên Kubernetes da ku ew wekî bargiraniyek yekane bixebitin. Mînakî, çavkaniyek PinterestService veqetandinek, karûbarek têketinê û nexşeyek veavakirinê vedihewîne. Ev dihêle ku pêşdebiran ji sazkirina DNS-ê xeman nebin.
  2. Piştgiriya serîlêdanê ya pêwîst bicîh bikin. Bikarhêner pêdivî ye ku li gorî mantiqa karsaziya xwe tenê li ser taybetmendiya konteynerê hûr bibe, dema ku kontrolkerê CRD hemî konteynerên destpêkê, guhêrbarên hawîrdorê û taybetmendiyên podê bicîh tîne. Ev ji bo pêşdebiran rehetiyek bingehîn a cihêreng peyda dike.
  3. Kontrolkerên CRD di heman demê de çerxa jiyanê ya çavkaniyên xwecihî jî îdare dikin û hebûna debugê baştir dikin. Di vê yekê de lihevkirina taybetmendiyên xwestî û rastîn, nûvekirina rewşa CRD û domandina têketinên bûyeran, û hêj bêtir. Bêyî CRD, pêşdebiran dê neçar bibin ku gelek çavkaniyan birêve bibin, ku tenê dê îhtîmala xeletiyê zêde bike.

Li vir mînakek PinterestService û çavkaniyek navxweyî ye ku ji hêla kontrolkerê me ve tê rêve kirin:

Afirandina platformek kubernetes li ser Pinterest

Wekî ku hûn li jor dibînin, ji bo piştgirîkirina konteynerek xwerû divê em konteynirek destpêkê û çend pêvekan yek bikin da ku ewlehî, dîtin û seyrûsefera torê peyda bikin. Wekî din, me şablonên nexşeya vesazkirinê afirandin û piştgirî ji bo şablonên PVC-yê ji bo karên hevîrê, û her weha şopandina gelek guhêrbarên hawîrdorê ji bo şopandina nasname, xerckirina çavkaniyê, û berhevkirina çopê pêk anî.

Zehmet e ku meriv xeyal bike ku pêşdebiran dixwazin van pelên mîhengê bi desta bêyî piştgirîya CRD binivîsin, bila bihêlin ku mîhengan bêtir biparêzin û xelet bikin.

Xebata bicihkirina sepanê

Afirandina platformek kubernetes li ser Pinterest

Wêneyê li jor destnîşan dike ka meriv çawa çavkaniyek xwerû ya Pinterest-ê li komek Kubernetes-ê bicîh dike:

  1. Pêşdebir bi navgîniya CLI û navgîniya bikarhêner bi koma meya Kubernetes re têkilî daynin.
  2. Amûrên CLI/UI pelên YAML-a veavakirina xebata xebatê û taybetmendiyên avahîsaziyê yên din (hevnasnameya guhertoyê) ji Artifactory vedigirin û dûv re wan dişînin Karûbarên Radestkirina Kar. Vê gav piştrast dike ku tenê guhertoyên hilberînê ji komê re têne radest kirin.
  3. JSS ji bo platformên cihêreng, tevî Kubernetes, dergehek e. Li vir bikarhêner tê pejirandin, kota têne derxistin û veavakirina CRD-ya me bi qismî tê kontrol kirin.
  4. Piştî kontrolkirina CRD-ê li alîyê JSS-ê, agahdarî ji API-a platforma k8s re tê şandin.
  5. Kontrolkerê meya CRD-ê li ser hemî çavkaniyên bikarhêner bûyeran dişopîne. Ew CR-an vediguhezîne çavkaniyên k8s yên xwecihî, modulên pêwîst lê zêde dike, guhêrbarên hawîrdorê yên guncan saz dike, û karên din ên piştgiriyê pêk tîne da ku pê ewle bibe ku serîlêdanên bikarhêner ên konteynir xwedî piştgirîya binesaziyê bes in.
  6. Dûv re kontrolkerê CRD daneyên wergirtî derbasî API-ya Kubernetes dike da ku ew ji hêla plansazker ve were hilberandin û hilberandin.

bingotin: Ev herikîna xebata pêş-serbestberdanê ya bicîhkirinê ji bo bikarhênerên yekem ên platforma nû ya k8s hate afirandin. Em niha di pêvajoya safîkirina vê pêvajoyê de ne ku bi tevahî bi CI/CD-ya xweya nû re tevbigerin. Ev tê vê wateyê ku em nikarin her tiştê ku bi Kubernetes ve girêdayî ye ji we re vebêjin. Em li bendê ne ku ezmûna xwe û pêşkeftina tîmê di vî alî de di posta xweya blogê ya paşîn de, "Avakirina platformek CI/CD ji bo Pinterest."

Cureyên çavkaniyên taybet

Li ser bingeha hewcedariyên taybetî yên Pinterest, me CRD-yên jêrîn pêşve xistin ku li gorî tevgerên xebatê yên cihêreng bin:

  • PinterestService karûbarên bêdewlet in ku ji demek dirêj ve têne xebitandin. Gelek pergalên me yên bingehîn li ser komek karûbarên weha ne.
  • Modelên PinterestJobSet karên hevîrê yên tevayî çêdike. Senaryoyek hevpar a li ser Pinterest ev e ku pir karan heman konteynir bi paralelî dimeşînin, bêyî ku pêvajoyên din ên mîna hev.
  • PinterestCronJob bi bargiraniyên piçûk ên peryodîk re bi berfirehî tê bikar anîn. Ev pêçek e ji bo xebata krona xwecihî ya bi mekanîzmayên piştevaniya Pinterest-ê yên ku ji ewlehî, seyrûsefer, têketin û metrikan berpirsiyar in.
  • PinterestDaemon Daemons binesaziyê digire. Ev malbat her ku diçe mezin dibe her ku em bêtir piştgirî didin komên xwe.
  • PinterestTrainingJob bi pêvajoyên Tensorflow û Pytorch re dirêj dibe, wekî hemî CRD-yên din heman astê piştgirîya dema xebatê peyda dike. Ji ber ku Pinterest bi çalak Tensorflow û pergalên fêrbûna makîneyê yên din bikar tîne, sedemek me hebû ku em li dora wan CRD-ek cihêreng ava bikin.

Em di heman demê de li ser PinterestStatefulSet jî dixebitin, ku dê di demek nêzîk de ji bo depoyên daneyê û pergalên din ên dewletparêz were adaptekirin.

Piştgiriya Runtime

Dema ku podek serîlêdanê li Kubernetes dimeşîne, ew bixweber sertîfîkayek distîne ku xwe nas bike. Ev sertîfîka ji bo gihîştina hilanîna veşartî an jî ji bo danûstandina bi karûbarên din re bi riya mTLS tê bikar anîn. Di vê navberê de, Container Init Configurator û Daemon dê berî ku serîlêdana konteynirkirî bimeşînin hemî girêdanên pêwîst dakêşin. Dema ku her tişt amade be, seyrûsefera trafîkê û Daemon dê navnîşana IP-ya modulê bi Zookeeper me re tomar bikin da ku xerîdar karibin wê kifş bikin. Hemî ev ê bixebite ji ber ku modula torê berî destpêkirina serîlêdanê hate mîheng kirin.

Li jor mînakên tîpîk ên piştgirîya dema xebitandinê ji bo barkêşan in. Cûreyên din ên bargiraniyê dibe ku piştgiriyek piçûktir hewce bike, lê ew hemî di forma kêlekên di asta pod, asta girêk an Daemons-asta makîneya virtual de têne. Em piştrast dikin ku ev hemî di nav binesaziya rêveberiyê de tête bicîh kirin û di nav serîlêdanan de domdar e, ku di dawiyê de di warê xebata teknîkî û piştevaniya xerîdar de barê giran kêm dike.

Testkirin û QA

Me li ser binesaziya ceribandina Kubernetes a heyî boriyek ceribandinê ya dawî-bi-dawî ava kir. Van ceribandinan ji bo hemî komên me derbas dibin. Beriya ku ew bibe beşek ji koma hilberê, xeta me di gelek guhertoyan re derbas bû.

Digel pergalên ceribandinê, pergalên me yên şopandin û hişyariyê hene ku bi domdarî rewşa pêkhateyên pergalê, xerckirina çavkaniyê û nîşanên din ên girîng dişopînin, tenê gava ku destwerdana mirovî hewce ye me agahdar dikin.

Alternatîfên

Me li hin alternatîfên çavkaniyên xwerû, wek kontrolkerên gihîştina mutasyonê û pergalên şablonê nihêrî. Lêbelê, ew hemî bi pirsgirêkên girîng ên xebitandinê re têne, ji ber vê yekê me riya CRD hilbijart.

Kontrolkerek pejirandina mutasyonel ji bo danasîna kêlek, guhêrbarên jîngehê, û piştgirîya dema xebitandinê ya din hate bikar anîn. Lêbelê, ew bi pirsgirêkên cihêreng re rû bi rû ma, wek girêdana çavkaniyê û rêveberiya çerxa jiyanê, ku pirsgirêkên weha di CRD-ê de dernakeve.

Têbînî: Pergalên şablonê yên wekî nexşeyên Helm di heman demê de bi berfirehî têne bikar anîn da ku serîlêdanên bi veavakirinên wekhev bimeşînin. Lêbelê, serîlêdanên xebata me pir cihêreng in ku bi karanîna şablonan têne rêvebirin. Di heman demê de di dema bicîhkirina domdar de dê di karanîna şablonan de pir xeletî hebin.

Karê pêşerojê

Em niha bi bargiraniyek tevlihev di nav hemî komên xwe de mijûl dibin. Ji bo piştgirîkirina pêvajoyên weha yên celeb û mezinahiyên cihêreng, em di warên jêrîn de dixebitin:

  • Berhevokek koman sepanên mezin li ser komikên cihêreng ji bo mezinbûn û aramiyê belav dike.
  • Ji bo afirandina girêdana serîlêdanê û SLA-ê, îstîqrara komê, pîvanbûn û xuyangiyê misoger dike.
  • Birêvebirina çavkaniyan û kotayan da ku serîlêdan bi hevûdu re nakokî nebin, û pîvana komê ji aliyê me ve tê kontrol kirin.
  • Platformek nû ya CI/CD-ê ji bo piştgirî û bicîhkirina serîlêdanên li ser Kubernetes.

Source: www.habr.com

Add a comment