Ħolqien ta' pjattaforma kubernetes fuq Pinterest

Matul is-snin, it-300 miljun utent ta 'Pinterest ħolqu aktar minn 200 biljun pin fuq aktar minn 4 biljun bord. Biex iservi din l-armata ta 'utenti u bażi vasta ta' kontenut, il-portal żviluppa eluf ta 'servizzi, li jvarjaw minn mikroservizzi li jistgħu jiġu mmaniġġjati minn ftit CPUs, għal monoliti ġganti li jaħdmu fuq flotta sħiħa ta' magni virtwali. U mbagħad wasal il-mument meta l-għajnejn tal-kumpanija waqgħu fuq k8s. Għaliex il-“kubu” deher tajjeb fuq Pinterest? Inti se titgħallem dwar dan mit-traduzzjoni tagħna ta 'artiklu reċenti minn blog Pinterest inġinerija.

Ħolqien ta' pjattaforma kubernetes fuq Pinterest

Allura, mijiet ta 'miljuni ta' utenti u mijiet ta 'biljuni ta' labar. Biex naqdu din l-armata ta 'utenti u bażi vasta ta' kontenut, żviluppajna eluf ta 'servizzi, li jvarjaw minn mikroservizzi li jistgħu jiġu mmaniġġjati minn ftit CPUs, għal monoliti ġganti li jaħdmu fuq flotot sħaħ ta' magni virtwali. Barra minn hekk, għandna varjetà ta 'oqfsa li jistgħu jeħtieġu wkoll aċċess għal CPU, memorja jew I/O.

Fiż-żamma ta 'dan iż-żoo ta' għodod, it-tim ta 'żvilupp jiffaċċja għadd ta' sfidi:

  • M'hemm l-ebda mod uniformi għall-inġiniera biex imexxu ambjent ta 'produzzjoni. Servizzi mingħajr stat, servizzi Stateful u proġetti taħt żvilupp attiv huma bbażati fuq munzelli ta 'teknoloġija kompletament differenti. Dan wassal għall-ħolqien ta 'kors sħiħ ta' taħriġ għall-inġiniera, u jikkomplika wkoll serjament ix-xogħol tat-tim tal-infrastruttura tagħna.
  • L-iżviluppaturi bil-flotta tagħhom ta' magni virtwali joħolqu piż kbir fuq l-amministraturi interni. Bħala riżultat, operazzjonijiet sempliċi bħal aġġornament tal-OS jew AMI jieħdu ġimgħat u xhur. Dan iwassal għal żieda fl-ammont ta’ xogħol f’sitwazzjonijiet li jidhru assolutament ta’ kuljum.
  • Diffikultajiet fil-ħolqien ta' għodod ta' ġestjoni tal-infrastruttura globali fuq is-soluzzjonijiet eżistenti. Is-sitwazzjoni hija kkumplikata aktar mill-fatt li s-sejba tas-sidien ta 'magni virtwali mhix faċli. Jiġifieri, ma nafux jekk din il-kapaċità tistax tiġi estratta b'mod sikur biex topera f'partijiet oħra tal-infrastruttura tagħna.

Is-sistemi tal-orkestrazzjoni tal-kontejners huma mod kif tgħaqqad il-ġestjoni tal-piż tax-xogħol. Jiftħu l-bieb għal żieda fil-veloċità tal-iżvilupp u jissimplifikaw il-ġestjoni tal-infrastruttura, peress li r-riżorsi kollha involuti fil-proġett huma ġestiti minn sistema ċentralizzata waħda.

Ħolqien ta' pjattaforma kubernetes fuq Pinterest

Figura 1: Prijoritajiet tal-infrastruttura (affidabbiltà, produttività tal-iżviluppatur, u effiċjenza).

