Kreye yon platfòm kubernetes sou Pinterest

Pandan ane yo, 300 milyon itilizatè Pinterest yo te kreye plis pase 200 milya broch sou plis pase 4 milya tablo. Pou sèvi lame itilizatè sa a ak baz kontni vas, pòtal la te devlope dè milye de sèvis, sòti nan mikwosèvis ki ka okipe pa kèk CPU, nan monolit jeyan ki kouri sou yon flòt antye nan machin vityèl. Lè sa a, moman sa a te rive lè je konpayi an te tonbe sou k8s. Poukisa "kib la" gade byen sou Pinterest? Ou pral aprann sou sa nan tradiksyon nou an nan yon atik resan soti nan blog Pinterest jeni.

Kreye yon platfòm kubernetes sou Pinterest

Se konsa, dè santèn de milyon itilizatè yo ak dè santèn de milya de broch. Pou sèvi lame itilizatè sa a ak baz kontni vas, nou devlope dè milye de sèvis, sòti nan mikwosèvis ki ka okipe pa kèk CPU, rive nan monolit jeyan ki kouri sou tout flòt machin vityèl. Anplis de sa, nou gen yon varyete de kad ki ka mande pou CPU, memwa, oswa aksè I/O.

Nan kenbe zou zouti sa a, ekip devlopman an fè fas a yon kantite defi:

  • Pa gen okenn fason inifòm pou enjenyè yo kouri yon anviwònman pwodiksyon. Sèvis Apatrid, Sèvis Stateful ak pwojè ki anba devlopman aktif yo baze sou pil teknoloji konplètman diferan. Sa a te mennen nan kreyasyon an nan yon kou fòmasyon antye pou enjenyè, epi tou seryezman konplike travay la nan ekip enfrastrikti nou an.
  • Devlopè ak pwòp flòt machin vityèl yo kreye yon gwo fado sou administratè entèn yo. Kòm yon rezilta, operasyon senp tankou aktyalizasyon OS oswa AMI pran semèn ak mwa. Sa a mennen nan ogmante kantite travay nan sitiyasyon w pèdi absoliman chak jou.
  • Difikilte pou kreye zouti jesyon enfrastrikti mondyal sou tèt solisyon ki egziste deja. Sitiyasyon an se plis konplike pa lefèt ke jwenn mèt pwopriyete yo nan machin vityèl se pa fasil. Sa vle di, nou pa konnen si kapasite sa a ka ekstrè san danje pou opere nan lòt pati nan enfrastrikti nou an.

Sistèm orchestrasyon veso yo se yon fason pou inifye jesyon chaj travay. Yo louvri pòt pou ogmante vitès devlopman ak senplifye jesyon enfrastrikti, paske tout resous ki enplike nan pwojè a se jere pa yon sèl sistèm santralize.

Kreye yon platfòm kubernetes sou Pinterest

Figi 1: Priyorite enfrastrikti (fyab, pwodiktivite pwomotè, ak efikasite).

Ekip Cloud Management Platform nan Pinterest te dekouvri K8s nan 2017. Nan premye mwatye ane 2017 la, nou te dokimante pi fò nan kapasite pwodiksyon nou yo, ki gen ladan API a ak tout sèvè entènèt nou yo. Apre sa, nou te fè yon evalyasyon konplè sou divès sistèm pou orchestration solisyon veso, bati grap ak travay avèk yo. Rive nan fen 2017, nou te deside sèvi ak Kubernetes. Li te byen fleksib ak lajman sipòte nan kominote a pwomotè.

Jouk jounen jodi a, nou te konstwi pwòp zouti gwoup nou yo ki baze sou Kops epi nou te imigre konpozan enfrastrikti ki deja egziste tankou rezo, sekirite, metrik, anrejistreman, jesyon idantite, ak trafik nan Kubernetes. Nou menm tou nou aplike yon sistèm modèl kantite travay pou resous nou an, konpleksite ki kache pou devlopè yo. Koulye a, nou konsantre sou asire estabilite gwoup la, echèl li ak konekte nouvo kliyan.

Kubernetes: fason Pinterest la

Kòmanse ak Kubernetes nan echèl Pinterest kòm yon platfòm ke enjenyè nou yo ta renmen te vini ak anpil defi.

Kòm yon gwo konpayi, nou te envesti anpil nan zouti enfrastrikti. Egzanp yo enkli zouti sekirite ki okipe pwosesis sètifika ak distribisyon kle, konpozan kontwòl trafik, sistèm dekouvèt sèvis, konpozan vizibilite, ak konpozan log ak metrik dispatch. Tout bagay sa yo te kolekte pou yon rezon: nou te ale nan chemen nòmal la nan esè ak erè, ak Se poutèt sa nou te vle entegre tout ekipman sa a nan enfrastrikti nan nouvo sou Kubernetes olye pou yo reenvante ansyen wou a sou yon nouvo platfòm. Apwòch sa a an jeneral senplifye migrasyon an, paske tout sipò aplikasyon an deja egziste epi yo pa bezwen kreye nan grafouyen.

