Ṣiṣẹda kubernetes Syeed lori Pinterest

Ni awọn ọdun diẹ, awọn olumulo miliọnu 300 ti Pinterest ti ṣẹda diẹ sii ju awọn pinni bilionu 200 lori diẹ sii ju awọn igbimọ 4 bilionu. Lati ṣe iranṣẹ fun ọmọ ogun ti awọn olumulo ati ipilẹ akoonu nla, ọna abawọle ti ṣe agbekalẹ ẹgbẹẹgbẹrun awọn iṣẹ, ti o wa lati awọn iṣẹ microservices ti o le ṣe itọju nipasẹ awọn CPUs diẹ, si awọn monoliths nla ti o nṣiṣẹ lori gbogbo ọkọ oju-omi kekere ti awọn ẹrọ foju. Ati lẹhinna akoko wa nigbati awọn oju ile-iṣẹ ṣubu lori k8s. Kini idi ti “cube” naa dara lori Pinterest? Iwọ yoo kọ ẹkọ nipa eyi lati itumọ wa ti nkan aipẹ lati bulọọgi Pinterest engeneering.

Ṣiṣẹda kubernetes Syeed lori Pinterest

Nitorinaa, awọn ọgọọgọrun awọn miliọnu awọn olumulo ati awọn ọgọọgọrun ọkẹ àìmọye awọn pinni. Lati sin ọmọ ogun ti awọn olumulo ati ipilẹ akoonu nla, a ti ni idagbasoke ẹgbẹẹgbẹrun awọn iṣẹ, ti o wa lati awọn iṣẹ microservices ti o le ṣe itọju nipasẹ awọn CPUs diẹ, si awọn monoliths nla ti o nṣiṣẹ lori gbogbo awọn ọkọ oju-omi kekere ti awọn ẹrọ foju. Ni afikun, a ni orisirisi awọn ilana ti o tun le nilo Sipiyu, iranti, tabi I/O wiwọle.

Ni mimujuto zoo ti awọn irinṣẹ, ẹgbẹ idagbasoke dojukọ ọpọlọpọ awọn italaya:

  • Ko si ọna iṣọkan fun awọn onimọ-ẹrọ lati ṣiṣe agbegbe iṣelọpọ kan. Awọn iṣẹ ti ko ni ipinlẹ, Awọn iṣẹ ipinlẹ ati awọn iṣẹ akanṣe labẹ idagbasoke ti nṣiṣe lọwọ da lori awọn akopọ imọ-ẹrọ ti o yatọ patapata. Eyi yori si ṣiṣẹda gbogbo ikẹkọ ikẹkọ fun awọn onimọ-ẹrọ, ati tun ṣe idiju iṣẹ ti ẹgbẹ amayederun wa.
  • Awọn olupilẹṣẹ pẹlu ọkọ oju-omi kekere ti awọn ẹrọ foju ṣẹda ẹru nla lori awọn alabojuto inu. Bi abajade, iru awọn iṣẹ ti o rọrun bi mimu imudojuiwọn OS tabi AMI gba awọn ọsẹ ati awọn oṣu. Eyi yori si alekun iṣẹ ṣiṣe ni awọn ipo ti o dabi ẹnipe Egba lojoojumọ.
  • Awọn iṣoro ni ṣiṣẹda awọn irinṣẹ iṣakoso amayederun agbaye lori oke awọn solusan ti o wa. Ipo naa jẹ idiju siwaju sii nipasẹ otitọ pe wiwa awọn oniwun ti awọn ẹrọ foju ko rọrun. Iyẹn ni, a ko mọ boya agbara yii le fa jade lailewu lati ṣiṣẹ ni awọn ẹya miiran ti awọn amayederun wa.

Awọn eto orchestration apoti jẹ ọna lati ṣọkan iṣakoso fifuye iṣẹ. Wọn ṣii ilẹkun si iyara idagbasoke ti o pọ si ati irọrun iṣakoso awọn amayederun, nitori gbogbo awọn orisun ti o kan ninu iṣẹ naa ni iṣakoso nipasẹ eto aarin kan.

Ṣiṣẹda kubernetes Syeed lori Pinterest