It-tim tal-Cloud Management Platform f'Pinterest skopra K8s fl-2017. Sal-ewwel nofs tal-2017, konna ddokumentajna l-biċċa l-kbira tal-kapaċitajiet tal-produzzjoni tagħna, inklużi l-API u s-servers tal-web tagħna kollha. Wara, għamilna valutazzjoni bir-reqqa ta 'diversi sistemi għall-orkestrazzjoni ta' soluzzjonijiet ta 'kontejners, nibnu clusters u naħdmu magħhom. Lejn tmiem l-2017, iddeċidejna li nużaw Kubernetes. Kien pjuttost flessibbli u appoġġjat b'mod wiesa 'fil-komunità tal-iżviluppaturi.

Sal-lum, bnejna l-għodod tal-boot tal-clusters tagħna stess ibbażati fuq Kops u emigrajna komponenti tal-infrastruttura eżistenti bħal netwerking, sigurtà, metriċi, logging, ġestjoni tal-identità, u traffiku lejn Kubernetes. Implimentajna wkoll sistema ta 'mudellar ta' xogħol għar-riżors tagħna, li l-kumplessità tagħha hija moħbija mill-iżviluppaturi. Issa aħna ffukati fuq li niżguraw l-istabbiltà tar-raggruppament, inżiduh u nikkollegaw klijenti ġodda.

Kubernetes: Il-Mixja ta' Pinterest

Il-bidu ta 'Kubernetes fuq l-iskala ta' Pinterest bħala pjattaforma li l-inġiniera tagħna kienu jħobbu ġie b'ħafna sfidi.

Bħala kumpanija kbira, investejna ħafna f'għodod tal-infrastruttura. Eżempji jinkludu għodod tas-sigurtà li jimmaniġġjaw l-ipproċessar taċ-ċertifikati u d-distribuzzjoni taċ-ċavetta, komponenti ta’ kontroll tat-traffiku, sistemi ta’ skoperta ta’ servizzi, komponenti ta’ viżibilità, u komponenti ta’ dispaċċ ta’ log u metriċi. Dan kollu nġabar għal raġuni: għaddejna mit-triq normali tal-prova u l-iżball, u għalhekk ridna nintegraw dan it-tagħmir kollu fl-infrastruttura l-ġdida fuq Kubernetes minflok nerġgħu nivvintaw ir-rota l-antika fuq pjattaforma ġdida. Dan l-approċċ b'mod ġenerali ssimplifika l-migrazzjoni, peress li l-appoġġ kollu tal-applikazzjoni diġà jeżisti u m'għandux għalfejn jinħoloq mill-bidu.

Min-naħa l-oħra, il-mudelli tat-tbassir tat-tagħbija f'Kubernetes innifsu (bħal skjeramenti, impjiegi, u settijiet Daemon) mhumiex biżżejjed għall-proġett tagħna. Dawn il-kwistjonijiet tal-użabilità huma ostakli kbar biex wieħed jiċċaqlaq għal Kubernetes. Pereżempju, smajna lill-iżviluppaturi tas-servizz jilmentaw dwar is-settings tal-login nieqsa jew mhux korretti. Iltqajna wkoll ma 'użu ħażin ta' magni tal-mudelli, meta nħolqu mijiet ta 'kopji bl-istess speċifikazzjoni u kompitu, li rriżultaw fi problemi ta' debugging ta 'ħmar il-lejl.

Kien ukoll diffiċli ħafna li jinżammu verżjonijiet differenti fl-istess cluster. Immaġina l-kumplessità tal-appoġġ għall-klijenti jekk ikollok bżonn taħdem simultanjament f'diversi verżjonijiet tal-istess ambjent ta 'runtime, bil-problemi, bugs u aġġornamenti kollha tagħhom.

Proprjetajiet u Kontrolluri tal-Utenti ta' Pinterest

Biex tagħmilha aktar faċli għall-inġiniera tagħna biex jimplimentaw Kubernetes, u biex nissimplifikaw u nħaffu l-infrastruttura tagħna, żviluppajna d-definizzjonijiet tar-riżorsi personalizzati (CRDs) tagħna stess.

