Postgres Talaado No. 5: "PostgreSQL iyo Kubernetes. CI/CD Tijaabi otomaatiga"

Postgres Talaado No. 5: "PostgreSQL iyo Kubernetes. CI/CD Tijaabi otomaatiga"

Dhamaadkii sannadkii hore, waxaa dhacday barnaamij kale oo toos ah oo laga sii daayay bulshada Ruushka PostgreSQL #RuPostgres, inta lagu guda jiro kaas oo ay aasaasaha Nikolai Samokhvalov la hadlay agaasimaha farsamada Flant Dmitry Stolyarov ku saabsan DBMS this macnaha Kubernetes.

Waxaan daabacaynaa qoraal ah qaybta ugu muhiimsan ee dooddan, iyo at Kanaalka bulshada ee YouTube Muuqaal buuxa ayaa la dhejiyay:

Databases iyo Kubernets

НС: Ka hadli mayno VACUUM-ka iyo baadhista maanta. Waxaan rabnaa inaan ka hadalno Kubernetes. Waan ogahay inaad leedahay khibrad sannado badan. Waxaan daawaday fiidiyowyadaada oo aan dib u daawaday qaar ka mid ah... Aynu si toos ah u gaadhno meesha: sababta Postgres ama MySQL ee K8s gabi ahaanba?

ДС: Su'aashan jawaab sugan ma jirto mana noqon karto. Laakiin guud ahaan, tani waa fudayd iyo raaxaysi... karti. Qof kastaa wuxuu rabaa adeegyo la maareeyo.

НС: Sidee RDS, guriga oo kaliya?

ДС: Haa: sida RDS, meel kasta.

НС"Meel kasta" waa qodob wanaagsan. Shirkadaha waaweyn, wax walba waxay ku yaalaan meelo kala duwan. Waa maxay sababta, haddii ay tahay shirkad weyn, ma qaadanayso xal diyaar ah? Tusaale ahaan, Nutanix waxay leedahay horumarkeeda, shirkadaha kale (VMware ...) waxay leeyihiin "RDS, kaliya guriga."

ДСLaakiin waxaan ka hadleynaa hirgelinta gaar ah oo ku shaqeyn doona oo kaliya shuruudaha qaarkood. Oo haddii aan ka hadlayno Kubernetes, ka dibna waxaa jira noocyo kala duwan oo kaabayaal ah (kaas oo ku jiri kara K8s). Asal ahaan kani waa halbeega API-yada daruuraha...

НС: Sidoo kale waa bilaash!

ДС: Muhiim maaha. Xoriyaddu waxay muhiim u tahay ma aha qayb aad u weyn oo suuqa ah. Wax kale ayaa muhiim ah... Waxaa laga yaabaa inaad xasuusato warbixinta "Databases iyo Kubernets?

НС: Haa.

ДС: Waxaan gartay in si aan mugdi ku jirin loo qaabilay. Dadka qaarkiis waxay u maleeyeen inaan dhahay: "Guys, aan helno dhammaan macluumaadka ku saabsan Kubernetes!", Halka qaar kalena ay go'aansadeen in kuwani ay dhamaantood yihiin baaskiillo aad u xun. Laakiin waxaan rabay inaan idhaahdo wax ka duwan: "Fiiri waxa dhacaya, dhibaatooyinka jira iyo sida loo xalin karo. Miyaynu hadda isticmaalnaa xogta Kubernetes? Wax soo saar? Hagaag, kaliya haddii aad jeceshahay... samaynta waxyaabaha qaarkood. Laakiin dev, waxaan dhihi karaa inaan ku talinayo. Dev, firfircoonida abuurista/tirtirka bay'ada aad bay muhiim u tahay."

NS: Dev, ma waxaad ula jeedaa dhammaan bay'adaha aan faa'iido lahayn? Diyaarinta, QA…

ДС: Haddii aan ka hadleyno perf taagan, ka dibna malaha maaha, sababtoo ah shuruudaha jira ayaa gaar ah. Haddaynu ka hadlayno kiisas gaar ah oo kayd xogeed aad u weyn looga baahan yahay dejinta, markaas malaha... Haddii kani yahay deegaan joogto ah, oo muddo dheer noolaa, waa maxay faa'iidada ay leedahay in kaydku ku yaal K8s?

НС: Midna. Laakiin halkee ayaan ku aragnaa degaano taagan? Bey'ad taagan ayaa noqon doonta berrito duugoobay.

ДС: Diyaarintu waxay noqon kartaa mid taagan. Waxaan leenahay macaamiil...

НС: Haa, aniguna mid baan haystaa. Waa dhibaato weyn haddii aad haysato kayd 10 TB ah iyo 200 GB oo kayd ah...

ДС: Waxaan hayaa kiis aad u fiican! Marka la diyaarinayo waxaa jira xog-ururin alaabeed kaas oo isbeddello lagu sameeyo. Oo waxaa jira badhan: "gudbi wax soo saarka". Isbeddelladan - deltas - ayaa lagu daray (waxay u muuqataa inay si fudud ula midaysan yihiin API) xagga wax soo saarka. Tani waa doorasho aad u qalaad.