Nọmba 1: Awọn ohun elo amayederun (igbẹkẹle, iṣelọpọ idagbasoke, ati ṣiṣe).

Ẹgbẹ Platform Iṣakoso awọsanma ni Pinterest ṣe awari K8s ni ọdun 2017. Ni idaji akọkọ ti 2017, a ti ṣe akọsilẹ pupọ julọ awọn agbara iṣelọpọ wa, pẹlu API ati gbogbo awọn olupin wẹẹbu wa. Lẹhinna, a ṣe igbelewọn kikun ti awọn ọna ṣiṣe pupọ fun sisọ awọn ojutu eiyan, kọ awọn iṣupọ ati ṣiṣẹ pẹlu wọn. Si opin 2017, a pinnu lati lo Kubernetes. O jẹ irọrun pupọ ati atilẹyin jakejado ni agbegbe idagbasoke.

Titi di oni, a ti kọ awọn irinṣẹ bata iṣupọ ti ara wa ti o da lori Kops ati ṣiṣiṣi awọn ohun elo amayederun ti o wa tẹlẹ gẹgẹbi netiwọki, aabo, awọn metiriki, gedu, iṣakoso idanimọ, ati ijabọ si Kubernetes. A tun ṣe imuse eto awoṣe iṣẹ ṣiṣe fun awọn orisun wa, idiju eyiti o farapamọ lati ọdọ awọn olupilẹṣẹ. Bayi a wa ni idojukọ lori idaniloju iduroṣinṣin ti iṣupọ, iwọn rẹ ati sisopọ awọn alabara tuntun.

Kubernetes: Ọna Pinterest

Bibẹrẹ pẹlu Kubernetes ni iwọn ti Pinterest gẹgẹbi pẹpẹ ti awọn onimọ-ẹrọ wa yoo nifẹ wa pẹlu ọpọlọpọ awọn italaya.

Gẹgẹbi ile-iṣẹ nla kan, a ti ṣe idoko-owo lọpọlọpọ ni awọn irinṣẹ amayederun. Awọn apẹẹrẹ pẹlu awọn irinṣẹ aabo ti o mu awọn iwe-ẹri ati pinpin bọtini, awọn paati iṣakoso ijabọ, awọn ọna ṣiṣe wiwa iṣẹ, awọn paati hihan, ati log ati metiriki fi awọn paati ranṣẹ. Gbogbo eyi ni a gba fun idi kan: a lọ nipasẹ ọna deede ti idanwo ati aṣiṣe, ati nitori naa a fẹ lati ṣepọ gbogbo ohun elo yii sinu awọn amayederun titun lori Kubernetes dipo ki o tun ṣe atunṣe kẹkẹ atijọ lori aaye tuntun kan. Ọna yii lapapọ jẹ irọrun ijira, nitori gbogbo atilẹyin ohun elo ti wa tẹlẹ ati pe ko nilo lati ṣẹda lati ibere.

Ni apa keji, awọn awoṣe asọtẹlẹ fifuye ni Kubernetes funrararẹ (gẹgẹbi awọn imuṣiṣẹ, awọn iṣẹ, ati awọn ipilẹ Daemon) ko to fun iṣẹ akanṣe wa. Awọn ọran lilo wọnyi jẹ awọn idena nla si gbigbe si Kubernetes. Fún àpẹrẹ, a ti gbọ́ tí àwọn olùgbékalẹ̀ iṣẹ́ ń ráhùn nípa pàdánù tàbí àwọn ètò iwọle tí kò tọ́. A tun konge lilo ti ko tọ ti awọn ẹrọ awoṣe, nigbati awọn ọgọọgọrun awọn adakọ ni a ṣẹda pẹlu sipesifikesonu ati iṣẹ-ṣiṣe kanna, eyiti o yorisi awọn iṣoro ṣiṣatunṣe alaburuku.

O tun nira pupọ lati ṣetọju awọn ẹya oriṣiriṣi ninu iṣupọ kanna. Fojuinu idiju ti atilẹyin alabara ti o ba nilo lati ṣiṣẹ ni nigbakannaa ni awọn ẹya pupọ ti agbegbe asiko asiko kanna, pẹlu gbogbo awọn iṣoro wọn, awọn idun ati awọn imudojuiwọn.