Is-CRDs jipprovdu l-funzjonalità li ġejja:

  1. Jikkombinaw riżorsi indiġeni differenti ta' Kubernetes sabiex jaħdmu bħala xogħol wieħed. Pereżempju, ir-riżorsa PinterestService tinkludi skjerament, servizz ta' login, u mappa ta' konfigurazzjoni. Dan jippermetti lill-iżviluppaturi ma joqogħdu jinkwetaw dwar it-twaqqif tad-DNS.
  2. Timplimenta l-appoġġ meħtieġ għall-applikazzjoni. L-utent jeħtieġ li jiffoka biss fuq l-ispeċifikazzjoni tal-kontejner skond il-loġika tan-negozju tagħhom, filwaqt li l-kontrollur CRD jimplimenta l-kontenituri init, il-varjabbli ambjentali u l-ispeċifikazzjonijiet tal-pods kollha meħtieġa. Dan jipprovdi livell fundamentalment differenti ta 'kumdità għall-iżviluppaturi.
  3. Il-kontrolluri tas-CRD jimmaniġġjaw ukoll iċ-ċiklu tal-ħajja tar-riżorsi indiġeni u jtejbu d-disponibbiltà tad-debug. Dan jinkludi r-rikonċiljazzjoni tal-ispeċifikazzjonijiet mixtieqa u attwali, l-aġġornament tal-istatus tas-CRD u ż-żamma tar-reġistri tal-avvenimenti, u aktar. Mingħajr CRD, l-iżviluppaturi jkunu sfurzati jimmaniġġjaw riżorsi multipli, li jżidu biss il-probabbiltà ta 'żball.

Hawn eżempju ta 'PinterestService u riżors intern li huwa ġestit mill-kontrollur tagħna:

Ħolqien ta' pjattaforma kubernetes fuq Pinterest

Kif tistgħu taraw hawn fuq, biex nappoġġjaw kontenitur tad-dwana għandna bżonn nintegraw kontenitur init u diversi add-ons biex nipprovdu sigurtà, viżibilità u traffiku tan-netwerk. Barra minn hekk, ħloqna mudelli ta 'mapep ta' konfigurazzjoni u implimentajna appoġġ għal mudelli tal-PVC għal impjiegi ta 'lott, kif ukoll traċċar ta' varjabbli ambjentali multipli biex issegwi l-identità, il-konsum tar-riżorsi, u l-ġbir taż-żibel.

Huwa diffiċli li wieħed jimmaġina li l-iżviluppaturi jkunu jridu jiktbu dawn il-fajls tal-konfigurazzjoni bl-idejn mingħajr appoġġ CRD, aħseb u ara aktar iżommu u jiddebugjaw il-konfigurazzjonijiet.

Fluss tax-xogħol tal-iskjerament tal-applikazzjoni

Ħolqien ta' pjattaforma kubernetes fuq Pinterest

L-immaġni ta 'hawn fuq turi kif tuża riżors personalizzat ta' Pinterest għal cluster Kubernetes:

  1. L-iżviluppaturi jinteraġixxu mal-cluster Kubernetes tagħna permezz tas-CLI u l-interface tal-utent.
  2. L-għodod CLI/UI jirkupraw il-fajls YAML tal-konfigurazzjoni tal-fluss tax-xogħol u proprjetajiet oħra tal-bini (ID tal-istess verżjoni) minn Artifactory u mbagħad jissottomettuhom lis-Servizz ta' Sottomissjoni tal-Impjiegi. Dan il-pass jiżgura li verżjonijiet tal-produzzjoni biss jiġu kkunsinnati lill-cluster.
  3. JSS huwa portal għal diversi pjattaformi, inkluż Kubernetes. Hawnhekk l-utent jiġi awtentikat, jinħarġu kwoti u l-konfigurazzjoni tas-CRD tagħna hija parzjalment iċċekkjata.
  4. Wara li tiċċekkja s-CRD fuq in-naħa JSS, l-informazzjoni tintbagħat lill-API tal-pjattaforma k8s.
  5. Il-kontrollur CRD tagħna jimmonitorja l-avvenimenti fuq ir-riżorsi kollha tal-utent. Jikkonverti CRs f'riżorsi indiġeni tal-k8s, iżid il-moduli meħtieġa, jistabbilixxi l-varjabbli ambjentali xierqa, u jwettaq xogħol ieħor ta 'appoġġ biex jiżgura li l-applikazzjonijiet tal-utenti fil-kontejners ikollhom biżżejjed appoġġ għall-infrastruttura.
  6. Il-kontrollur CRD imbagħad jgħaddi d-dejta riċevuta lill-API Kubernetes sabiex tkun tista 'tiġi pproċessata mill-iskeder u titqiegħed fil-produzzjoni.