НС: Waxaan ku arkay dooxada dhexdeeda shirkado bilaabay oo fadhiya RDS ama xitaa Heroku - kuwani waa sheekooyin 2-3 sano ka hor ah - waxayna soo dejiyaan qashinka kumbuyuutarkooda. Sababtoo ah kaydka xogta ayaa weli ah 80 GB oo keliya, waxaana jira meel bannaan oo laptop ah. Kadibna waxay u soo iibsadaan saxanooyin dheeri ah qof walba si ay u helaan 3 database si ay u fuliyaan horumaro kala duwan. Tani waa sida ay sidoo kale u dhacdo. Waxaan sidoo kale arkay inaysan ka baqin inay nuqul ka sameeyaan prod-ka - waxay aad ugu xiran tahay shirkadda. Laakiin waxaan sidoo kale arkay inay aad u baqayaan, oo inta badan aanay haysan waqti iyo gacmo ku filan. Laakiin ka hor intaanan u gudbin mawduucan, waxaan rabaa inaan maqlo Kubernetes. Si sax ah miyaan u fahmay in aanu qofna weli ku faanin?

ДС: Waxaan ku haynaa xog-ururin yar oo ku jira prod. Waxaan ka hadlaynaa tiro tobanaan gigabytes ah iyo adeegyo aan muhiim ahayn kuwaas oo aan aad uga caajisnay in aan samayno nuqullo (mana jirto baahi noocaas ah). Oo waa haddii ay jirto kayd caadi ah oo hoos yimaada Kubernetes. Xog-ururintani waxa ay ku shaqaynaysay mishiin dalwad ah - shuruudi ku jirta VMware, dusha sare ee nidaamka kaydinta. Waxaan dhignay PV oo hadda waxaan u wareejin karnaa mashiinka ilaa mashiinka.

НС: Databases cabbirkan, ilaa 100 GB, waxaa lagu soo rogi karaa dhowr daqiiqo gudahood saxannada wanaagsan iyo shabakad wanaagsan, sax? Xawaaraha 1 GB ilbiriqsikii ma aha mid qalaad.

ДС: Haa, hawlgalka tooska ah tani dhib maaha.

НС: Hagaag, waa inaan ka fikirnaa prod. Oo haddii aan ka fiirsaneyno Kubernetes deegaannada aan soo saarin, maxaan sameynaa? Waxaan taas ku arkaa Zalando samee hawlwadeen, ee Crunchy miinshaar, waxa jira doorashooyin kale. Waxaana jira OnGres - Kani waa saaxiibkayaga wanaagsan Alvaro oo ka socda Isbaanishka: waxa ay sameeyaan kaliya maahan hawl wadeen, iyo dhammaan qaybinta (StackGres), kaas oo, marka lagu daro Postgres lafteeda, waxay sidoo kale go'aansadeen inay kaydiyaan, wakiilka ergayga ...

ДС: Ergaygu waa maxay? Isku dheelitirka taraafikada Postgres gaar ahaan?

НС: Haa. Taasi waa, waxay u arkaan sida: haddii aad qaadato qaybinta Linux iyo kernel, markaa PostgreSQL ee caadiga ah waa kernel, waxayna rabaan inay sameeyaan qaybinta taas oo noqon doonta mid saaxiibtinimo leh oo ku socota Kubernetes. Waxay isku daraan qaybo (kaabayaal, iwm.) oo ay tirtiraan si ay si fiican u shaqeeyaan.

ДС: Aad u fiican! Asal ahaan kani waa software si aad u abuurto Postgres aad maamusho.

НСQaybinta Linux waxay leedahay dhibaatooyin weligeed ah: sida loo sameeyo darawalada si dhammaan qalabka loo taageero. Waxayna qabaan fikradda ah inay ka shaqayn doonaan Kubernetes. Waan ogahay in hawl-wadeenka Zalando aanu dhawaan ku aragnay xidhiidhka AWS tanina hadda aad uma fiicna. Ma aha in lagu xidho kaabayaal gaar ah - waa maxay faa'iidada markaa?

ДС: Ma garanayo sida saxda ah xaaladda Zalando uu galay, laakiin kaydinta Kubernetes hadda waxaa loo sameeyay qaab aan suurtagal ahayn in la qaato kaydinta diskka iyadoo la adeegsanayo habka guud. Dhawaan heerka caadiga ah - in version ugu dambeeyay Tilmaamaha CSI - Waxaan suurtagelinay sawirro sawir-qaadis ah, laakiin xaggee laga hirgeliyaa? Daacadnimo, wax walba wali waa cayriin ... Waxaan isku dayeynaa CSI dusha sare ee AWS, GCE, Azure, vSphere, laakiin isla marka aad bilowdo isticmaalkeeda, waxaad arki kartaa inaysan wali diyaar ahayn.

НС: Taasi waa sababta aan mararka qaarkood u baahanahay inaan ku tiirsanno kaabayaasha. Waxaan u maleynayaa in tani ay weli tahay marxalad hore - xanuunka sii kordhaya. Su'aal: Maxaa talo ah oo aad siin lahayd kuwa cusub ee raba inay isku dayaan PgSQL gudaha K8s? Waa maxay hawlwadeenka laga yaabaa?

ДСDhibaatadu waxay tahay Postgres waa 3% annaga. Waxaan sidoo kale ku haynaa liis aad u ballaaran oo software kala duwan oo ku yaal Kubernetes, xitaa ma qori doono wax walba. Tusaale ahaan, Elasticsearch. Waxaa jira hawl-wadeenno badan: qaar ayaa si firfircoon u horumaraya, kuwa kalena maaha. Anagu nafteena ayaanu u samaynay shuruudo ku saabsan waxa uu shaqaaleyuhu haysto si aanu si dhab ah ugu qaadano. Hawl wadeen gaar ah oo loogu talagalay Kubernetes - kuma jiro "shaqaale si uu wax ugu qabto xaaladaha Amazon" Redis (waxaan daabici doonaa maqaal isaga ku saabsan dhawaan).