Awọn ohun-ini olumulo Pinterest ati Awọn oludari

Lati jẹ ki o rọrun fun awọn onimọ-ẹrọ wa lati ṣe Kubernetes, ati lati rọrun ati yiyara awọn amayederun wa, a ti ṣe agbekalẹ awọn asọye orisun aṣa tiwa (CRDs).

Awọn CRD pese iṣẹ ṣiṣe wọnyi:

  1. Apapọ awọn orisun Kubernetes abinibi ti o yatọ ki wọn ṣiṣẹ bi ẹru iṣẹ kan. Fun apẹẹrẹ, orisun PinterestService pẹlu imuṣiṣẹ, iṣẹ wiwọle, ati maapu iṣeto kan. Eyi ngbanilaaye awọn olupilẹṣẹ lati ma ṣe aniyan nipa ṣiṣeto DNS.
  2. Ṣe atilẹyin ohun elo pataki. Olumulo nilo lati dojukọ nikan lori sipesifikesonu eiyan ni ibamu si ọgbọn iṣowo wọn, lakoko ti oludari CRD ṣe imuse gbogbo awọn apoti init pataki, awọn oniyipada ayika ati awọn pato podu. Eyi pese ipele itunu ti ipilẹ ti o yatọ fun awọn olupilẹṣẹ.
  3. Awọn olutona CRD tun ṣakoso ọna igbesi aye ti awọn orisun abinibi ati ilọsiwaju wiwa yokokoro. Eyi pẹlu atunṣe ti o fẹ ati awọn pato pato, mimu ipo CRD imudojuiwọn ati mimu awọn akọọlẹ iṣẹlẹ, ati diẹ sii. Laisi CRD, awọn olupilẹṣẹ yoo fi agbara mu lati ṣakoso awọn orisun lọpọlọpọ, eyiti yoo mu iṣeeṣe aṣiṣe pọ si.

Eyi ni apẹẹrẹ ti PinterestService ati awọn orisun inu ti o jẹ iṣakoso nipasẹ oludari wa:

Ṣiṣẹda kubernetes Syeed lori Pinterest

Bii o ti le rii loke, lati ṣe atilẹyin eiyan aṣa a nilo lati ṣepọ eiyan init ati ọpọlọpọ awọn afikun lati pese aabo, hihan, ati ijabọ nẹtiwọọki. Ni afikun, a ṣẹda awọn awoṣe maapu iṣeto ati imuse atilẹyin fun awọn awoṣe PVC fun awọn iṣẹ ipele, bakannaa titọpa awọn oniyipada agbegbe pupọ lati tọpa idanimọ, agbara awọn orisun, ati ikojọpọ idoti.

O nira lati fojuinu pe awọn olupilẹṣẹ yoo fẹ lati kọ awọn faili atunto wọnyi pẹlu ọwọ laisi atilẹyin CRD, jẹ ki nikan ṣetọju siwaju ati ṣatunṣe awọn atunto.

Ohun elo imuṣiṣẹ bisesenlo

Ṣiṣẹda kubernetes Syeed lori Pinterest

Aworan ti o wa loke fihan bi o ṣe le fi orisun aṣa aṣa Pinterest ranṣẹ si iṣupọ Kubernetes kan:

  1. Awọn olupilẹṣẹ ṣe ajọṣepọ pẹlu iṣupọ Kubernetes wa nipasẹ CLI ati wiwo olumulo.
  2. Awọn irinṣẹ CLI/UI gba awọn faili YAML iṣeto ni ṣiṣiṣẹsẹhin ati awọn ohun-ini miiran (ID ẹya kanna) lati Iṣẹ-ọnà ati lẹhinna fi wọn silẹ si Iṣẹ Ifisilẹ Job. Igbesẹ yii ṣe idaniloju pe awọn ẹya iṣelọpọ nikan ni a fi jiṣẹ si iṣupọ naa.
  3. JSS jẹ ẹnu-ọna fun ọpọlọpọ awọn iru ẹrọ, pẹlu Kubernetes. Nibi olumulo ti jẹ ifọwọsi, awọn ipin ti wa ni ti oniṣowo ati iṣeto ni ti CRD wa ti ṣayẹwo ni apakan.
  4. Lẹhin ti ṣayẹwo CRD ni ẹgbẹ JSS, alaye naa ni a fi ranṣẹ si API Syeed k8s.
  5. Alakoso CRD wa n ṣe abojuto awọn iṣẹlẹ lori gbogbo awọn orisun olumulo. O ṣe iyipada awọn CRs sinu awọn orisun k8s abinibi, ṣafikun awọn modulu pataki, ṣeto awọn oniyipada ayika ti o yẹ, ati ṣe iṣẹ atilẹyin miiran lati rii daju pe awọn ohun elo olumulo ti a fi sinu apoti ni atilẹyin amayederun to.
  6. Alakoso CRD lẹhinna kọja data ti o gba si Kubernetes API ki o le ṣe ilana nipasẹ oluṣeto ati fi sinu iṣelọpọ.