Innota: Dan il-fluss tax-xogħol ta' qabel ir-rilaxx tal-iskjerament inħoloq għall-ewwel utenti tal-pjattaforma l-ġdida k8s. Bħalissa qegħdin fil-proċess li nirfinaw dan il-proċess biex nintegraw bis-sħiħ mas-CI/CD il-ġdid tagħna. Dan ifisser li ma nistgħux ngħidulek dak kollu relatat ma' Kubernetes. Nistennew bil-ħerqa li naqsmu l-esperjenza tagħna u l-progress tat-tim f'din id-direzzjoni fil-blog post tagħna li jmiss, "Nibnu pjattaforma CI/CD għal Pinterest."

Tipi ta' riżorsi speċjali

Ibbażat fuq il-ħtiġijiet speċifiċi ta 'Pinterest, żviluppajna s-CRDs li ġejjin biex ikunu adattati għal flussi tax-xogħol differenti:

  • PinterestService huma servizzi mingħajr stat li ilhom jaħdmu għal żmien twil. Ħafna mis-sistemi ewlenin tagħna huma bbażati fuq sett ta’ servizzi bħal dawn.
  • PinterestJobSet jimmudella impjiegi ta' lott ta' ċiklu sħiħ. Xenarju komuni fuq Pinterest huwa li xogħlijiet multipli jmexxu l-istess kontenituri b'mod parallel, irrispettivament minn proċessi simili oħra.
  • PinterestCronJob huwa użat ħafna flimkien ma 'tagħbijiet perjodiċi żgħar. Dan huwa tgeżwir għal xogħol cron nattiv b'mekkaniżmi ta 'appoġġ ta' Pinterest li huma responsabbli għas-sigurtà, it-traffiku, zkuk u metriċi.
  • PinterestDaemon jinkludi Daemons tal-infrastruttura. Din il-familja qed tkompli tikber hekk kif inżidu aktar appoġġ lill-clusters tagħna.
  • PinterestTrainingJob jestendi għall-proċessi Tensorflow u Pytorch, li jipprovdi l-istess livell ta 'appoġġ runtime bħas-CRDs l-oħra kollha. Peress li Pinterest juża b'mod attiv Tensorflow u sistemi oħra ta 'tagħlim tal-magni, kellna raġuni biex nibnu CRD separat madwarhom.

Qed naħdmu wkoll fuq PinterestStatefulSet, li dalwaqt se jiġi adattat għall-imħażen tad-dejta u sistemi oħra ta’ stat.

Appoġġ runtime

Meta pod ta 'applikazzjoni jaħdem fuq Kubernetes, awtomatikament jirċievi ċertifikat biex jidentifika ruħu. Dan iċ-ċertifikat jintuża biex jaċċessa ħażna sigrieta jew biex jikkomunika ma' servizzi oħra permezz tal-mTLS. Sadanittant, il-Konfiguratur tal-Initi tal-Kontenitur u d-Daemon se jniżżlu d-dipendenzi kollha meħtieġa qabel ma jmexxu l-applikazzjoni fil-kontejners. Meta kollox ikun lest, is-sidecar tat-traffiku u Daemon jirreġistraw l-indirizz IP tal-modulu maż-Zookeeper tagħna sabiex il-klijenti jkunu jistgħu jiskopruh. Dan kollu se jaħdem minħabba li l-modulu tan-netwerk ġie kkonfigurat qabel ma tnediet l-applikazzjoni.

