Ịmepụta ikpo okwu kubernetes na Pinterest

N'ime afọ ndị gafeworonụ, ndị ọrụ nde 300 nke Pinterest ekepụtala ihe karịrị ijeri ijeri 200 na bọọdụ karịrị ijeri anọ. Iji jee ozi ndị agha nke ndị ọrụ na nnukwu ọdịnaya ọdịnaya, portal ahụ ewepụtala ọtụtụ puku ọrụ, sitere na microservices nke CPU ole na ole nwere ike ijikwa, na nnukwu monoliths nke na-agba ọsọ na igwe igwe mebere. Ma mgbe ahụ, oge bịara mgbe anya ụlọ ọrụ ahụ dara na k4s. Kedu ihe kpatara "cube" ji dị mma na Pinterest? Ị ga-amụta maka nke a site na ntụgharị asụsụ anyị nke akụkọ na-adịbeghị anya sitere na blọọgụ Pinterest na-emepụta ihe.

Ịmepụta ikpo okwu kubernetes na Pinterest

Yabụ, ọtụtụ narị nde ndị ọrụ na ọtụtụ narị ijeri pin. Iji jee ozi ndị agha nke ndị ọrụ na nnukwu ọdịnaya ọdịnaya, anyị ewepụtala ọtụtụ puku ọrụ, sitere na microservices nke CPU ole na ole nwere ike ijikwa, ruo nnukwu monoliths nke na-agba ọsọ n'ụgbọ igwe mebere. Na mgbakwunye, anyị nwere usoro dị iche iche nke nwekwara ike ịchọ CPU, ebe nchekwa ma ọ bụ ohere I/O.

N'ịkwado ngwa ọrụ anụmanụ a, ndị otu mmepe na-eche ọtụtụ ihe ịma aka ihu:

  • Enweghị otu ụzọ maka ndị injinia si agba gburugburu ebe nrụpụta. Ọrụ ndị na-enweghị obodo, ọrụ steeti na ọrụ dị n'okpuru mmepe na-arụsi ọrụ ike dabere na nchịkọta teknụzụ dị iche iche kpamkpam. Nke a mere ka e kee usoro ọzụzụ maka ndị injinia, ma na-akpaghasịkwa ọrụ nke otu akụrụngwa anyị.
  • Ndị na-emepụta ihe nwere igwe igwe mebere nke ha na-emepụta nnukwu ibu na ndị nchịkwa n'ime. N'ihi ya, ọrụ dị mfe dị ka imelite OS ma ọ bụ AMI na-ewe izu na ọnwa. Nke a na-eduga n'ịbawanye ibu ọrụ n'ọnọdụ ndị yiri ka ọ bụ kpam kpam kwa ụbọchị.
  • Ihe isi ike n'ịmepụta ngwaọrụ njikwa akụrụngwa zuru ụwa ọnụ n'elu ihe ngwọta dị ugbu a. Ọnọdụ ahụ na-esiwanye ike site n'ịchọta ndị nwe igwe mebere adịghị mfe. Ya bụ, anyị amaghị ma enwere ike wepụta ikike a n'enweghị nsogbu iji rụọ ọrụ n'akụkụ ndị ọzọ nke akụrụngwa anyị.

Sistemu nhazi ihe eji akpa akwa bụ ụzọ isi jikọta njikwa oke ọrụ. Ha na-emepe ụzọ maka ịbawanye ọsọ mmepe ma na-eme ka njikwa akụrụngwa dị mfe, ebe ọ bụ na a na-ejikwa usoro niile a na-etinye aka na ọrụ ahụ.

Ịmepụta ikpo okwu kubernetes na Pinterest

Ọnụọgụ 1: Ihe ndị dị mkpa akụrụngwa (ịkwado ntụkwasị obi, nrụpụta nrụpụta, na arụmọrụ).

Ndị otu Platform njikwa igwe ojii na Pinterest chọtara K8s na 2017. Ka ọ na-erule ọkara mbụ nke 2017, anyị edepụtala ọtụtụ ikike mmepụta anyị, gụnyere API na sava weebụ anyị niile. Mgbe nke ahụ gasịrị, anyị mere nyocha nke ọma nke usoro dị iche iche maka ịhazi ngwọta akpa, wuo ụyọkọ na ịrụ ọrụ na ha. Na njedebe nke 2017, anyị kpebiri iji Kubernetes. Ọ bụ nnọọ mgbanwe na nkwado nke ukwuu na obodo mmepe.