НС: Oo maaha MySQL midna? Waan ogahay in Percona ... maadaama ay hadda ka shaqeynayaan MySQL, MongoDB, iyo Postgres, waa inay abuuraan nooc ka mid ah xalka caalamiga ah: dhammaan xog-ururinta, dhammaan bixiyeyaasha daruuraha.

ДСMa aanan haysan waqti aan ku eegno hawlwadeenada MySQL. Tani ma aha diiraddayada ugu weyn hadda. MySQL waxay si fiican u shaqeysaa si gooni ah. Maxaad u isticmaashaa hawl wadeenka haddi aad kaliya soo saari karto kaydka kaydka... Waxaad bilaabi kartaa weel Docker ah oo wata Boostada, ama waxaad u furi kartaa hab fudud.

НС: Waxaa jirtay su'aal arrintan ku saabsan sidoo kale. Ma jiro hawlwadeen gabi ahaanba?

ДС: Haa, 100% naga mid ah waxaanu leenahay PostgreSQL oo ku shaqeeya hawlwadeen la'aan. Ilaa hadda. Waxaan si firfircoon ugu isticmaalnaa hawlwadeenka Prometheus iyo Redis. Waxaan wadnaa qorshooyin aan ku raadineyno hawlwadeen Elasticsearch - waa kan ugu "dabka", sababtoo ah waxaan rabnaa inaan ku rakibno Kubernetes 100% kiisaska. Sida aan rabno inaan hubinno in MongoDB sidoo kale had iyo jeer lagu rakibo Kubernetes. Halkan waxaa ka muuqda rabitaanno gaar ah - waxaa jira dareen ah in xaaladahan wax la qaban karo. Oo xataa ma aan eegin Postgres. Dabcan, waan ognahay inay jiraan xulashooyin kala duwan, laakiin dhab ahaantii waxaan haysanaa gooni-gooni ah.

DB si loogu tijaabiyo Kubernetes

НСAan u gudubno mowduuca imtixaanka. Sida loo beddelo xogta xogta - laga eego dhinaca DevOps. Waxaa jira adeeg-yaro, xog-ururin badan, wax baa isbedelaya meel mar kasta. Sida loo hubiyo CI/CD-ga caadiga ah si wax walba u hagaagsan yihiin marka loo eego aragtida DBMS. Waa maxay habkaagu?

ДС: Hal jawaab ma noqon karto. Waxaa jira dhowr doorasho. Midka koowaad waa cabbirka saldhigga aan rabno inaan soo rogno. Adiga laftaadu waxa ay sheegtay in shirkaduhu ay ku kala aragti duwan yihiin in ay haystaan ​​nuqul ka mid ah kaydka xogta wax soo saarka ee dev iyo stage.

НС: Oo marka la eego shuruudaha GDPR, waxaan u maleynayaa inay aad uga taxadaraan ... Waxaan dhihi karaa in Yurub ay mar hore bilaabeen inay soo rogaan ganaax.

ДСLaakiin inta badan waxaad qori kartaa software ka qaada qashinka wax soo saarka oo daboolaya. Xogta wax soo saarka waa la helay (sawir, shub, nuqul binary...), laakiin waa qarsoodi. Taa baddalkeeda, waxaa jiri kara qoraallo jiil: kuwani waxay noqon karaan qalabyo ama kaliya qoraal soo saara xog ururin weyn. Dhibaatadu waxay tahay: intee in le'eg ayay qaadanaysaa in la abuuro sawir sal ah? Iyo intee in le'eg ayay qaadanaysaa in la geeyo deegaanka la rabo?

Waxaan u nimid nidaam: haddii macmiilku leeyahay xog go'an (nooca ugu yar ee xogta), ka dib waxaan u isticmaalnaa si caadi ah. Haddii aan ka hadlayno dib u eegista deegaanka, markii aan abuurnay laan, waxaan geynay tusaale arjiga - waxaan ku dhejineynaa kayd yar oo halkaas ah. Laakiin si fiican ayay u noqotay ikhtiyaar, marka aan qashinka ka qaadno wax soo saarka hal mar maalintii (habeenkii) oo aan dhisno weel Docker ah oo leh PostgreSQL iyo MySQL oo leh xogtan raran oo ku salaysan. Haddii aad u baahan tahay inaad ku balaadhiso xogta 50 jeer sawirkan, tan si fudud oo degdeg ah ayaa loo sameeyaa.

НС: Sida fudud loo koobiyeeyo?

ДСXogta waxaa si toos ah loogu kaydiyaa sawirka Docker. Kuwaas. Waxaan haynaa sawir diyaarsan, inkastoo 100 GB. Thanks to lakabyada Docker, waxaan si dhakhso ah u geyn karnaa sawirkan inta jeer ee aan u baahanahay. Habka waa nacas, laakiin si fiican ayuu u shaqeeyaa.

НС: Kadib, markaad tijaabiso, waxay isku beddeshaa isla gudaha Docker, sax? Nuqul-ku qor gudaha Docker - iska tuur oo mar kale tag, wax walba waa hagaagsan yihiin. Fasalka! Oo ma waxaad hore u isticmaashay si buuxda?

