AtgÄdinÄm, ka esam laiduÅ”i klajÄ vÄl vienu ÄrkÄrtÄ«gi interesantu un noderÄ«gu
Kubernetes ir bÅ«tiski mainÄ«jis tradicionÄlos lietojumprogrammu izstrÄdes un izvietoÅ”anas modeļus. Tagad komanda var izstrÄdÄt, pÄrbaudÄ«t un izvietot lietojumprogrammu dažu dienu laikÄ ā vairÄkÄs vidÄs, un tas viss notiek Kubernetes klasteros. Å Äds darbs ar iepriekÅ”Äjo paaudžu tehnoloÄ£ijÄm parasti ilga nedÄļas, ja ne mÄneÅ”us.
Å o paÄtrinÄjumu padara iespÄjamu Kubernetes nodroÅ”inÄtÄ abstrakcija, proti, Kubernetes pati mijiedarbojas ar fizisko vai virtuÄlo maŔīnu zema lÄ«meÅa detaļÄm, ļaujot lietotÄjiem deklarÄt vÄlamo procesoru, vÄlamo atmiÅas apjomu un konteinera skaitu. gadÄ«jumos, starp citiem parametriem. Ar milzÄ«gu kopienu, kas atbalsta Kubernetes, un tÄs ievieÅ”ana nepÄrtraukti paplaÅ”inÄs, Kubernetes ir lÄ«deris starp visÄm konteineru orÄ·estrÄÅ”anas platformÄm ar lielu pÄrsvaru.
Pieaugot Kubernetes izmantoÅ”anai, pieaug arÄ« neskaidrÄ«bas par tÄ uzglabÄÅ”anas modeļiem..
Ikvienam sacenÅ”oties par daļu no Kubernetes pÄ«rÄga (t.i., datu glabÄÅ”anas), runÄjot par datu glabÄÅ”anu, signÄls tiek noslÄ«cinÄts lielÄ trokÅ”ÅÄ.
Kubernetes iemieso modernu lietojumprogrammu izstrÄdes, izvietoÅ”anas un pÄrvaldÄ«bas modeli. Å is modernais modelis atdala datu krÄtuvi no skaitļoÅ”anas. Lai pilnÄ«bÄ izprastu atdalÄ«Å”anu Kubernetes kontekstÄ, jums ir arÄ« jÄsaprot, kas ir statusa un bezvalsts lietojumprogrammas un kÄ datu glabÄÅ”ana tajÄ iekļaujas. Å eit S3 izmantotajai REST API pieejai ir skaidras priekÅ”rocÄ«bas salÄ«dzinÄjumÄ ar citu risinÄjumu POSIX/CSI pieeju.
Å ajÄ rakstÄ mÄs runÄsim par datu glabÄÅ”anas modeļiem Kubernetes un Ä«paÅ”i pieskarsimies debatÄm starp statusu un bezvalsts lietojumprogrammÄm, lai labÄk saprastu, kÄda ir atŔķirÄ«ba starp tÄm un kÄpÄc tÄ ir svarÄ«ga. PÄrÄjÄ teksta daÄ¼Ä tiks aplÅ«kotas lietojumprogrammas un to datu glabÄÅ”anas modeļi, Åemot vÄrÄ paraugpraksi darbam ar konteineriem un Kubernetes.
Konteineri bez pilsonības
Konteineri pÄc bÅ«tÄ«bas ir viegli un Ä«slaicÄ«gi. Tos var viegli apturÄt, noÅemt vai izvietot citÄ mezglÄ ā tas viss dažu sekunžu laikÄ. LielajÄ konteineru orÄ·estrÄÅ”anas sistÄmÄ Å”Ädas darbÄ«bas notiek visu laiku, un lietotÄji Å”Ädas izmaiÅas pat nepamana. TomÄr pÄrvietoÅ”ana ir iespÄjama tikai tad, ja konteineram nav atkarÄ«bu no mezgla, kurÄ tas atrodas. Tiek uzskatÄ«ts, ka Å”Ädi konteineri darbojas bezvalstnieks.
Status saturoŔi konteineri
Ja konteiners glabÄ datus lokÄli pievienotÄs ierÄ«cÄs (vai blokierÄ«cÄ), datu krÄtuve, kurÄ tas atrodas, kļūmes gadÄ«jumÄ kopÄ ar paÅ”u konteineru bÅ«s jÄpÄrvieto uz jaunu mezglu. Tas ir svarÄ«gi, jo pretÄjÄ gadÄ«jumÄ lietojumprogramma, kas darbojas konteinerÄ, nevarÄs pareizi darboties, jo tai ir jÄpiekļūst datiem, kas glabÄjas vietÄjÄ datu nesÄjÄ. Tiek uzskatÄ«ts, ka Å”Ädi konteineri darbojas Å”tata.
No tÄ«ri tehniskÄ viedokļa statusa saturoÅ”us konteinerus var pÄrvietot arÄ« uz citiem mezgliem. Parasti to panÄk, izmantojot sadalÄ«tas failu sistÄmas vai bloÄ·Äjot tÄ«kla krÄtuvi, kas pievienota visiem mezgliem, kuros darbojas konteineri. TÄdÄ veidÄ konteineri piekļūst sÄjumiem pastÄvÄ«gai datu glabÄÅ”anai, un informÄcija tiek glabÄta diskos, kas atrodas visÄ tÄ«klÄ. Es nosaukÅ”u Å”o metodi "statusa konteinera pieeja", un pÄrÄjÄ rakstÄ es to vienveidÄ«bas labad nosaukÅ”u tÄ.
TipiskÄ statusa konteinera pieejÄ visi lietojumprogrammu bloki ir pievienoti vienai sadalÄ«tai failu sistÄmai ā sava veida koplietojamai krÄtuvei, kurÄ atrodas visi lietojumprogrammu dati. Lai gan ir iespÄjamas dažas variÄcijas, Ŕī ir augsta lÄ«meÅa pieeja.
Tagad apskatÄ«sim, kÄpÄc statusful konteinera pieeja ir pretmodelis uz mÄkoÅiem orientÄtÄ pasaulÄ.
MÄkoÅa lietojumprogrammu dizains
TradicionÄli lietojumprogrammas izmantoja datu bÄzes strukturÄtai informÄcijas glabÄÅ”anai un lokÄlos diskus vai izplatÄ«tÄs failu sistÄmas, kurÄs tika izmesti visi nestrukturÄtie vai pat daļÄji strukturÄtie dati. Pieaugot nestrukturÄto datu apjomam, izstrÄdÄtÄji saprata, ka POSIX ir pÄrÄk pļÄpÄ«gs, tam ir ievÄrojamas papildu izmaksas, un galu galÄ tas kavÄ lietojumprogrammu veiktspÄju, pÄrejot uz patiesi lieliem mÄrogiem.
Tas galvenokÄrt veicinÄja jauna datu glabÄÅ”anas standarta raÅ”anos, tas ir, mÄkoÅdatoÅ”anas krÄtuvi, kas galvenokÄrt darbojas, pamatojoties uz REST API un atbrÄ«vo lietojumprogrammu no apgrÅ«tinoÅ”Äs lokÄlÄs datu krÄtuves uzturÄÅ”anas. Å ajÄ gadÄ«jumÄ lietojumprogramma faktiski pÄriet bezvalsts režīmÄ (jo stÄvoklis atrodas attÄlajÄ krÄtuvÄ). MÅ«sdienu lietojumprogrammas tiek veidotas no nulles, paturot prÄtÄ Å”o faktoru. Parasti jebkura moderna lietojumprogramma, kas apstrÄdÄ viena vai cita veida datus (žurnÄlus, metadatus, blobus utt.), tiek veidota pÄc mÄkoÅdatoÅ”anas paradigmas, kur stÄvoklis tiek pÄrsÅ«tÄ«ts uz programmatÅ«ras sistÄmu, kas Ä«paÅ”i paredzÄta tÄ glabÄÅ”anai.
StÄvokļa konteinera pieeja liek Å”ai paradigmai atgriezties tieÅ”i tur, kur tÄ sÄkÄs!
Izmantojot POSIX saskarnes datu glabÄÅ”anai, lietojumprogrammas darbojas tÄ, it kÄ tÄm bÅ«tu statuss, un Ŕī iemesla dÄļ tÄs atŔķiras no svarÄ«gÄkajiem uz mÄkoÅiem orientÄta dizaina principiem, tas ir, no iespÄjas mainÄ«t lietojumprogrammu darbinieku pavedienu lielumu atkarÄ«bÄ no ienÄkoÅ”Ä ievades ielÄde, pÄrejiet uz jaunu mezglu, tiklÄ«dz paÅ”reizÄjais mezgls neizdodas, un tÄ tÄlÄk.
AplÅ«kojot Å”o situÄciju tuvÄk, mÄs atklÄjam, ka, izvÄloties datu krÄtuvi, mÄs atkal un atkal saskaramies ar POSIX vs. REST API dilemmu, BET ar papildu POSIX problÄmu saasinÄÅ”anos Kubernetes vidi izkliedÄtÄ rakstura dÄļ. It Ä«paÅ”i,
- POSIX ir pļÄpÄ«gs: POSIX semantika pieprasa, lai katra darbÄ«ba bÅ«tu saistÄ«ta ar metadatiem un failu deskriptoriem, kas palÄ«dz uzturÄt operÄcijas stÄvokli. Tas rada ievÄrojamas izmaksas, kurÄm nav reÄlas vÄrtÄ«bas. Objektu krÄtuves API, Ä«paÅ”i S3 API, atbrÄ«vojas no Ŕīm prasÄ«bÄm, ļaujot lietojumprogrammai aktivizÄties un pÄc tam āaizmirstā par zvanu. UzglabÄÅ”anas sistÄmas atbilde norÄda, vai darbÄ«ba bija veiksmÄ«ga vai nÄ. Ja tas neizdodas, lietojumprogramma var mÄÄ£inÄt vÄlreiz.
- TÄ«kla ierobežojumi: IzkliedÄtÄ sistÄmÄ tiek domÄts, ka var bÅ«t daudzas lietojumprogrammas, kas mÄÄ£ina rakstÄ«t datus tajÄ paÅ”Ä pievienotajÄ datu nesÄjÄ. TÄpÄc lietojumprogrammas ne tikai sacentÄ«sies savÄ starpÄ par datu pÄrraides joslas platumu (lai nosÅ«tÄ«tu datus uz datu nesÄju), bet arÄ« pati uzglabÄÅ”anas sistÄma konkurÄs par Å”o joslas platumu, nosÅ«tot datus pa fiziskajiem diskiem. POSIX skaļuma dÄļ tÄ«kla zvanu skaits palielinÄs vairÄkas reizes. No otras puses, S3 API nodroÅ”ina skaidru atŔķirÄ«bu starp tÄ«kla izsaukumiem, kas tiek veikti no klienta uz serveri, un tiem, kas notiek serverÄ«.
- DroŔība: POSIX droŔības modelis ir paredzÄts aktÄ«vai cilvÄku lÄ«dzdalÄ«bai: administratori konfigurÄ Ä«paÅ”us piekļuves lÄ«meÅus katram lietotÄjam vai grupai. Å o paradigmu ir grÅ«ti pielÄgot uz mÄkoÅiem orientÄtai pasaulei. MÅ«sdienu lietojumprogrammas ir atkarÄ«gas no droŔības modeļiem, kuru pamatÄ ir API, kur piekļuves tiesÄ«bas tiek definÄtas kÄ politiku kopums, tiek pieŔķirti pakalpojumu konti, pagaidu akreditÄcijas dati utt.
- VadÄmÄ«ba: statusu saturoÅ”iem konteineriem ir noteiktas pÄrvaldÄ«bas izmaksas. MÄs runÄjam par paralÄlÄs piekļuves datiem sinhronizÄciju, datu konsekvences nodroÅ”inÄÅ”anu, tas viss prasa rÅ«pÄ«gi apsvÄrt, kÄdus datu piekļuves modeļus izmantot. Papildu programmatÅ«ra ir jÄinstalÄ, jÄuzrauga un jÄkonfigurÄ, nemaz nerunÄjot par papildu izstrÄdes pasÄkumiem.
Konteinera datu glabÄÅ”anas interfeiss
Lai gan konteineru krÄtuves interfeiss (CSI) ir ļoti palÄ«dzÄjis Kubernetes apjoma slÄÅa izplatÄ«Å”anÄ, daļÄji nododot to treÅ”o puÅ”u krÄtuves piegÄdÄtÄjiem, tas arÄ« netÄ«Å”Äm ir veicinÄjis pÄrliecÄ«bu, ka statusful konteinera pieeja ir ieteicamÄ metode datu glabÄÅ”ana Kubernetes.
CSI tika izstrÄdÄts kÄ standarts patvaļīgu bloku un failu uzglabÄÅ”anas sistÄmu nodroÅ”inÄÅ”anai mantotajÄm lietojumprogrammÄm, kad tÄs darbojas Kubernetes. Un, kÄ parÄdÄ«ts Å”ajÄ rakstÄ, vienÄ«gÄ situÄcija, kurÄ ir jÄga statusful konteinera pieejai (un CSI tÄs paÅ”reizÄjÄ formÄ), ir tad, ja pati lietojumprogramma ir mantota sistÄma, kurÄ nav iespÄjams pievienot atbalstu objektu krÄtuves API. .
Ir svarÄ«gi saprast, ka, izmantojot CSI tÄ paÅ”reizÄjÄ formÄ, tas ir, montÄjot apjomus, strÄdÄjot ar modernÄm lietojumprogrammÄm, mÄs saskarsimies ar aptuveni tÄdÄm paÅ”Äm problÄmÄm, kas radÄs sistÄmÄs, kurÄs datu glabÄÅ”ana tiek organizÄta POSIX stilÄ.
LabÄka pieeja
Å ajÄ gadÄ«jumÄ ir svarÄ«gi saprast, ka lielÄkÄ daļa lietojumprogrammu pÄc bÅ«tÄ«bas nav Ä«paÅ”i izstrÄdÄtas darbam ar statusu vai bezvalstniekiem. Å Ä« darbÄ«ba ir atkarÄ«ga no vispÄrÄjÄs sistÄmas arhitektÅ«ras un konkrÄtajÄm dizaina izvÄlÄm. ParunÄsim nedaudz par statusa pieteikumiem.
PrincipÄ visus lietojumprogrammu datus var iedalÄ«t vairÄkos plaÅ”os veidos:
- ŽurnÄla dati
- Laika zīmoga dati
- Darījuma dati
- Metadati
- Konteineru attÄli
- Blob (binÄro lielu objektu) dati
Visi Å”ie datu veidi tiek ļoti labi atbalstÄ«ti mÅ«sdienu krÄtuves platformÄs, un ir vairÄkas mÄkoÅdatoÅ”anas platformas, kas pielÄgotas datu piegÄdei katrÄ no Å”iem konkrÄtajiem formÄtiem. PiemÄram, darÄ«jumu dati un metadati var atrasties mÅ«sdienÄ«gÄ mÄkoÅdatnÄ, piemÄram, CockroachDB, YugaByte utt. Konteinera attÄlus vai lÄses datus var saglabÄt docker reÄ£istrÄ, kura pamatÄ ir MinIO. Laika zÄ«mogu datus var saglabÄt laikrindu datubÄzÄ, piemÄram, InfluxDB utt. Å eit mÄs neiedziļinÄsimies sÄ«kÄk par katru datu tipu un tÄ lietojumprogrammÄm, taÄu vispÄrÄ«gÄ ideja ir izvairÄ«ties no pastÄvÄ«gas datu glabÄÅ”anas, kas ir atkarÄ«ga no lokÄla diska montÄžas.
TurklÄt bieži vien ir efektÄ«vi nodroÅ”inÄt pagaidu keÅ”atmiÅas slÄni, kas kalpo kÄ pagaidu failu krÄtuve lietojumprogrammÄm, taÄu lietojumprogrammas nedrÄ«kst bÅ«t atkarÄ«gas no Ŕī slÄÅa kÄ patiesÄ«bas avota.
Stateful lietojumprogrammu krÄtuve
Lai gan vairumÄ gadÄ«jumu ir lietderÄ«gi saglabÄt lietojumprogrammas bez statusa, tÄm lietojumprogrammÄm, kas paredzÄtas datu glabÄÅ”anai, piemÄram, datu bÄzÄm, objektu krÄtuvÄm, atslÄgu vÄrtÄ«bu krÄtuvÄm, ir jÄbÅ«t statusam. ApskatÄ«sim, kÄpÄc Ŕīs lietojumprogrammas tiek izvietotas Kubernetes. Å emsim par piemÄru MinIO, taÄu lÄ«dzÄ«gi principi attiecas uz jebkuru citu lielu mÄkoÅdatoÅ”anas sistÄmu.
MÄkoÅprogrammas ir izstrÄdÄtas, lai pilnÄ«bÄ izmantotu konteineriem raksturÄ«gÄs elastÄ«bas priekÅ”rocÄ«bas. Tas nozÄ«mÄ, ka viÅi neizdara nekÄdus pieÅÄmumus par vidi, kurÄ tie tiks izvietoti. PiemÄram, MinIO izmanto iekÅ”Äju dzÄÅ”anas kodÄÅ”anas mehÄnismu, lai nodroÅ”inÄtu sistÄmu ar pietiekamu noturÄ«bu, lai tÄ varÄtu darboties pat tad, ja puse disku neizdodas. MinIO arÄ« pÄrvalda datu integritÄti un droŔību, izmantojot patentÄtu servera puses jaukÅ”anu un Å”ifrÄÅ”anu.
Å ÄdÄm uz mÄkoÅiem orientÄtÄm lietojumprogrammÄm vietÄjie pastÄvÄ«gie sÄjumi (PV) ir visÄrtÄkie kÄ rezerves krÄtuve. VietÄjais PV nodroÅ”ina iespÄju saglabÄt neapstrÄdÄtus datus, savukÄrt lietojumprogrammas, kas darbojas virs Å”iem PV, neatkarÄ«gi apkopo informÄciju, lai mÄrogotu datus un pÄrvaldÄ«tu pieaugoÅ”Äs datu prasÄ«bas.
Å Ä« pieeja ir daudz vienkÄrÅ”Äka un ievÄrojami mÄrogojamÄka nekÄ uz CSI balstÄ«ti PV, kas sistÄmÄ ievieÅ” savus datu pÄrvaldÄ«bas un dublÄÅ”anas slÄÅus; Lieta ir tÄda, ka Å”ie slÄÅi parasti ir pretrunÄ ar lietojumprogrammÄm, kas paredzÄtas statusa noteikÅ”anai.
SpÄcÄ«ga virzÄ«ba uz datu atsaisti no aprÄÄ·iniem
Å ajÄ rakstÄ mÄs runÄjÄm par to, kÄ lietojumprogrammas tiek pÄrorientÄtas uz darbu bez stÄvokļa saglabÄÅ”anas vai, citiem vÄrdiem sakot, datu glabÄÅ”ana tiek atdalÄ«ta no skaitļoÅ”anas tajÄ. NoslÄgumÄ aplÅ«kosim dažus reÄlus Ŕīs tendences piemÄrus.
LÄ«dzÄ«gus modeļus var redzÄt arÄ« citÄs lielÄs analÄ«tiskajÄs platformÄs, tostarp Presto, Tensorflow to R, Jupyter. PÄrlÄdÄjot stÄvokli uz attÄlÄm mÄkoÅu krÄtuves sistÄmÄm, kļūst daudz vieglÄk pÄrvaldÄ«t un mÄrogot jÅ«su lietojumprogrammu. TurklÄt tas atvieglo lietojumprogrammas pÄrnesamÄ«bu uz dažÄdÄm vidÄm.
Avots: www.habr.com