Nan lòt men an, modèl previzyon chaj yo nan Kubernetes tèt li (tankou deplwaman, travay, ak seri Daemon) pa ase pou pwojè nou an. Pwoblèm itilizasyon sa yo se gwo baryè pou deplase nan Kubernetes. Pa egzanp, nou te tande devlopè sèvis yo plenyen konsènan paramèt koneksyon ki manke oswa ki pa kòrèk. Nou te rankontre tou itilizasyon kòrèk nan motè modèl, lè yo te kreye dè santèn de kopi ak menm spesifikasyon ak travay, ki te lakòz pwoblèm debogaj kochma.

Li te trè difisil tou pou kenbe diferan vèsyon nan menm gwoup la. Imajine konpleksite nan sipò kliyan si ou bezwen travay ansanm nan plizyè vèsyon nan menm anviwònman an ègzekutabl, ak tout pwoblèm yo, pinèz ak mizajou.

Pwopriyete itilizatè Pinterest ak kontwolè

Pou rann li pi fasil pou enjenyè nou yo aplike Kubernetes, epi senplifye ak akselere enfrastrikti nou an, nou devlope pwòp definisyon resous koutim nou yo (CRD).

CRD yo bay fonksyonalite sa yo:

  1. Konbine diferan resous Kubernetes natif natal pou yo travay kòm yon sèl chaj travay. Pou egzanp, resous PinterestService la gen ladan yon deplwaman, yon sèvis konekte, ak yon kat konfigirasyon. Sa a pèmèt devlopè yo pa enkyete sou mete kanpe DNS.
  2. Aplike sipò aplikasyon nesesè. Itilizatè a bezwen konsantre sèlman sou spesifikasyon veso a dapre lojik biznis yo, pandan y ap kontwolè CRD a aplike tout resipyan init ki nesesè yo, varyab anviwònman ak espesifikasyon gous yo. Sa a bay yon nivo fondamantal diferan nan konfò pou devlopè yo.
  3. Kontwolè CRD tou jere sik lavi resous natif natal yo ak amelyore disponiblite debug. Sa a gen ladan rekonsilyasyon espesifikasyon vle ak aktyèl, mete ajou estati CRD ak kenbe mòso bwa evènman, ak plis ankò. San CRD, devlopè yo ta dwe fòse yo jere plizyè resous, ki ta sèlman ogmante chans pou erè.

Men yon egzanp yon PinterestService ak yon resous entèn ke kontwolè nou an jere:

Kreye yon platfòm kubernetes sou Pinterest

Kòm ou ka wè pi wo a, pou sipòte yon veso koutim nou bezwen entegre yon veso init ak plizyè sipleman pou bay sekirite, vizibilite, ak trafik rezo. Anplis de sa, nou te kreye modèl kat konfigirasyon epi aplike sipò pou modèl PVC pou travay pakèt, ansanm ak swiv plizyè varyab anviwònman pou swiv idantite, konsomasyon resous, ak koleksyon fatra.

Li difisil imajine ke devlopè yo ta vle ekri fichye konfigirasyon sa yo alamen san sipò CRD, se pou kont li pi lwen kenbe ak debogaj konfigirasyon yo.

Workflow deplwaman aplikasyon an

Kreye yon platfòm kubernetes sou Pinterest

Imaj ki anwo a montre kijan pou deplwaye yon resous koutim Pinterest nan yon gwoup Kubernetes:

  1. Devlopè yo kominike avèk gwoup Kubernetes nou an atravè CLI ak koòdone itilizatè.
  2. Zouti CLI/UI yo rekipere fichye YAML konfigirasyon workflow yo ak lòt pwopriyete bati (menm ID vèsyon) nan Artifactory epi voye yo bay Sèvis Soumèt Travay la. Etap sa a asire ke se sèlman vèsyon pwodiksyon yo delivre nan gwoup la.
  3. JSS se yon pòtay pou plizyè platfòm, ki gen ladan Kubernetes. Isit la itilizatè a otantifye, kota yo bay ak konfigirasyon CRD nou an pasyèlman tcheke.
  4. Apre w fin tcheke CRD sou bò JSS la, yo voye enfòmasyon an nan API k8s platfòm la.
  5. Kontwolè CRD nou an kontwole evènman sou tout resous itilizatè yo. Li konvèti CR nan resous k8s natif natal, ajoute modil ki nesesè yo, mete varyab anviwònman ki apwopriye yo, epi fè lòt travay sipò pou asire aplikasyon pou itilizatè kontenè yo gen ase sipò enfrastrikti.
  6. Lè sa a, kontwolè CRD la pase done yo resevwa nan API Kubernetes pou li ka trete pa orè a epi mete nan pwodiksyon an.

Note: Sa a koule travay pre-lage nan deplwaman an te kreye pou premye itilizatè yo nan nouvo platfòm k8s la. Kounye a nou nan pwosesis pou rafine pwosesis sa a pou n entegre totalman ak nouvo CI/CD nou an. Sa vle di ke nou pa ka di ou tout bagay ki gen rapò ak Kubernetes. Nou espere pataje eksperyans nou ak pwogrè ekip la nan direksyon sa a nan pwochen pòs blog nou an, "Konstwi yon platfòm CI/CD pou Pinterest."