ДС: Muddo dheer.

НС: Waxaan sameynaa waxyaabo la mid ah. Kaliya ma isticmaalno Docker's nuqul-qoraal, laakiin mid kale.

ДС: Ma aha mid guud. Docker-na meel walba wuu ka shaqeeyaa.

НС: Aragti ahaan, haa. Laakiin waxaan sidoo kale ku haynaa modules halkaas, waxaad samayn kartaa modules kala duwan oo aad la shaqayn kartaa hababka file kala duwan. Waa maxay daqiiqad halkan. Dhinaca Postgres, waxan oo dhan waxaan u eegeynaa si ka duwan. Hadda waxaan ka eegay dhinaca Docker oo waxaan arkay in wax walba ay adiga kuu shaqeeyaan. Laakiin haddii kaydku uu weyn yahay, tusaale ahaan, 1 TB, markaa waxaas oo dhan waxay qaadataa waqti dheer: hawlgallada habeenkii, iyo wax kasta oo lagu daro Docker… Iyo haddii 5 TB lagu shubo Docker…

ДСWaa maxay faraqa u dhexeeya: kuwani waa blobs, kaliya bits iyo bytes.

НС: Farqigu waa kan: ma waxaad ku samaysaa qashin qub iyo soo celin?

ДС: Looma baahna haba yaraatee. Hababka loo soo saaro sawirkan way kala duwanaan karaan.

НС: Macaamiisha qaarkood, waxaanu u samaynay si ay halkii si joogto ah u soo saari lahaayeen sawirka aasaasiga ah, waxaan si joogto ah ula soconaa taariikhda. Asal ahaan waa nuqul, laakiin waxa ay si toos ah uga heshaa xogta sayidkaaga, laakiin iyada oo loo marayo kayd. Kaydka binary-ga ah ee WAL-yada la soo dejiyo maalin kasta, halkaas oo kaydinta laga qaato... WAL-yadani waxay markaa ku gaadhaan sawirka gundhigga iyagoo waxoogaa daahitaan ah (macnaha 1-2 ilbiriqsi). Si kasta ayaanu uga soo koobnay - hadda waxaan leenahay ZFS qaab ahaan.

ДСLaakin ZFS waxaad ku xaddidan tahay hal noode.

НС: Haa. Laakiin ZFS sidoo kale waxay leedahay sixir diri: iyada waxaad ku diri kartaa sawir-qaadis iyo xitaa (ma tijaabin tan wali, laakiin ...) waxaad u diri kartaa delta inta u dhaxaysa laba PGDATA. Dhab ahaantii, waxaan haynaa qalab kale oo aynaan runtii ka fiirsan hawlahan oo kale. PostgreSQL waxay leedahay pg_dib u celin, Kaas oo u shaqeeya sida "smart" rsync, oo ka boodaya wax badan oo aanad u baahnayn inaad daawato, sababtoo ah ma jiraan wax iska beddelay. Waxaan samayn karnaa isku-dubarid degdeg ah oo u dhexeeya labada adeegayaal oo aan dib u soo celinno si la mid ah.

Marka, tan, dhinaca DBA badan, waxaan isku dayeynaa inaan abuurno qalab noo ogolaanaya inaan sameyno wax la mid ah waxaad tidhi: waxaan leenahay hal database, laakiin waxaan rabnaa inaan tijaabino wax 50 jeer, ku dhawaad ​​isku mar.

ДС: 50 jeer waxay ka dhigan tahay inaad u baahan tahay inaad dalbato 50 xaaladood oo Spot ah.

НС: Maya, wax walba waxaan ku sameynaa hal mashiin.

ДС: Laakin sideed u kordhin doontaa 50 jeer haddii xogtan hal kayd ahi tahay, dheh, terabyte. Waxay u badan tahay inay u baahan tahay 256 GB oo RAM ah oo shuruudaysan?

НС: Haa, mararka qaarkood waxaad u baahan tahay xusuus badan - taasi waa caadi. Laakiin tani waa tusaale ka mid ah nolosha. Mashiinka wax soo saarka wuxuu leeyahay 96 cores iyo 600 GB. Isla mar ahaantaana, 32 cores (xitaa 16 cores hadda mararka qaarkood) iyo 100-120 GB oo xusuusta ah ayaa loo isticmaalaa kaydka xogta.

ДС: Oo 50 koobi ayaa ku habboon?

НС: Markaa waxaa jira hal nuqul oo keliya, ka dibna nuqul-ku-qoris (ZFS) ayaa shaqeeya... Waxaan kuu sheegi doonaa si faahfaahsan.

Tusaale ahaan, waxaanu haynaa 10 TB kayd ah. Waxay u sameeyeen saxan, ZFS sidoo kale waxay ku cadaadisay cabbirkeeda boqolkiiba 30-40. Maadaama aynaan samaynin tijaabinta culeyska, waqtiga jawaabta saxda ah muhiim nooguma aha: ha ahaato ilaa 2 jeer gaabis - taasi waa caadi.