Ka ọ dị ugbu a, anyị arụla ngwa ọrụ buut ụyọkọ nke anyị dabere na Kops wee bugharịa akụrụngwa akụrụngwa dị ka ịkparịta ụka n'Ịntanet, nchekwa, metrik, igbu osisi, njikwa njirimara, na okporo ụzọ gaa Kubernetes. Anyị mejuputakwara usoro ihe nlegharị anya ọrụ maka akụrụngwa anyị, nke mgbagwoju anya nke zoro ezo n'aka ndị mmepe. Ugbu a, anyị na-elekwasị anya n'ịhụ nkwụsi ike nke ụyọkọ ahụ, na-edozi ya na ijikọ ndị ahịa ọhụrụ.

Kubernetes: Ụzọ Pinterest

Malite na Kubernetes n'ogo Pinterest dị ka ikpo okwu nke ndị injinia anyị ga-ahụ n'anya nwere ọtụtụ ihe ịma aka.

Dị ka nnukwu ụlọ ọrụ, anyị etinyela nnukwu ego na akụrụngwa akụrụngwa. Ọmụmatụ gụnyere ngwaọrụ nchekwa nke na-ejikwa nhazi akwụkwọ na nkesa isi, ihe njikwa okporo ụzọ, sistemu nchoputa ọrụ, akụrụngwa visibiliti, yana ngwa ezipụ log na metrik. A na-anakọta ihe niile a maka ihe kpatara ya: anyị gafere n'ụzọ nkịtị nke ikpe na njehie, ya mere, anyị chọrọ ijikọ akụrụngwa a niile n'ime akụrụngwa ọhụrụ na Kubernetes kama ịmegharị wiil ochie na ikpo okwu ọhụrụ. Ụzọ a n'ozuzu ya mere ka mbugharị ahụ dị mfe, ebe ọ bụ na nkwado ngwa niile adịlarị na ọ dịghị mkpa ka ịmepụta ya site na ọkọ.

N'aka nke ọzọ, ụdị amụma ibu dị na Kubernetes n'onwe ya (dịka ntinye, ọrụ, na ihe Daemon) ezughị maka ọrụ anyị. Okwu ndị a na-eji arụ ọrụ bụ nnukwu ihe mgbochi ịkwaga Kubernetes. Dịka ọmụmaatụ, anyị anụla ndị nrụpụta ọrụ na-eme mkpesa maka ntọala nbanye efu ma ọ bụ na-ezighi ezi. Anyị na-ezutekwa ojiji nke igwe ndebiri na-ezighi ezi, mgbe ejiri otu nkọwapụta na ọrụ mepụta ọtụtụ narị mbipụta, nke butere nsogbu nbipu nke nro.

Ọ dịkwa ezigbo ike idowe ụdịdị dị iche iche n'otu ụyọkọ ahụ. Cheedị echiche mgbagwoju anya nke nkwado ndị ahịa ma ọ bụrụ na ịchọrọ ịrụ ọrụ n'otu oge n'ọtụtụ nsụgharị nke otu oge na-agba ọsọ gburugburu, na nsogbu ha niile, ahụhụ na mmelite.

Njirimara na njikwa ndị ọrụ Pinterest

Iji mee ka ọ dịrị ndị injinia anyị mfe itinye Kubernetes, yana ime ka ọ dị mfe na ime ngwa ngwa akụrụngwa anyị, anyị ewepụtala nkọwapụta akụrụngwa omenala nke anyị (CRDs).

CRD na-enye ọrụ ndị a:

  1. Na-ejikọta akụrụngwa Kubernetes dị iche iche ka ha rụọ ọrụ dị ka otu ibu ọrụ. Dịka ọmụmaatụ, akụrụngwa PinterestService gụnyere ntinye, ọrụ nbanye, yana maapụ nhazi. Nke a na-enye ndị mmepe ohere ka ha ghara ichegbu onwe ha maka ịtọlite ​​DNS.
  2. Tinye nkwado ngwa dị mkpa. Onye ọrụ kwesịrị ilekwasị anya naanị na nkọwapụta akpa dị ka echiche azụmaahịa ha siri dị, ebe onye na-ahụ maka CRD na-emejuputa akpa init niile dị mkpa, mgbanwe gburugburu ebe obibi na nkọwapụta pọd. Nke a na-enye ọkwa nkasi obi dị iche iche maka ndị mmepe.
  3. Ndị na-ahụ maka CRD na-ejikwa usoro ndụ nke akụrụngwa ala ma melite nnweta nbipu. Nke a na-agụnye imekọrịta ihe achọrọ na nkọwapụta, imelite ọkwa CRD na idowe ndekọ ihe omume, yana ndị ọzọ. Enweghị CRD, a ga-amanye ndị mmepe ka ha jikwaa ọtụtụ akụrụngwa, nke ga-abawanye naanị ohere nke njehie.

Nke a bụ ọmụmaatụ nke PinterestService yana akụrụngwa dị n'ime nke onye njikwa anyị na-achịkwa:

Ịmepụta ikpo okwu kubernetes na Pinterest

Dịka ị na-ahụ n'elu, iji kwado akpa omenala anyị kwesịrị ijikọ akpa init na ọtụtụ ihe mgbakwunye iji nye nchekwa, visibiliti, na okporo ụzọ netwọk. Na mgbakwunye, anyị mepụtara ndebiri maapụ nhazi ma tinye nkwado maka ndebiri PVC maka ọrụ batch, yana nsochi ọtụtụ mgbanwe gburugburu ebe obibi iji soro njirimara, oriri akụrụngwa, na mkpofu ahịhịa.

O siri ike iche n'echiche na ndị mmepe ga-achọ iji aka dee faịlụ nhazi ndị a na-enweghị nkwado CRD, ma ya fọdụzie ịnọgide na-enwe ma mebie nhazi ahụ.

Usoro ntinye ngwa ngwa

Ịmepụta ikpo okwu kubernetes na Pinterest

Onyonyo dị n'elu na-egosi otu esi ebufe akụ omenala Pinterest na ụyọkọ Kubernetes:

  1. Ndị nrụpụta na ụyọkọ Kubernetes na-emekọrịta ihe site na CLI na interface onye ọrụ.
  2. Ngwa CLI/UI na-eweghachite faịlụ YAML nhazi usoro na-arụ ọrụ yana ihe ndị ọzọ na-ewu ụlọ (otu ụdị ID) site na Artifacty wee nyefee ha na ọrụ ntinye ọrụ. Nzọụkwụ a na-achọpụta na ọ bụ naanị ụdị mmepụta ka a na-ebuga na ụyọkọ ahụ.
  3. JSS bụ ọnụ ụzọ maka nyiwe dị iche iche, gụnyere Kubernetes. N'ebe a ka akwadoro onye ọrụ, a na-enye oke na nhazi nke CRD anyị na-enyocha akụkụ ụfọdụ.
  4. Mgbe ịlele CRD n'akụkụ JSS, a na-eziga ozi ahụ na k8s ikpo okwu API.
  5. Onye njikwa CRD anyị na-enyocha mmemme na akụrụngwa ndị ọrụ niile. Ọ na-atụgharị CRs ka ọ bụrụ akụrụngwa k8s nke ala, na-agbakwụnye modulu ndị dị mkpa, na-edobe mgbanwe gburugburu ebe obibi kwesịrị ekwesị, ma na-arụ ọrụ nkwado ndị ọzọ iji hụ na ngwa ndị ejiri akpa nwere nkwado akụrụngwa zuru oke.
  6. Onye na-ahụ maka CRD na-ebufe data enwetara na Kubernetes API ka onye nhazi nhazi wee tinye ya na mmepụta.

Примечание: Nke a tupu mwepụta ọrụ eruba nke ntinye ọrụ ka emepụtara maka ndị ọrụ mbụ nke ikpo okwu k8s ọhụrụ. Anyị nọ ugbu a na nhazi nke usoro a ka anyị na CI/CD ọhụrụ anyị jikọtara nke ọma. Nke a pụtara na anyị enweghị ike ịgwa gị ihe niile metụtara Kubernetes. Anyị na-atụ anya ikesa ahụmịhe anyị na ọganihu otu ahụ na ntụzịaka a na blọọgụ anyị na-esote, "Iwulite ikpo okwu CI/CD maka Pinterest."

Ụdị ihe onwunwe pụrụ iche

Dabere na mkpa Pinterest akọwapụtara, anyị emepụtala CRD ndị a ka ọ dabara na usoro ọrụ dị iche iche:

  • PinterestService bụ ọrụ enweghị obodo na-arụ ọrụ ogologo oge. Ọtụtụ n'ime isi sistemụ anyị dabere na otu ụdị ọrụ ahụ.
  • PinterestJobSet na-egosipụta ọrụ ogbe okirikiri zuru oke. Otu ihe a na-ahụkarị na Pinterest bụ na ọtụtụ ọrụ na-arụ otu akpa n'otu oge, n'agbanyeghị usoro ndị ọzọ yiri ya.
  • PinterestCronJob na-ejikọta ya na obere ibu oge. Nke a bụ ihe mkpuchi maka ọrụ cron nke ala yana usoro nkwado Pinterest na-ahụ maka nchekwa, okporo ụzọ, ndekọ na metrik.
  • PinterestDaemon gụnyere akụrụngwa Daemons. Ezinụlọ a na-aga n'ihu na-eto eto ka anyị na-agbakwunye nkwado na ụyọkọ anyị.
  • PinterestTrainingJob gbatịrị na usoro Tensorflow na Pytorch, na-enye otu ọkwa nkwado oge ọsọ dịka CRD ndị ọzọ niile. Ebe ọ bụ na Pinterest na-eji Tensorflow na sistemụ mmụta igwe ndị ọzọ, anyị nwere ihe mere anyị ga-eji wuo CRD dị iche iche gburugburu ha.