Daakọ: Ṣiṣan iṣẹ iṣaaju-itusilẹ ti imuṣiṣẹ ni a ṣẹda fun awọn olumulo akọkọ ti ipilẹ k8s tuntun. Lọwọlọwọ a wa ninu ilana ti isọdọtun ilana yii lati ṣepọ ni kikun pẹlu CI/CD tuntun wa. Eyi tumọ si pe a ko le sọ ohun gbogbo ti o jọmọ Kubernetes fun ọ. A nireti lati pin iriri wa ati ilọsiwaju ẹgbẹ ni itọsọna yii ni ifiweranṣẹ bulọọgi wa ti nbọ, “Ṣiṣe ipilẹ pẹpẹ CI/CD fun Pinterest.”

Orisi ti pataki oro

Da lori awọn iwulo pato ti Pinterest, a ti ṣe agbekalẹ awọn CRD wọnyi lati baamu awọn ṣiṣan iṣẹ oriṣiriṣi:

  • Iṣẹ Pinterest jẹ awọn iṣẹ ti ko ni orilẹ-ede ti o ti nṣiṣẹ fun igba pipẹ. Pupọ awọn eto ipilẹ wa da lori iru awọn iṣẹ bẹẹ.
  • PinterestJobSet awoṣe ni kikun ọmọ ipele ise. Oju iṣẹlẹ ti o wọpọ lori Pinterest ni pe awọn iṣẹ lọpọlọpọ nṣiṣẹ awọn apoti kanna ni afiwe, laibikita awọn ilana miiran ti o jọra.
  • PinterestCronJob jẹ lilo pupọ ni apapo pẹlu awọn ẹru igbakọọkan. Eyi jẹ ipari fun iṣẹ cron abinibi pẹlu awọn ọna ṣiṣe atilẹyin Pinterest ti o jẹ iduro fun aabo, ijabọ, awọn akọọlẹ ati awọn metiriki.
  • PinterestDaemon pẹlu awọn Daemons amayederun. Idile yii n tẹsiwaju lati dagba bi a ṣe n ṣafikun atilẹyin diẹ sii si awọn iṣupọ wa.
  • PinterestTrainingJob gbooro si Tensorflow ati awọn ilana Pytorch, pese ipele kanna ti atilẹyin akoko asiko bi gbogbo awọn CRD miiran. Niwọn bi Pinterest ti nlo Tensorflow ati awọn eto ikẹkọ ẹrọ miiran, a ni idi kan lati kọ CRD lọtọ ni ayika wọn.

A tun n ṣiṣẹ lori PinterestStatefulSet, eyiti yoo ṣe deede laipẹ fun awọn ile itaja data ati awọn eto ipinlẹ miiran.

Atilẹyin akoko ṣiṣe

Nigbati adarọ-ese ohun elo ba ṣiṣẹ lori Kubernetes, yoo gba ijẹrisi laifọwọyi lati ṣe idanimọ ararẹ. A lo ijẹrisi yii lati wọle si ibi ipamọ aṣiri tabi lati ṣe ibasọrọ pẹlu awọn iṣẹ miiran nipasẹ mTLS. Nibayi, Apoti Init Configurator ati Daemon yoo ṣe igbasilẹ gbogbo awọn igbẹkẹle pataki ṣaaju ṣiṣe ohun elo ti a fi sinu apoti. Nigbati ohun gbogbo ba ti ṣetan, ọkọ oju opopona ati Daemon yoo forukọsilẹ adirẹsi IP module pẹlu Zookeeper wa ki awọn alabara le ṣawari rẹ. Gbogbo eyi yoo ṣiṣẹ nitori a ti tunto module nẹtiwọki ṣaaju ki ohun elo naa ti ṣe ifilọlẹ.