Waxaan fursad siinaa barnaamijyada, QA, DBA, iwm. ku samee tijaabada 1-2 threads. Tusaale ahaan, waxaa laga yaabaa inay wadaan nooc socdaal. Uma baahnid 10 koor markiiba - waxay u baahan tahay 1 Postgres backend, 1 core. Tahriibku wuu bilaabmayaa - malaha autovacuum wali wuu bilaaban doonaa, ka dibna xudunta labaad ayaa la isticmaali doonaa. Waxaan haynaa 16-32 koofiyadaha loo qoondeeyay, markaa 10 qof ayaa shaqayn kara isku mar, dhib malahan.

Sababtoo ah jir ahaan PGDATA Isla sidaas oo kale, waxay soo baxday in aan dhab ahaantii khiyaanayno Postgres. Khiyaamadu waa tan: tusaale ahaan, 10 Postgres ayaa la bilaabay isku mar. Waa maxay dhibaatadu inta badan? Waxay dhigeen la wadaago_buffers, aynu nidhaahno 25%. Sidaa darteed, tani waa 200 GB. Ma awoodi doontid inaad bilowdo wax ka badan seddex ka mid ah kuwan, sababtoo ah xusuusta ayaa dhammaan doonta.

Laakiin mar mar waxaan ogaanay in tani aysan muhiim ahayn: waxaan dhignay wadaag_buffers ilaa 2 GB. PostgreSQL waxay leedahay cabbirka_cache_wax ku ool ah, run ahaantiina waa kan keliya ee saameeya qorshayaasha. Waxaan u dhignay 0,5 TB. Xitaa dhib ma laha in aysan dhab ahaantii jirin: wuxuu sameeyaa qorshooyin sida haddii ay jiraan.

Sidaa darteed, marka aan tijaabinno nooc ka mid ah socdaalka, waxaan ururin karnaa dhammaan qorshooyinka - waxaan arki doonaa sida ay u dhici doonto wax soo saarka. Ilbiriqsiyadu way kala duwanaan doonaan (gaabis), laakiin xogta aan dhab ahaantii akhrinay, iyo qorshayaasha laftooda (waxa JOINs ku jira, iwm.) waxay u soo baxaan si isku mid ah sida wax soo saarka. Waxaadna ku wadi kartaa jeegag badan oo noocaas ah oo barbar socda hal mashiin.

ДС: Miyaanad u malayn in ay jiraan dhibaatooyin yar halkan? Midka koowaad waa xalka kaliya ee ka shaqeeya PostgreSQL. Habkani waa mid gaar ah, maaha mid guud. Midda labaad waa in Kubernetes (iyo wax kasta oo teknoolajiyada daruuriga ah ay hadda u socdaan) waxay ku lug leeyihiin qanjidhada badan, iyo noodhadhkaani waa ephemeral. Xaaladdaadana waa go'aan dawladeed oo joogto ah. Waxyaalahan ayaa iga dhigaya inaan is khilaafo.

НСMarka hore, waan aqbalay, tani waa sheeko Postgres oo keliya. Waxaan u maleynayaa haddii aan haysano nooc ka mid ah IO toos ah iyo barkad kayd ah oo ku dhawaad ​​​​dhammaan xusuusta, habkani ma shaqeyn doono - qorshooyinku way ka duwanaan doonaan. Laakiin hadda waxaan kaliya la shaqeynaa Postgres, kama fikirno kuwa kale.

Ku saabsan Kubernetes. Adiga laftaada ayaa meel kasta noo sheegta in aanu haysano xog ururin joogto ah. Haddii tusaale ahaan ku guuldareysto, waxa ugu muhiimsan waa in la badbaadiyo diskka. Halkan waxaan sidoo kale ku haynaa dhammaan madal ku yaal Kubernetes, iyo qaybta Postgres waa gooni (inkasta oo ay halkaas joogi doonto hal maalin). Sidaa darteed, wax walbaa waa sidan oo kale: tusaale ahaan wuu dhacay, laakiin waxaan badbaadinay PV waxaanan si fudud ugu xirnay tusaale kale (cusub), sida haddii aysan waxba dhicin.

ДС: Marka laga eego aragtidayda, waxaan ka abuurnaa pods gudaha Kubernetes. K8s - laastikada: guntinnada ayaa la dalbadaa sida loogu baahdo. Hawshu waa in si fudud loo sameeyo boodh oo la yidhaahdo waxay u baahan tahay qadar X ah oo kheyraad ah, ka dibna K8s ayaa ogaan doona keligiis. Laakiin taageerada kaydinta ee Kubernetes wali waa mid aan degganayn: 1.16gudaha 1.17 (siideyntan waa la sii daayay недели ago) Astaamahani waxay noqdeen beta kaliya.

Lix bilood ilaa sannad ayaa dhaafi doona - way badnaan doontaa ama way yaraan doontaa, ama ugu yaraan waa lagu dhawaaqi doonaa sidaas. Dabadeed suurtagalnimada sawir-qaadista iyo cabbirku waxay xallinaysaa dhibaatadaada gebi ahaanba. Sababtoo ah waxaad leedahay saldhig. Haa, ma noqon karto mid aad u dhakhso badan, laakiin xawaaruhu wuxuu ku xiran yahay waxa "hoosta daboolka", sababtoo ah qaar ka mid ah fulinta ayaa koobi kara oo koobi kara-qorista heerka nidaamka hoose ee diskka.

НС: Sidoo kale waa lagama maarmaan in dhammaan mishiinnada (Amazon, Google ...) si ay u bilaabaan taageerada noocaan - tani waxay sidoo kale qaadataa wakhti.

ДС: Weli ma isticmaalno. Kayaga ayaan isticmaalnaa.