Anyị na-arụkwa ọrụ na PinterestStatefulSet, nke a ga-emegharị n'oge na-adịghị anya maka ụlọ nkwakọba ihe data na sistemụ steeti ndị ọzọ.

Nkwado oge ojiri gaa

Mgbe ngwa ngwa na-agba na Kubernetes, ọ na-enweta asambodo na-akpaghị aka iji mata onwe ya. A na-eji asambodo a iji nweta nchekwa nzuzo ma ọ bụ soro ọrụ ndị ọzọ kparịta ozi site na mTLS. Ka ọ dị ugbu a, Container Init Configurator na Daemon ga-ebudata ndabere niile dị mkpa tupu ịme ngwa etinyere akpa. Mgbe ihe niile dị njikere, okporo ụzọ sidecar na Daemon ga-edebanye aha adreesị IP nke modul na Zookeeper anyị ka ndị ahịa nwee ike chọpụta ya. Ihe a niile ga-arụ ọrụ n'ihi na ahazi modul netwọk tupu ewepụta ngwa ahụ.

Ihe ndị a dị n'elu bụ ihe atụ nke nkwado oge ojiri gaa maka ibu ọrụ. Ụdị ibu ọrụ ndị ọzọ nwere ike ịchọ nkwado dịtụ iche, mana ha niile na-abịa n'ụdị sidecars pod-level sidecars, node-level or virtual machine-level Daemons. Anyị na-ahụ na a na-etinye ihe a niile n'ime akụrụngwa nchịkwa ma na-agbanwe agbanwe na ngwa ngwa, nke na-emecha belata ibu arọ n'ihe gbasara ọrụ nkà na ụzụ na nkwado ndị ahịa.

Nnwale na QA

Anyị wuru ọkpọkọ ule ngwụcha na ngwụcha n'elu akụrụngwa nnwale Kubernetes dị ugbu a. Nnwale ndị a metụtara ụyọkọ anyị niile. Pipeline anyị gara n'ọtụtụ nyocha tupu ọ ghọọ akụkụ nke ụyọkọ ngwaahịa.

Na mgbakwunye na usoro nyocha, anyị nwere usoro nlekota na nlekota anya nke na-enyocha ọnọdụ nke akụkụ usoro, oriri ihe onwunwe na ihe ndị ọzọ dị mkpa, na-agwa anyị naanị mgbe enyemaka mmadụ dị mkpa.

Ndị ọzọ

Anyị lere anya n'ụzọ ụfọdụ maka akụrụngwa ahaziri ahazi, dị ka ndị na-ahụ maka mmụgharị na sistemụ ndebiri. Agbanyeghị, ha niile nwere nnukwu ihe ịma aka arụmọrụ, yabụ anyị họọrọ ụzọ CRD.

Ejiri njikwa nnabata mutational webata ụgbọ ala akụkụ, mgbanwe gburugburu ebe obibi na nkwado oge ọsọ ndị ọzọ. Otú ọ dị, ọ chere nsogbu dị iche iche ihu, dị ka njide akụ na njikwa ndụ, ebe nsogbu ndị dị otú ahụ adịghị ebili na CRD.

Cheta na: A na-ejikwa sistemu ndebiri dị ka chaatị Helm iji mee ngwa nwere nhazi ndị yiri ya. Agbanyeghị, ngwa ọrụ anyị dị iche iche nke a na-ejikwa iji ndebiri. Ọzọkwa n'oge mbugharị na-aga n'ihu, a ga-enwe ọtụtụ mperi mgbe ị na-eji ndebiri.

Ọrụ na-abịa

Anyị na-arụkọ ọrụ ugbu a na ibu agwakọtara n'ofe ụyọkọ anyị niile. Iji kwado usoro ndị dị otú ahụ nke ụdị na nha dị iche iche, anyị na-arụ ọrụ na mpaghara ndị a:

  • Nchịkọta ụyọkọ na-ekesa nnukwu ngwa n'ofe ụyọkọ dị iche iche maka scalability na nkwụsi ike.
  • Ịhụ nkwụsi ike ụyọkọ, scalability na visibiliti iji mepụta njikọ ngwa na SLAs.
  • Ijikwa akụrụngwa na oke ka ngwa ghara ịlụ ọgụ na ibe ya, a na-achịkwa ọnụ ọgụgụ nke ụyọkọ n'akụkụ anyị.
  • Igwe okwu CI/CD ọhụrụ maka ịkwado na itinye ngwa na Kubernetes.

isi: www.habr.com

Tinye a comment