Kalite resous espesyal

Dapre bezwen espesifik Pinterest yo, nou devlope CRD sa yo pou adapte diferan workflows:

  • PinterestService se sèvis apatrid ki ap fonksyone depi lontan. Anpil nan sistèm debaz nou yo baze sou yon seri sèvis sa yo.
  • PinterestJobSet modèl travay pakèt sik konplè. Yon senaryo komen sou Pinterest se ke plizyè travay kouri resipyan yo menm an paralèl, kèlkeswa lòt pwosesis menm jan an.
  • PinterestCronJob lajman itilize ansanm ak ti chaj peryodik. Sa a se yon wrapper pou travay cron natif natal ak mekanis sipò Pinterest ki responsab pou sekirite, trafik, mòso bwa ak mezi.
  • PinterestDaemon gen ladann enfrastrikti Daemons. Fanmi sa a kontinye ap grandi pandan n ap ajoute plis sipò nan gwoup nou yo.
  • PinterestTrainingJob pwolonje nan pwosesis Tensorflow ak Pytorch, bay menm nivo sipò ègzekutabl ak tout lòt CRD yo. Depi Pinterest aktivman itilize Tensorflow ak lòt sistèm aprantisaj machin, nou te gen yon rezon pou konstwi yon CRD separe bò kote yo.

Nou ap travay tou sou PinterestStatefulSet, ki pral byento adapte pou depo done ak lòt sistèm eta.

Ègzekutabl sipò

Lè yon gous aplikasyon kouri sou Kubernetes, li otomatikman resevwa yon sètifika pou idantifye tèt li. Sètifika sa a itilize pou jwenn aksè nan depo sekrè oswa pou kominike ak lòt sèvis atravè mTLS. Pandan se tan, Container Init Configurator ak Daemon pral telechaje tout depandans ki nesesè yo anvan yo kouri aplikasyon an veso. Lè tout bagay pare, sidecar trafik la ak Daemon pral anrejistre adrès IP modil la ak Zookeeper nou an pou kliyan yo ka dekouvri li. Tout bagay sa a pral travay paske modil rezo a te configuré anvan aplikasyon an te lanse.

Pi wo a se egzanp tipik nan sipò ègzekutabl pou chaj travay. Lòt kalite chaj travay yo ka mande yon ti kras diferan sipò, men yo tout vini nan fòm sidecars nivo gous, nivo ne oswa vityèl Daemons nivo machin. Nou asire ke tout bagay sa yo deplwaye nan enfrastrikti jesyon an epi yo konsistan atravè aplikasyon yo, ki finalman siyifikativman diminye chay la an tèm de travay teknik ak sipò kliyan.

Tès ak QA

Nou bati yon tiyo tès bout-a-fen sou tèt enfrastrikti tès Kubernetes ki egziste deja. Tès sa yo aplike nan tout gwoup nou yo. Tiyo nou an te pase anpil revizyon anvan li te vin fè pati gwoup pwodwi a.

Anplis sistèm tès yo, nou gen siveyans ak sistèm alèt ki toujou ap kontwole estati konpozan sistèm yo, konsomasyon resous ak lòt endikatè enpòtan, ki fè nou konnen sèlman lè entèvansyon imen nesesè.

Altènativ yo

Nou te gade kèk altènativ pou resous koutim, tankou contrôleur aksè mitasyon ak sistèm modèl. Sepandan, yo tout vini ak gwo defi operasyonèl, kidonk nou te chwazi wout CRD la.

Yo te itilize yon kontwolè admisyon mutational pou prezante sidecars, varyab anviwònman, ak lòt sipò ègzekutabl. Sepandan, li te fè fas a divès pwoblèm, tankou obligatwa resous ak jesyon sik lavi, kote pwoblèm sa yo pa leve nan CRD.

Remak: Sistèm modèl tankou tablo Helm yo tou lajman itilize pou kouri aplikasyon ak konfigirasyon menm jan an. Sepandan, aplikasyon travay nou yo twò divès pou yo ka jere lè l sèvi avèk modèl. Epitou pandan deplwaman kontinyèl pral gen twòp erè lè w ap itilize modèl.

Travay kap vini

Kounye a nou ap fè fas ak yon chaj melanje atravè tout gwoup nou yo. Pou sipòte pwosesis sa yo nan diferan kalite ak gwosè, nou travay nan domèn sa yo:

  • Yon koleksyon grap distribye gwo aplikasyon atravè diferan grap pou évolutivité ak estabilite.
  • Asire estabilite gwoup, évolutivité ak vizibilite pou kreye koneksyon aplikasyon ak SLA.
  • Jere resous ak kota pou aplikasyon yo pa konfli youn ak lòt, epi echèl gwoup la kontwole sou pati nou an.
  • Yon nouvo platfòm CI/CD pou sipòte ak deplwaye aplikasyon sou Kubernetes.

Sous: www.habr.com

Add nouvo kòmantè