Eyi ti o wa loke jẹ awọn apẹẹrẹ aṣoju ti atilẹyin akoko asiko fun awọn ẹru iṣẹ. Awọn oriṣi awọn ẹru iṣẹ miiran le nilo atilẹyin ti o yatọ diẹ, ṣugbọn gbogbo wọn wa ni irisi awọn paati ẹgbẹ-ipele-podu, ipele-ipo tabi Daemons ipele ẹrọ foju. A rii daju pe gbogbo eyi ni a gbe lọ laarin awọn amayederun iṣakoso ati pe o wa ni ibamu laarin awọn ohun elo, eyiti o dinku ẹru ni pataki ni awọn ofin ti iṣẹ imọ-ẹrọ ati atilẹyin alabara.

Idanwo ati QA

A kọ opo gigun ti idanwo ipari-si-opin lori oke awọn amayederun idanwo Kubernetes ti o wa. Awọn idanwo wọnyi kan si gbogbo awọn iṣupọ wa. Pipeline wa lọ nipasẹ ọpọlọpọ awọn atunyẹwo ṣaaju ki o to di apakan ti iṣupọ ọja naa.

Ni afikun si awọn eto idanwo, a ni ibojuwo ati awọn eto gbigbọn ti o ṣe atẹle nigbagbogbo ipo ti awọn paati eto, lilo awọn orisun ati awọn itọkasi pataki miiran, sọfun wa nikan nigbati ilowosi eniyan jẹ pataki.

Awọn miiran

A wo diẹ ninu awọn ọna yiyan si awọn orisun aṣa, gẹgẹbi awọn olutona iraye si iyipada ati awọn eto awoṣe. Sibẹsibẹ, gbogbo wọn wa pẹlu awọn italaya iṣẹ ṣiṣe pataki, nitorinaa a yan ipa-ọna CRD.

A lo oluṣakoso gbigba iyipada iyipada lati ṣafihan awọn ọkọ ayọkẹlẹ ẹgbẹ, awọn oniyipada ayika, ati atilẹyin asiko asiko miiran. Sibẹsibẹ, o dojuko awọn iṣoro oriṣiriṣi, gẹgẹbi awọn ohun elo abuda ati iṣakoso igbesi aye, nibiti iru awọn iṣoro ko ba dide ni CRD.

akiyesi: Awọn ọna ṣiṣe awoṣe bii awọn shatti Helm tun jẹ lilo pupọ lati ṣiṣe awọn ohun elo pẹlu awọn atunto ti o jọra. Sibẹsibẹ, awọn ohun elo iṣẹ wa yatọ pupọ lati ṣakoso ni lilo awọn awoṣe. Paapaa lakoko imuṣiṣẹ lemọlemọfún ọpọlọpọ awọn aṣiṣe yoo wa nigba lilo awọn awoṣe.

Iṣẹ ti n bọ

A n ṣe lọwọlọwọ pẹlu ẹru idapọmọra kọja gbogbo awọn iṣupọ wa. Lati ṣe atilẹyin iru awọn ilana ti awọn oriṣi ati titobi, a ṣiṣẹ ni awọn agbegbe wọnyi:

  • Akopọ awọn iṣupọ n pin kaakiri awọn ohun elo nla kọja awọn iṣupọ oriṣiriṣi fun iwọn ati iduroṣinṣin.
  • Aridaju iduroṣinṣin iṣupọ, iwọn ati hihan lati ṣẹda Asopọmọra ohun elo ati SLAs.
  • Ṣiṣakoso awọn orisun ati awọn ipin ki awọn ohun elo ko ni koju ara wọn, ati iwọn ti iṣupọ naa ni iṣakoso ni apakan wa.
  • Syeed CI / CD tuntun kan fun atilẹyin ati imuṣiṣẹ awọn ohun elo lori Kubernetes.

orisun: www.habr.com

Fi ọrọìwòye kun