Horumarinta deegaanka ee Kubernetes

НС: Ma la kulantay rabitaan noocaas ah markii aad u baahan tahay inaad ku rakibto dhammaan pods-ka hal mashiin oo aad sameyso tijaabo yar. Si aad si dhakhso ah u hesho caddaynta fikradda, arag in codsigu ka socdo Kubernetes, adoon u hibayn farabadan oo mashiinno ah. Waxaa jira Minikube, sax?

ДС: Waxay iila muuqataa in kiiskan - oo lagu rakibay hal nood - uu ku saabsan yahay horumarinta degaanka. Ama qaar ka mid ah muujinta qaabkan oo kale. Cun Minikube, Waxaa jira k3s, ILMAHA. Waxaan u soconaa adeegsiga Kubernetes IN Docker. Hadda waxaan bilownay la shaqeynta imtixaannada.

НС: Waxaan u maleyn jiray in tani ay tahay isku day lagu doonayo in lagu duubo dhammaan boodhadhka hal sawir Docker. Laakiin waxaa soo baxday in tani ay ku saabsan tahay wax gebi ahaanba ka duwan. Si kastaba ha ahaatee, waxaa jira weel gaar ah, gadmo gaar ah - kaliya Docker.

ДС: Haa. Waxaana jira ku dayasho qosol badan oo la sameeyay, laakiin macnuhu waa kan... Waxaan leenahay utility loogu talagalay geynta - werf. Waxaan rabnaa inaan ka dhigno hab shuruudaysan werf up"Ii hel Kubernetes maxaliga ah." Ka dibna ku socodsii shuruudaha halkaas werf follow. Markaa horumariyahu wuxuu awoodi doonaa inuu tafatiro IDE-ga, waxaana la bilaabayaa nidaam nidaamka arka isbedelada oo dib u dhisa sawirada, dib u habaynta K8-yada maxalliga ah. Tani waa sida aan rabno inaan isku dayno inaan xallino dhibaatada horumarinta deegaanka.

Sawir-qaadista iyo kaydinta xogta ee xaqiiqada K8s

НС: Haddii aan ku soo laabano nuqul-qori. Waxaan ogaaday in daruuruhu ay sidoo kale leeyihiin sawir-qaadid. Waxay u shaqeeyaan si kala duwan. Tusaale ahaan, gudaha GCP: waxaad ku leedahay tusaale terabyte-ka badan oo ku yaal xeebta bari ee Maraykanka. Waxaad qaadataa sawir-qaadis xilliyo ah. Waxaad ka soo qaadanaysaa nuqul ka mid ah saxanka xeebta galbeed ee sawir-qaadista - dhowr daqiiqo wax walba waa diyaar, si dhakhso ah ayuu u shaqeeyaa, kaliya kaydka ayaa u baahan in lagu buuxiyo xusuusta. Laakin clones-yadan (sawir-qaadista) waa si 'loo bixiyo' mug cusub. Tani waa qabow marka aad u baahan tahay inaad abuurto tusaalooyin badan.

Laakiin imtixaannada, waxay iila muuqataa sawirada sawirada, oo aad ka hadasho Docker ama aan ka hadlo ZFS, btrfs iyo xitaa LVM ... - waxay kuu oggolaanayaan inaadan abuurin xog dhab ah oo cusub hal mashiin. Daruuraha dhexdiisa, waxaad weli bixin doontaa iyaga mar kasta oo aad sugi doontaa ma ilbiriqsiyo, laakiin daqiiqado (iyo kiiska culays caajisnimo, malaha saacad).

Taa beddelkeeda, waxaad ku heli kartaa xogtan hal ilbiriqsi ama laba, tijaabi tijaabada oo iska tuur. Sawiradani waxay xalliyaan dhibaatooyin kala duwan. Xaaladda koowaad - si kor loogu qaado oo loo helo nuqullo cusub, iyo tan labaad - imtixaannada.

ДС: kuma raacsani. Samaynta cloning mugga si sax ah u shaqeyso waa hawsha daruuraha. Ma aan eegin hirgelintooda, laakiin waan ogahay sida aan u samayno qalabka. Waxaan haynaa Ceph, waxay u ogolaataa mug kasta oo jireed (RBD) dheh Gadzhiyev oo hel mugga labaad oo leh astaamo isku mid ah tobanaan millise seconds, IOPSaamiin, iwm. Waxaad u baahan tahay inaad fahanto in ay ku jirto nuqul-ku-qoris-ku-qorid adag. Waa maxay sababta daruurtu aanay sidaas oo kale u samayn? Waxaan hubaa inay isku dayayaan inay tan si uun u sameeyaan.

НС: Laakin wali waxay ku qaadan doontaa ilbiriqsiyo, tobanaan ilbiriqsi si ay kor ugu qaadaan tusaale, keenaan Docker, iwm.

ДС: Waa maxay sababta ay lagama maarmaanka u tahay in kor loo qaado tusaale dhan? Waxaan haynaa tusaale leh 32 cores, 16... waxayna ku haboonaan kartaa - tusaale ahaan, afar. Marka aan dalbanno midka shanaad, tusaale ahaan mar hore ayaa kor loo qaadi doonaa, ka dibna waa la tirtiri doonaa.

НС: Haa, xiiso leh, Kubernetes waxay u noqotaa sheeko ka duwan. Xogtayadu kuma taal K8s, waxaanan leenahay hal tusaale. Laakin xidhidhaynta xogta terabyte-ka badan waxay qaadanaysaa wax ka badan laba ilbiriqsi.