Dawn ta' hawn fuq huma eżempji tipiċi ta' appoġġ ta' runtime għal xogħolijiet. Tipi oħra ta 'tagħbija tax-xogħol jistgħu jeħtieġu appoġġ kemmxejn differenti, iżda kollha jiġu fil-forma ta' sidecars fil-livell tal-pods, Daemons fil-livell tan-nodi jew fil-livell tal-magni virtwali. Aħna niżguraw li dan kollu jiġi skjerat fi ħdan l-infrastruttura tal-ġestjoni u jkun konsistenti fl-applikazzjonijiet kollha, li fl-aħħar mill-aħħar inaqqas b'mod sinifikanti l-piż f'termini ta 'xogħol tekniku u appoġġ għall-klijenti.

Ittestjar u QA

Bnejna pipeline tat-test tarf sa tarf fuq l-infrastruttura eżistenti tat-test Kubernetes. Dawn it-testijiet japplikaw għall-clusters kollha tagħna. Il-pipeline tagħna għadda minn bosta reviżjonijiet qabel ma sar parti mill-grupp tal-prodotti.

Minbarra s-sistemi ta 'ttestjar, għandna sistemi ta' monitoraġġ u twissija li kontinwament jimmonitorjaw l-istatus tal-komponenti tas-sistema, il-konsum tar-riżorsi u indikaturi importanti oħra, u jinnotifikawna biss meta jkun meħtieġ intervent uman.

Alternattivi

Ħarsa lejn xi alternattivi għar-riżorsi tad-dwana, bħal kontrolluri ta 'aċċess għall-mutazzjoni u sistemi ta' mudelli. Madankollu, kollha jiġu bi sfidi operattivi sinifikanti, għalhekk għażilna r-rotta CRD.

Intuża kontrollur ta 'ammissjoni mutazzjonali biex jintroduċi sidecars, varjabbli ambjentali, u appoġġ ieħor ta' runtime. Madankollu, iffaċċjat diversi problemi, bħall-irbit tar-riżorsi u l-ġestjoni taċ-ċiklu tal-ħajja, fejn problemi bħal dawn ma jinqalgħux fis-CRD.

Nota: Sistemi ta 'mudelli bħalma huma ċ-ċarts Helm huma wkoll użati ħafna biex imexxu applikazzjonijiet b'konfigurazzjonijiet simili. Madankollu, l-applikazzjonijiet tax-xogħol tagħna huma diversi wisq biex jiġu ġestiti bl-użu ta’ mudelli. Ukoll waqt l-iskjerament kontinwu se jkun hemm wisq żbalji meta jintużaw mudelli.

Xogħol li ġej

Bħalissa qed nittrattaw ma 'tagħbija mħallta fil-clusters kollha tagħna. Biex nappoġġjaw tali proċessi ta 'tipi u daqsijiet differenti, naħdmu fl-oqsma li ġejjin:

  • Ġabra ta 'clusters tqassam applikazzjonijiet kbar f'raggruppamenti differenti għall-iskalabbiltà u l-istabbiltà.
  • L-iżgurar tal-istabbiltà tal-cluster, l-iskalabbiltà u l-viżibilità biex jinħolqu konnettività tal-applikazzjoni u SLAs.
  • Il-ġestjoni tar-riżorsi u l-kwoti sabiex l-applikazzjonijiet ma jkunux f’kunflitt ma’ xulxin, u l-iskala tal-cluster tkun ikkontrollata min-naħa tagħna.
  • Pjattaforma CI/CD ġdida għall-appoġġ u l-iskjerament ta' applikazzjonijiet fuq Kubernetes.

Sors: www.habr.com

Żid kumment