ДС: Tani waa wax weyn. Laakiin ujeedadayda ugu horreysa ayaa ah in tani aysan ahayn xal guud. Haa, waa qabow, laakiin waxay ku habboon tahay Postgres oo kaliya hal nood.

НС: kuma habboona kaliya Postgres: qorshooyinkan, sida aan ku sharaxay, waxay kaliya ku shaqeyn doonaan. Laakiin haddii aynaan ka welwelin qorshooyinka, oo aan u baahanahay oo kaliya dhammaan xogta tijaabada shaqeynta, markaa tani waxay ku habboon tahay DBMS kasta.

ДСSannado badan ka hor waxaan ku samaynay wax la mid ah sawirada LVM. Tani waa classic. Habkan si firfircoon ayaa loo isticmaalay. Noodhyada dawladeed waa uun xanuun. Sababtoo ah waa inaadan tuurin, waa inaad had iyo jeer xasuusataa iyaga...

НС: Ma aragtaa wax suurtagal ah oo isku-dhafan halkan? Aynu nidhaahno dawlad-goboleed waa nooc ka mid ah pods, waxay u shaqeysaa dhowr qof (tijaabooyin badan). Waxaan leenahay hal mug, laakiin Thanks to nidaamka faylka, clones waa maxalli. Haddii boodhku soo dhaco, laakiin saxanku sii jiro, boodhku wuu kacayaa, tiriyaa macluumaadka ku saabsan dhammaan kloonyada, mar kale soo qaado wax walba oo waxaad tidhaahdaa: "Halkan waxaa ku yaal clones-yadaada ku socda dekedaha, sii wad la shaqayntooda."

ДСFarsamo ahaan tani waxay ka dhigan tahay in gudaha Kubernetes ay tahay hal boodh oo aan ku dhex wadno Postgres badan.

НС: Haa. Waxa uu leeyahay xad: aynu nidhaahno in ka badan 10 qof ayaa la shaqeeya isaga isku mar. Haddii aad u baahan tahay 20, waxaanu soo saari doonaa ilbidhiqsi oo caynkaas ah. Waxaan si buuxda u xidhi doonaa, ka dib markii la helo mugga labaad oo buuxa, waxay yeelan doontaa isla 10 clones "dhuuban". Miyaadan arkayn fursadan?

ДС: Waxaan u baahanahay in aan ku darsano arrimaha amniga halkan. Ururada noocan oo kale ah waxay tilmaamayaan in boodhkani uu leeyahay mudnaanta sare (awoodaha), sababtoo ah waxay samayn kartaa hawlgallo aan caadi ahayn oo ku saabsan nidaamka faylka ... Laakiin waxaan ku celinayaa: Waxaan aaminsanahay in muddada dhexe ay hagaajin doonaan kaydinta Kubernetes, iyo in daruuraha waxay ku hagaajin doonaan sheekada oo dhan iyagoo leh mug - wax walba "kaliya way shaqeyn doonaan". Waxaa jiri doona cabbir, cloning... Waxaa jira mug - waxaan nidhaahnaa: "Abuur mid cusub taas oo ku saleysan," iyo ka dib ilbiriqsi iyo badh waxaan helnaa waxa aan u baahanahay.

НС: Ma aaminsani hal ilbidhiqsi iyo badh terabytes badan. On Ceph adiga ayaa samee, laakiin waxaad ka hadashaa daruuraha. Tag daruurta, samee kloone mugga EBS-ka badan ee terabyte-ka ah EC2 oo arag waxa uu noqon doono. Ma qaadan doonto dhowr ilbiriqsi Aad ayaan u xiiseeyaa goorta ay heerkan gaari doonaan. Waan fahmay waxaad leedahay, laakiin waxaan ka codsanayaa inaan ku duwanaado.

ДС: Waayahay, laakiin waxaan idhi muddada dhexe, ma aha muddo gaaban. Dhowr sano.

Ku saabsan hawlwadeenka PostgreSQL ee Zalando

Bartamihii kulankan, Alexey Klyukin, horumariye hore oo ka yimid Zalando, ayaa sidoo kale ku biiray oo ka hadlay taariikhda hawlwadeenka PostgreSQL:

Way fiicantahay in mawduucan guud ahaan la taabto: labadaba Postgres iyo Kubernetes. Markii aan bilownay inaan ku sameyno Zalando 2017, waxay ahayd mowduuc qof kastaa rabay inuu sameeyo, laakiin qofna ma samayn. Qof kastaa wuxuu horey u haystay Kubernetes, laakiin markii ay weydiiyeen waxa lagu sameeyo xogta macluumaadka, xitaa dadku way jecel yihiin Kelsey Hightower, oo wacdiyey K8s, ayaa yidhi wax sidan oo kale ah:

"Aad adeegyada la maamulay oo isticmaal, ha ku shubin xogta Kubernetes. Haddii kale, K8-yadaadu waxay go'aansan doonaan, tusaale ahaan, inay sameeyaan casriyeyn, damin dhammaan noodhka, xogtaaduna waxay u duuli doontaa meel fog, fog."

Waxa aanu go'aansanay in aanu samayno hawl wadeen, kaas oo lid ku ah taladan, ka bilaabi doona xogta Postgres gudaha Kubernetes. Oo waxaan haysanay sabab wanaagsan - Batrooni. Kani waa guuldarraysiga tooska ah ee PostgreSQL, oo ​​si sax ah loo sameeyay, i.e. iyadoo la isticmaalayo etcd, qunsulka ama ZooKeeper kaydinta macluumaadka ku saabsan kooxda Kaydka noocan oo kale ah oo siin doona qof kasta oo weydiiya, tusaale ahaan, waxa uu yahay hoggaamiyaha hadda, xog isku mid ah - inkastoo xaqiiqda ah in wax walba loo qaybiyo - si aysan u jirin maskax kala go'an. Intaa waxaa dheer waxaan haysanay Sawirka Docker isaga.

Guud ahaan, baahida shirkadu u qabo fashilka baabuurta ayaa soo muuqatay ka dib markii ay ka soo guurtay xarunta xogta qalabka gudaha ee daruuraha. Daruurtu waxay ku salaysnayd xal u gaar ah PaaS (Platform-as-a-Service). Waa Isha Furan, laakiin waxay qaadatay shaqo badan si ay u kiciso oo ay u shaqeyso. Waa la odhan jiray XAQIIQO.

Markii hore, ma jirin Kubernetes. Si sax ah, markii xalkeena la geeyay, K8s ayaa horay u jiray, laakiin waxay ahayd mid cayriin ah oo aan ku habboonayn wax soo saarka. Waxay ahayd, aragtidayda, 2015 ama 2016. Sannadkii 2017-kii, Kubernetes waxa ay noqotay mid ka badan ama ka yar qaan-gaar ah-waxaa jirtay baahi loo qabo in halkaas loo haajiro.

Oo waxaan hore u haysannay weel Docker ah. Waxaa jiray PaaS oo isticmaalay Docker. Maxaad u tijaabin weyday K8s? Maxaad u qori wayday hawlwadeenkaaga? Murat Kabilov, oo nooga yimid Avito, ayaa tan bilaabay mashruuc ahaan iskiis u gaar ah - "inuu ciyaaro" - iyo mashruucu "ayaa bilaabay."

Laakiin guud ahaan, waxaan rabay inaan ka hadlo AWS. Waa maxay sababta uu jiray AWS code taariikhi ah...

Markaad wax ku maamusho Kubernetes, waxaad u baahan tahay inaad fahamto in K8s ay tahay shaqo sidan oo kale ah oo socota. Si joogto ah ayay u horumaraysaa, u soo hagaagaysaa oo xataa u burburaysaa wakhti ka waqti. Waxaad u baahan tahay inaad si dhow ula socoto dhammaan isbeddellada Kubernetes, waxaad u baahan tahay inaad diyaar u ahaato inaad u dhex gasho haddii ay wax dhacaan oo aad barato sida ay u shaqeyso si faahfaahsan - laga yaabee in ka badan intaad jeclaan lahayd. Tani, mabda' ahaan, waxay khusaysaa madal kasta oo aad ku socodsiiso xogtaada...

Markaa, markii aanu samaynay bayaanka, waxaanu haynay Postgres oo ku shaqaynaysa mug dibadeed (EBS kiiskan, tan iyo markii aanu ka shaqaynaynay AWS). Xogta ayaa kortay, mar waxaa lagama maarmaan noqotay in dib loo cabbiro: tusaale ahaan, cabbirka bilowga EBS wuxuu ahaa 100 TB, keydka keydka ayaa u kordhay, hadda waxaan rabnaa inaan sameyno EBS 200 TB. Sidee? Aynu nidhaahno waxaad samayn kartaa qashin-qubka/soo-celinta tusaale cusub, laakiin tani waxay qaadan doontaa waqti dheer waxayna ku lug yeelan doontaa waqti-dhimis.

Sidaa darteed, waxaan rabay cabbir weyn oo balaadhin doona qaybta EBS ka dibna u sheegi doonta nidaamka faylka inuu isticmaalo booska cusub. Waana yeelnay, laakiin wakhtigaas Kubernetes ma haysan API wax-ka-beddelka hawlgalka. Tan iyo markii aan ka shaqeynay AWS, waxaan u qornay koodka API-ga.

Ma jiro qof kaa hor istaagaya inaad sidaas oo kale u samayso aaladaha kale. Ma jirto wax tilmaam ah oo ku jira bayaanka in lagu shaqeyn karo oo keliya AWS, oo aysan ka shaqeyn doonin wax kasta oo kale. Guud ahaan, tani waa mashruuc Isha Furan: haddii qof doonayo inuu dedejiyo soo bixitaanka isticmaalka API-ga cusub, waa lagu soo dhaweynayaa. Cun GitHub, soo jiid codsiyada - kooxda Zalando waxay isku dayaan inay si degdeg ah uga jawaabaan iyaga oo kor u qaadaan hawlwadeenka. Inta aan ogahay, mashruuca ka qayb qaatay Xagaaga Google Code iyo qaar kale oo la mid ah hindisayaasha. Zalando si firfircoon ayuu uga shaqaynayaa.

PS Bonus!

Haddii aad xiisaynayso mawduuca PostgreSQL iyo Kubernetes, markaa fadlan sidoo kale ogow in Talaadada soo socota ee Postgres ay dhacday usbuucii hore, halkaas oo aan la hadlay Nikolai Alexander Kukushkin oo reer Zalando ah. Fiidiyow ka yimid waa la heli karaa halkan.

PPS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment