Postgres Lachiwiri No. 5: "PostgreSQL ndi Kubernetes. CI/CD. Yesani automation"

Postgres Lachiwiri No. 5: "PostgreSQL ndi Kubernetes. CI/CD. Yesani automation"

Kumapeto kwa chaka chatha, kuwulutsa kwina kwapagulu la anthu aku Russia PostgreSQL kunachitika #RuPostgres, pomwe woyambitsa mnzake Nikolai Samokhvalov adalankhula ndi Flant technical director Dmitry Stolyarov za DBMS iyi pamutu wa Kubernetes.

Tikusindikiza zolembedwa za gawo lalikulu la zokambiranazi, ndipo pa Community YouTube channel Kanema wathunthu adatumizidwa:

Databases ndi Kubernetes

NS: Sitilankhula za VACUUM ndi CHECKPOINTs lero. Tikufuna kulankhula za Kubernetes. Ndikudziwa kuti muli ndi zaka zambiri zakuchitikirani. Ndinayang'ana mavidiyo anu ndipo ndinayang'ananso ena mwa iwo ... Tiyeni tipite molunjika pa mfundo: chifukwa chiyani Postgres kapena MySQL mu K8s konse?

DS: Palibe ndipo sikungakhale yankho lotsimikizika la funsoli. Koma kawirikawiri, izi ndizosavuta komanso zosavuta ... zomwe zingatheke. Aliyense amafuna ntchito zoyendetsedwa.

NS: Kuti bwanji RDS, kunyumba kokha?

DS: Inde: monga RDS, kulikonse.

NS: "Kulikonse" ndi mfundo yabwino. M'makampani akuluakulu, chilichonse chili m'malo osiyanasiyana. Chifukwa chiyani, ngati ndi kampani yayikulu, osatenga njira yokonzekera? Mwachitsanzo, Nutanix ili ndi zochitika zake, makampani ena (VMware ...) ali ndi "RDS, kunyumba."

DS: Koma tikukamba za kukhazikitsa kosiyana komwe kungagwire ntchito pazikhalidwe zina. Ndipo ngati tikukamba za Kubernetes, ndiye kuti pali mitundu yambiri ya zomangamanga (zomwe zingakhale mu K8s). Kwenikweni uwu ndi muyezo wa ma API kumtambo ...

NS: Ndi zaulere!

DS: Sizofunika kwambiri. Ufulu ndi wofunika osati gawo lalikulu kwambiri la msika. Chinanso n'chofunika ... Mwinamwake mukukumbukira lipoti "Databases ndi Kubernetes"?"

NS: Inde.

DS: Ndinazindikira kuti adalandiridwa mosadziwika bwino. Anthu ena amaganiza kuti ndikunena kuti: "Anyamata, tiyeni titenge nkhokwe zonse ku Kubernetes!", Pamene ena adaganiza kuti zonsezi zinali njinga zoopsa. Koma ndinkafuna kunena zosiyana kwambiri ndi zimenezi: β€œTaonani zimene zikuchitika, mavuto amene alipo komanso mmene angawathetsere. Kodi tiyenera kugwiritsa ntchito nkhokwe za Kubernetes tsopano? Kupanga? Chabwino, pokhapokha ngati mukufuna ... kuchita zinthu zina. Koma kwa dev, nditha kunena kuti ndikupangira. Kwa a dev, kusinthika kopanga/kuchotsa malo ndikofunikira kwambiri. ”

NS: Mwa dev, mukutanthauza madera onse omwe sali opangidwa? Kupanga, QA…

DS: Ngati tikukamba za perf stands, ndiye mwina ayi, chifukwa zofunika kumeneko ndi zenizeni. Ngati tikukamba za zochitika zapadera zomwe deta yaikulu kwambiri ikufunika kuti iwonetsedwe, ndiye mwina osati ... Ngati iyi ndi malo osasunthika, okhala ndi moyo wautali, ndiye phindu lotani lokhala ndi deta yomwe ili mu K8s?

NS: Palibe. Koma tikuwona kuti malo osakhazikika? Malo osakhazikika adzatha mawa.

DS: Masitepe amatha kukhala osasunthika. Tili ndi makasitomala...

NS: Inde, ndili nawonso. Ndivuto lalikulu ngati muli ndi nkhokwe ya 10 TB ndi ma 200 GB ...

DS: Ndili ndi vuto lalikulu! Pa siteji pali mndandanda wazinthu zomwe zimasinthidwa. Ndipo pali batani: "Pezani kupanga". Zosintha izi - deltas - zikuwonjezedwa (zikuwoneka kuti zimangolumikizidwa kudzera pa API) popanga. Izi ndi zachilendo njira.

NS: Ndawonapo oyambitsa ku Chigwa omwe akukhala ku RDS kapena ku Heroku - izi ndi nkhani za zaka 2-3 zapitazo - ndipo amatsitsa zotayira pa laputopu yawo. Chifukwa malo osungira akadali 80 GB, ndipo pali malo pa laputopu. Kenako amagula ma disks owonjezera kwa aliyense kuti akhale ndi ma database atatu kuti achite zosiyanasiyana. Umu ndi momwe zimachitikiranso. Ndidawonanso kuti sawopa kukopera zotsatsa - zimatengera kampaniyo. Koma ndinaonanso kuti amaopa kwambiri, ndipo nthawi zambiri sakhala ndi nthawi yokwanira komanso manja awo. Koma tisanapitirire pamutuwu, ndikufuna kumva za Kubernetes. Kodi ndikumvetsetsa bwino kuti palibe amene akupanga?

DS: Tili ndi nkhokwe zazing'ono mu prod. Tikulankhula za makumi a ma gigabytes ndi mautumiki osafunikira omwe tinali aulesi kwambiri kuti tipange zolemba (ndipo palibe chosowa chotero). Ndipo malinga ngati pali kusungirako kwanthawi zonse pansi pa Kubernetes. Nawonsonkhokwe iyi idagwira ntchito pamakina enieni - mokhazikika ku VMware, pamwamba pa makina osungira. Tinayikamo PV ndipo tsopano tikhoza kusamutsa kuchokera ku makina kupita ku makina.

NS: Ma database a kukula uku, mpaka 100 GB, akhoza kutulutsidwa mumphindi zochepa pa disks zabwino ndi intaneti yabwino, chabwino? Kuthamanga kwa 1 GB pamphindikati sikulinso kwachilendo.

DS: Inde, pakugwiritsa ntchito mzerewu si vuto.

NS: Chabwino, tiyenera kuganizira za prod. Ndipo ngati tikuganizira za Kubernetes zamalo osatulutsa, tiyenera kuchita chiyani? Ndikuwona kuti ku Zalando kuchita opareshoni, mu Crunchy kucheka, pali njira zina. Ndipo alipo OnGres - uyu ndi bwenzi lathu lapamtima Alvaro waku Spain: zomwe amachita sizongokhala wothandizirandi kugawa konse (Zithunzi za StackGres), momwe, kuwonjezera pa Postgres palokha, adaganizanso zosunga zosunga zobwezeretsera, Woyimira Woimira ...

DS: Envoy cha chani? Kusamutsa traffic ya Postgres makamaka?

NS: Inde. Ndiko kuti, amawona ngati: ngati mutenga kugawa kwa Linux ndi kernel, ndiye kuti PostgreSQL nthawi zonse ndi kernel, ndipo akufuna kupanga kugawa komwe kudzakhala kogwirizana ndi mitambo ndikuyendetsa Kubernetes. Amasonkhanitsa zigawo (zosunga zobwezeretsera, ndi zina zotero) ndikuzichotsa kuti zigwire ntchito bwino.

DS: Zabwino kwambiri! Kwenikweni iyi ndi pulogalamu yopangira ma Postgres anu omwe amayendetsedwa.

NS: Kugawa kwa Linux kumakhala ndi zovuta zamuyaya: momwe mungapangire madalaivala kuti zida zonse zizithandizidwa. Ndipo ali ndi lingaliro loti azigwira ntchito ku Kubernetes. Ndikudziwa kuti mu opareshoni ya Zalando posachedwapa tawona kulumikizana ndi AWS ndipo izi sizabwino kwambiri. Sipayenera kukhala chomangira kuzinthu zinazake - ndi chiyani pamenepo?

DS: Sindikudziwa momwe Zalando adalowamo, koma ku Kubernetes yosungirako tsopano yapangidwa m'njira yakuti sizingatheke kutenga zosunga zobwezeretsera disk pogwiritsa ntchito njira yachibadwa. Posachedwapa muyeso - mu mtundu waposachedwa Zotsatira za CSI - tidapanga zithunzi zotheka, koma zimakhazikitsidwa kuti? Moona mtima, chirichonse chikadali chaiwisi ... Tikuyesera CSI pamwamba pa AWS, GCE, Azure, vSphere, koma mutangoyamba kugwiritsa ntchito, mukhoza kuona kuti sichinakonzekerebe.

NS: Ndicho chifukwa chake nthawi zina timayenera kudalira zowonongeka. Ndikuganiza kuti iyi ikadali gawo loyambirira - zowawa zakukula. Funso: Kodi mungapatse upangiri wanji kwa ongoyamba kumene omwe akufuna kuyesa PgSQL mu K8s? Kodi mwina?

DS: Vuto ndiloti Postgres ndi 3% kwa ife. Tilinso ndi mndandanda waukulu wa mapulogalamu osiyanasiyana ku Kubernetes, sindingatchule chilichonse. Mwachitsanzo, Elasticsearch. Pali ambiri ogwira ntchito: ena akukula mwachangu, ena sali. Tadzipangira tokha zofunika zomwe wogwiritsa ntchito ayenera kukhala nazo kuti tichite mozama. Mu opareshoni makamaka ya Kubernetes - osati "wopanga kuti achite zinazake pamikhalidwe ya Amazon"... M'malo mwake, ife ambiri (= pafupifupi makasitomala onse) timagwiritsa ntchito opareshoni m'modzi - za Redis (tidzafalitsa nkhani yake posachedwa).

NS: Ndipo osati za MySQL kaya? Ndikudziwa kuti Percona ... popeza tsopano akugwira ntchito pa MySQL, MongoDB, ndi Postgres, adzayenera kupanga njira yothetsera chilengedwe chonse: pazosungira zonse, kwa onse opereka mitambo.

DS: Tinalibe nthawi yoyang'ana ogwira ntchito a MySQL. Ichi sichiri cholinga chathu chachikulu pakali pano. MySQL imagwira ntchito bwino poyimirira. Bwanji mugwiritse ntchito wogwiritsa ntchito ngati mungathe kungoyambitsa nkhokwe ... Mukhoza kuyambitsa chidebe cha Docker ndi Postrges, kapena mukhoza kuchiyambitsa m'njira yosavuta.

NS: Panalinso funso lokhudza izi. Palibe wogwiritsa ntchito konse?

DS: Inde, 100% yaife tili ndi PostgreSQL yomwe ikuyenda popanda woyendetsa. Mpaka pano. Timagwiritsa ntchito mwachangu operekera Prometheus ndi Redis. Tili ndi mapulani oti tipeze wogwiritsa ntchito Elasticsearch - ndi yomwe ili "pamoto" kwambiri, chifukwa tikufuna kuyiyika ku Kubernetes mu 100% yamilandu. Monga momwe tikufuna kuwonetsetsa kuti MongoDB imayikidwanso nthawi zonse ku Kubernetes. Apa zikhumbo zina zimawonekera - pali kumverera kuti muzochitika izi chinachake chikhoza kuchitika. Ndipo sitinayang'anenso ku Postgres. Inde, tikudziwa kuti pali zosankha zosiyanasiyana, koma kwenikweni tili ndi zoyimira.

DB kuyesa ku Kubernetes

NS: Tiyeni tipitirire pamutu woyesa. Momwe mungatulutsire zosintha ku database - kuchokera pamalingaliro a DevOps. Pali ma microservices, ma database ambiri, china chake chikusintha kwinakwake nthawi zonse. Momwe mungawonetsere CI / CD yachibadwa kuti zonse zikhale bwino kuchokera ku DBMS. Njira yanu ndi yotani?

DS: Sipangakhale yankho limodzi. Pali zingapo zomwe mungachite. Choyamba ndi kukula kwa maziko omwe tikufuna kutulutsa. Inu nokha munanena kuti makampani ali ndi malingaliro osiyanasiyana pakukhala ndi kopi ya nkhokwe ya prod pa dev ndi siteji.

NS: Ndipo pansi pa zikhalidwe za GDPR, ndikuganiza kuti akukhala osamala kwambiri ... Ndikhoza kunena kuti ku Ulaya ayamba kale kulipira chindapusa.

DS: Koma nthawi zambiri mutha kulemba mapulogalamu omwe amatenga kutaya kuchokera pakupanga ndikusokoneza. Deta ya Prod imapezedwa (chithunzi, kutaya, kukopera kwa binary ...), koma sichidziwika. M'malo mwake, pakhoza kukhala zolemba za m'badwo: izi zitha kukhala zosintha kapena zolemba zomwe zimapanga database yayikulu. Vuto ndilakuti: zimatenga nthawi yayitali bwanji kupanga chithunzi choyambira? Ndipo zimatenga nthawi yayitali bwanji kuti zitumizidwe kumalo omwe mukufuna?

Tinafika pa chiwembu: ngati kasitomala ali ndi deta yokhazikika (yocheperako ya database), ndiye timawagwiritsa ntchito mwachisawawa. Ngati tikukamba za malo owunikiranso, titapanga nthambi, tidapereka chitsanzo cha ntchito - timatulutsa database yaying'ono pamenepo. Koma zidakhala bwino njira, pamene titenga kutaya kuchokera ku kupanga kamodzi patsiku (usiku) ndikumanga chidebe cha Docker ndi PostgreSQL ndi MySQL ndi deta yodzaza izi. Ngati mukufuna kukulitsa nkhokwe nthawi 50 kuchokera pachithunzichi, izi zimachitika mosavuta komanso mwachangu.

NS: Mwa kukopera mosavuta?

DS: Zambiri zimasungidwa mwachindunji pazithunzi za Docker. Iwo. Tili ndi chithunzi chopangidwa kale, ngakhale 100 GB. Chifukwa cha zigawo mu Docker, titha kuyika chithunzichi mwachangu momwe timafunikira. Njirayi ndi yopusa, koma imagwira ntchito bwino.

NS: Ndiye, mukayesa, zimasintha mkati mwa Docker, sichoncho? Lembani-pa-lemba mkati mwa Docker - itayeni ndikupitanso, zonse zili bwino. Kalasi! Ndipo kodi mukuigwiritsa ntchito mokwanira?

DS: Kwa nthawi yayitali.

NS: Timachita zinthu zofanana kwambiri. Kokha sitigwiritsa ntchito zolemba za Docker, koma zina.

DS: Si generic. Ndipo Docker amagwira ntchito kulikonse.

NS: Mwachidziwitso, inde. Koma tilinso ndi ma module pamenepo, mutha kupanga ma module osiyanasiyana ndikugwira ntchito ndi mafayilo osiyanasiyana. Kamphindi bwanji pano. Kuchokera kumbali ya Postgres, timayang'ana zonsezi mosiyana. Tsopano ndidayang'ana mbali ya Docker ndikuwona kuti zonse zimakuchitirani. Koma ngati deta ndi yaikulu, mwachitsanzo, 1 TB, ndiye kuti zonsezi zimatenga nthawi yaitali: ntchito usiku, ndikuyika chirichonse mu Docker ... Ndipo ngati 5 TB ilowetsedwa mu Docker ... Kapena kodi zonse zili bwino?

DS: Kusiyana kwake ndi chiyani: awa ndi mabulogu, ma bits ndi ma byte okha.

NS: Kusiyana kwake ndi uku: kodi mumazichita kudzera mu kutaya ndi kubwezeretsa?

DS: Osafunikira konse. Njira zopangira chithunzichi zingakhale zosiyana.

NS: Kwa makasitomala ena, tapanga izi kuti m'malo mopanga chithunzi choyambira nthawi zonse, timachisunga nthawi zonse. Ndichifaniziro, koma chimalandira deta osati kuchokera kwa mbuye mwachindunji, koma kudzera muakale. Malo osungirako zakale omwe WAL amatsitsidwa tsiku ndi tsiku, komwe zosunga zobwezeretsera zimatengedwa... Ma WAL awa kenako amafika pachithunzi choyambira ndikuchedwa pang'ono (kwenikweni masekondi 1-2). Timatengera izi mwanjira iliyonse - tsopano tili ndi ZFS mwachisawawa.

DS: Koma ndi ZFS mumangokhala ndi node imodzi.

NS: Inde. Koma ZFS ilinso ndi zamatsenga kutumiza: ndi izo mutha kutumiza chithunzithunzi ndipo ngakhale (sindinayese izi, koma ...) mukhoza kutumiza delta pakati pa awiri PGDATA. M'malo mwake, tili ndi chida china chomwe sitinachiganizirepo pa ntchito zotere. PostgreSQL ili ndi pg_bweza, yomwe imagwira ntchito ngati "smart" rsync, kudumpha zambiri zomwe simukuyenera kuziwona, chifukwa palibe chomwe chasintha pamenepo. Titha kuchita kulunzanitsa mwachangu pakati pa maseva awiriwa ndikubwezeretsanso chimodzimodzi.

Chifukwa chake, kuchokera ku mbali iyi, ya DBA yambiri, tikuyesera kupanga chida chomwe chimatilola kuchita zomwezo zomwe mudanena: tili ndi database imodzi, koma tikufuna kuyesa china chake nthawi 50, pafupifupi nthawi imodzi.

DS: Nthawi 50 zikutanthauza kuti muyenera kuyitanitsa zochitika 50 za Spot.

NS: Ayi, timachita zonse pa makina amodzi.

DS: Koma mungakulitse bwanji nthawi 50 ngati database imodzi ili, tinene, terabyte. Mwinamwake amafunikira 256 GB ya RAM?

NS: Inde, nthawi zina mumafunika kukumbukira kwambiri - ndi zachilendo. Koma ichi ndi chitsanzo cha moyo. Makina opanga ali ndi ma cores 96 ndi 600 GB. Nthawi yomweyo, ma cores 32 (ngakhale 16 cores tsopano nthawi zina) ndi 100-120 GB ya kukumbukira amagwiritsidwa ntchito pazosungira.

DS: Ndipo makope 50 akukwana pamenepo?

NS: Kotero pali kopi imodzi yokha, ndiye kukopera-kulemba (ZFS) imagwira ntchito ... Ndikukuuzani mwatsatanetsatane.

Mwachitsanzo, tili ndi 10 TB database. Adapangira diski, ZFS idatsitsanso kukula kwake ndi 30-40 peresenti. Popeza sitimayesa kuyesa, nthawi yeniyeni yoyankhira siyofunika kwa ife: ikhale yocheperako nthawi 2 - zili bwino.

Timapereka mwayi kwa opanga mapulogalamu, QA, DBA, ndi zina. kuchita mayesero mu ulusi 1-2. Mwachitsanzo, akhoza kuthamanga mtundu wina wa kusamuka. Sichifuna ma cores 10 nthawi imodzi - imafunikira 1 Postgres backend, 1 pachimake. Kusamuka kudzayamba - mwina autovacuum idzayambabe, kenako pachimake chachiwiri chidzagwiritsidwa ntchito. Tili ndi ma cores 16-32, kotero anthu 10 amatha kugwira ntchito nthawi imodzi, palibe vuto.

Chifukwa mwakuthupi PGDATA momwemonso, zimakhala kuti tikunyenga Postgres. Chinyengo ndi ichi: mwachitsanzo, 10 Postgres imayambitsidwa nthawi imodzi. Nthawi zambiri vuto ndi chiyani? Iwo anaika share_buffers, tinene kuti 25%. Chifukwa chake, iyi ndi 200 GB. Simungathe kuyambitsa zoposa zitatu mwa izi, chifukwa kukumbukira kudzatha.

Koma nthawi ina tidazindikira kuti izi sizinali zofunikira: ​​tidayika ma share_buffers kukhala 2 GB. PostgreSQL ili ndi ogwira_cache_size, ndipo m’chenicheni ndilo lokha limene limasonkhezera mapulani. Timayika ku 0,5 TB. Ndipo zilibe kanthu kuti kulibe kwenikweni: amapanga mapulani ngati alipo.

Chifukwa chake, tikayesa kusamuka kwina, titha kusonkhanitsa mapulani onse - tiwona momwe zidzachitikire popanga. Masekondi padzakhala osiyana (pang'onopang'ono), koma deta yomwe timawerenga, ndi mapulani okha (zomwe JOINs zilipo, ndi zina zotero) zimakhala zofanana ndi zomwe zimapangidwira. Ndipo mutha kuyendetsa macheke ambiri mofananira pamakina amodzi.

DS: Kodi simukuganiza kuti pali mavuto ochepa pano? Yoyamba ndi yankho lomwe limagwira ntchito pa PostgreSQL yokha. Njirayi ndi yachinsinsi kwambiri, si yachilendo. Chachiwiri ndi chakuti Kubernetes (ndi chirichonse chomwe matekinoloje amtambo akupita tsopano) akuphatikizapo ma node ambiri, ndipo mfundozi ndi za ephemeral. Ndipo kwa inu ndi mfundo yokhazikika, yolimbikira. Zinthu izi zimandipangitsa kutsutsana.

NS: Choyamba, ndikuvomereza, iyi ndi nkhani ya Postgres. Ndikuganiza kuti ngati tili ndi mtundu wina wa IO wolunjika ndi dziwe losungiramo pafupifupi kukumbukira zonse, njira iyi siigwira ntchito - mapulani adzakhala osiyana. Koma pakadali pano timangogwira ntchito ndi Postgres, sitiganizira za ena.

About Kubernetes. Inu nokha mumatiuza kulikonse kuti tili ndi database yosalekeza. Ngati chitsanzocho chikulephera, chinthu chachikulu ndikusunga disk. Pano tilinso ndi nsanja yonse ku Kubernetes, ndipo gawo lomwe lili ndi Postgres ndilosiyana (ngakhale lidzakhalapo tsiku lina). Choncho, chirichonse chiri chonchi: chitsanzocho chinagwa, koma tinasunga PV yake ndikuyigwirizanitsa ndi chitsanzo china (chatsopano), ngati kuti palibe chomwe chinachitika.

DS: Kuchokera kumalingaliro anga, timapanga ma pods ku Kubernetes. K8s - zotanuka: mfundo zimalamulidwa ngati pakufunika. Ntchito ndikungopanga poto ndikunena kuti ikufunika X kuchuluka kwazinthu, ndiyeno ma K8 adziwerengera okha. Koma chithandizo chosungira ku Kubernetes sichikhazikika: 1.16mu 1.17 (kutulutsidwa uku kwatulutsidwa sakanatha ago) izi zimangokhala beta.

Miyezi isanu ndi umodzi mpaka chaka idzadutsa - idzakhala yokhazikika kapena yochepa, kapena idzalengezedwa ngati choncho. Ndiye kuthekera kwazithunzi ndikusintha kukula kumathetsa vuto lanu kwathunthu. Chifukwa muli ndi maziko. Inde, sizingakhale zothamanga kwambiri, koma kuthamanga kumadalira zomwe zili "pansi pa hood", chifukwa zina zomwe zimagwiritsidwa ntchito zimatha kukopera ndikulemba-pa-kulemba pa disk subsystem level.

NS: Ndikofunikiranso kuti injini zonse (Amazon, Google...) ziyambe kuthandizira mtundu uwu - izi zimatenganso nthawi.

DS: Sitikuwagwiritsabe ntchito. Timagwiritsa ntchito zathu.

Kutukuka kwanuko kwa Kubernetes

NS: Kodi mwakumana ndi chikhumbo choterocho pamene mukufunika kuyika ma pod onse pa makina amodzi ndikuchita mayeso ang'onoang'ono. Kuti mupeze umboni wamalingaliro mwachangu, onani kuti ntchitoyo ikugwira ntchito ku Kubernetes, osapereka makina ambiri. Pali Minikube, sichoncho?

DS: Zikuwoneka kwa ine kuti nkhaniyi - yoyikidwa pa mfundo imodzi - imangokhudza chitukuko cha m'deralo. Kapena mawonetseredwe ena a chitsanzo choterocho. Idyani Minikube, Pali ma k3s, KIND. Tikupita kukugwiritsa ntchito Kubernetes IN Docker. Tsopano tinayamba kugwira nawo ntchito yoyesa mayeso.

NS: Ndinkaganiza kuti uku kunali kuyesa kukulunga ma pod onse mu chithunzi chimodzi cha Docker. Koma zinapezeka kuti izi ndi za chinthu chosiyana kwambiri. Komabe, pali zotengera zosiyana, ma pod osiyana - ku Docker basi.

DS: Inde. Ndipo pali kutsanzira koseketsa komwe kwapangidwa, koma tanthauzo lake ndi ili... Tili ndi chida chothandizira - werf. Tikufuna kuyipanga kukhala yokhazikika werf up: "Ndipezereni Kubernetes wakumeneko." Ndiyeno yendetsani zovomerezeka pamenepo werf follow. Ndiye wokonza adzatha kusintha IDE, ndipo ndondomeko idzayambika mu dongosolo lomwe likuwona kusintha ndikumanganso zithunzizo, kuziyikanso ku ma K8 apafupi. Umu ndi momwe tikufuna kuyesa kuthetsa vuto lachitukuko chaderalo.

Zithunzi zojambulidwa ndi database cloning mu K8s zenizeni

NS: Ngati tibwerera kukopera-pa-kulemba. Ndinaona kuti mitambo ilinso ndi zithunzi. Iwo amagwira ntchito mosiyana. Mwachitsanzo, mu GCP: muli ndi ma multi-terabyte pagombe lakum'mawa kwa United States. Mumajambula zithunzi nthawi ndi nthawi. Mumatenga kopi ya diski ku gombe lakumadzulo kuchokera pa chithunzithunzi - mumphindi zochepa zonse zakonzeka, zimagwira ntchito mofulumira kwambiri, cache yokhayo iyenera kudzazidwa kukumbukira. Koma ma clones (zithunzi) ndicholinga 'chopereka' voliyumu yatsopano. Izi ndi zabwino pamene muyenera kupanga zochitika zambiri.

Koma pamayesero, zikuwoneka kwa ine kuti zithunzithunzi, zomwe mumayankhula mu Docker kapena ndimayankhula mu ZFS, btrfs komanso LVM ... - amakulolani kuti musapange deta yatsopano pamakina amodzi. Mumtambo, mudzawalipirabe nthawi iliyonse ndikudikirira osati masekondi, koma mphindi (ndipo ngati katundu waulesi, mwina wotchi).

M'malo mwake, mutha kupeza deta iyi pakatha mphindi imodzi kapena ziwiri, yendetsani mayeso ndikutaya. Zithunzi izi zimathetsa mavuto osiyanasiyana. Poyamba - kukulitsa ndikupeza zofananira zatsopano, ndipo chachiwiri - zoyeserera.

DS: Sindikuvomereza. Kupanga ma volume cloning kugwira ntchito moyenera ndi ntchito yamtambo. Sindinayang'ane kukhazikitsidwa kwawo, koma ndikudziwa momwe timachitira pa hardware. Tili ndi Ceph, imalola voliyumu iliyonse (RBD) kunena choyerekeza ndikupeza voliyumu yachiwiri yokhala ndi mawonekedwe omwewo mu makumi a mamilliseconds, IOPS'ama, etc. Muyenera kumvetsetsa kuti pali zovuta zolembera mkati. Chifukwa chiyani mtambo suyenera kuchita chimodzimodzi? Ndikutsimikiza kuti akuyesera kuchita izi mwanjira ina.

NS: Koma zidzawatengerabe masekondi, masekondi khumi kuti akweze chitsanzo, kubweretsa Docker pamenepo, ndi zina zotero.

DS: Chifukwa chiyani kuli kofunikira kukweza chitsanzo chonse? Tili ndi chitsanzo chokhala ndi 32 cores, 16 ... ndipo imatha kulowamo - mwachitsanzo, anayi. Tikayitanitsa chachisanu, chitsanzocho chidzakwezedwa kale, ndiyeno chidzachotsedwa.

NS: Inde, zosangalatsa, Kubernetes akukhala nkhani ina. Nawonso wathu sakhala mu K8s, ndipo tili ndi chitsanzo chimodzi. Koma kupanga database ya multi-terabyte sikupitilira masekondi awiri.

DS: Izi ndizabwino. Koma mfundo yanga yoyamba ndikuti iyi si yankho lachibadwidwe. Inde, ndizozizira, koma ndizoyenera Postgres komanso pa node imodzi yokha.

NS: Ndizoyenera osati kwa Postgres kokha: ndondomeko izi, monga ndafotokozera, zidzangogwira ntchito momwemo. Koma ngati sitikudandaula za mapulani, ndipo timangofunika deta yonse kuti tiyese kuyesa ntchito, ndiye kuti izi ndi zoyenera kwa DBMS iliyonse.

DS: Zaka zambiri zapitazo tidachitanso chimodzimodzi pazithunzi za LVM. Ichi ndi chapamwamba. Njirayi idagwiritsidwa ntchito mwachangu. Manode odziwika ndi ululu chabe. Chifukwa simuyenera kuwataya, muyenera kuwakumbukira nthawi zonse ...

NS: Kodi mukuwona kuthekera kulikonse kwa haibridi apa? Tinene kuti stateful ndi mtundu wina wa pod, umagwira ntchito kwa anthu angapo (oyesa ambiri). Tili ndi voliyumu imodzi, koma chifukwa cha mafayilo amafayilo, ma clones ndi amderalo. Ngati potoyo itagwa, koma diskiyo idakalipo, potoyo imadzuka, kuwerengera zidziwitso za ma clones onse, kunyamulanso chilichonse ndikunena kuti: "Nazi zitsanzo zanu zomwe zikuyenda pamadoko awa, pitirizani kugwira nawo ntchito."

DS: Mwaukadaulo izi zikutanthauza kuti mkati mwa Kubernetes ndi pod imodzi yomwe timayendetsa ma Postgres ambiri.

NS: Inde. Ali ndi malire: tinene kuti anthu osapitilira 10 amagwira naye ntchito nthawi imodzi. Ngati mukufuna 20, tiyambitsanso pod yachiwiri yotere. Tidzayifanizira kwathunthu, titalandira voliyumu yathunthu yachiwiri, idzakhala ndi ma 10 "oonda" ofanana. Kodi simukuwona mwayiwu?

DS: Tiyenera kuwonjezera nkhani zachitetezo apa. Mtundu uwu wa bungwe umatanthawuza kuti pod iyi ili ndi mwayi waukulu (zothekera), chifukwa imatha kuchita ntchito zosavomerezeka pamtundu wa fayilo ... mitambo adzakonza nkhani yonse ndi mabuku - chirichonse "chidzangogwira ntchito". Padzakhala kusinthanso, kupanga ma cloning... Pali voliyumu - timati: "Pangani chatsopano kutengera izo," ndipo pakatha mphindi imodzi ndi theka timapeza zomwe tikufuna.

NS: Sindikhulupirira masekondi amodzi ndi theka kwa ma terabytes ambiri. Pa Ceph mumachita nokha, koma mumalankhula za mitambo. Pitani kumtambo, pangani chithunzi cha voliyumu ya multi-terabyte EBS pa EC2 ndikuwona momwe ntchitoyo ingakhalire. Sizitenga masekondi angapo. Ndine wosangalatsidwa kwambiri ndi nthawi yomwe adzafike pamlingo uwu. Ndikumvetsa zomwe mukunena, koma ndikupempha kuti ndisiyane nazo.

DS: Ok, koma ndanena mu nthawi yapakati, osati nthawi yochepa. Kwa zaka zingapo.

Za opareshoni ya PostgreSQL kuchokera ku Zalando

Pakatikati pa msonkhanowu, Alexey Klyukin, yemwe kale anali wopanga ku Zalando, adalowanso ndikulankhula za mbiri ya wogwiritsa ntchito PostgreSQL:

Ndizosangalatsa kuti mutuwu umakhudzidwa kwambiri: onse a Postgres ndi Kubernetes. Titayamba kuchita ku Zalando mu 2017, udali mutu womwe aliyense amafuna kuchita, koma palibe amene adachita. Aliyense anali kale ndi Kubernetes, koma atafunsa choti achite ndi nkhokwe, ngakhale anthu amakonda Kelsey Hightower, amene analalikira ma K8, ananena motere:

"Pitani kuntchito zoyendetsedwa ndikuzigwiritsa ntchito, osayendetsa nkhokwe ku Kubernetes. Kupanda kutero, ma K8 anu asankha, mwachitsanzo, kukweza, kuzimitsa ma node onse, ndipo deta yanu idzawulukira kutali.

Tinaganiza zopanga wogwiritsa ntchito kuti, mosiyana ndi upangiri uwu, akhazikitse database ya Postgres ku Kubernetes. Ndipo tinali ndi chifukwa chabwino - Mtsogoleri. Uku ndikulephera kwathunthu kwa PostgreSQL, kochitidwa molondola, i.e. kugwiritsa ntchito etcd, consul kapena ZooKeeper monga kusungirako zambiri za gululo. Chosungira choterocho chomwe chidzapatsa aliyense amene akufunsa, mwachitsanzo, chomwe mtsogoleri wamakono ali, chidziwitso chomwecho - ngakhale kuti tili ndi zonse zomwe tagawa - kotero kuti palibe ubongo wogawanika. Komanso tinali nazo Chithunzi cha Docker za iye.

Kawirikawiri, kufunika kwa kampaniyo kwa auto failover kunawonekera pambuyo posamuka kuchokera ku data yamkati ya hardware kupita kumtambo. Mtambowo udakhazikitsidwa ndi yankho la PaaS (Platform-as-a-Service). Ndi Open Source, koma zidatenga ntchito yochuluka kuti zitheke. Iwo unatchedwa ZOCHITIKA.

Poyamba, panalibe Kubernetes. Momwemonso, pamene yankho lathu linatumizidwa, ma K8 analipo kale, koma anali aiwisi kotero kuti sanali oyenera kupanga. Zinali, m'malingaliro anga, 2015 kapena 2016. Pofika chaka cha 2017, Kubernetes anali atakula pang'onopang'ono - panali kufunika kosamukira kumeneko.

Ndipo tinali kale ndi chidebe cha Docker. Panali PaaS yomwe imagwiritsa ntchito Docker. Bwanji osayesa ma K8? Bwanji osalemba opareta wanu? Murat Kabilov, yemwe anabwera kwa ife kuchokera ku Avito, anayamba izi ngati ntchito payekha - "kusewera" - ndi polojekitiyi "inayamba."

Koma kawirikawiri, ndimafuna kulankhula za AWS. Chifukwa chiyani panali mbiri yakale yokhudzana ndi AWS ...

Mukayendetsa china ku Kubernetes, muyenera kumvetsetsa kuti ma K8 ndi ntchito yomwe ikuchitika. Imakula nthawi zonse, kuwongolera komanso kusweka nthawi ndi nthawi. Muyenera kuyang'anitsitsa zosintha zonse za Kubernetes, muyenera kukhala okonzeka kulowamo ngati chinachake chikuchitika ndikuphunzira momwe chimagwirira ntchito mwatsatanetsatane - mwinamwake kuposa momwe mungafune. Izi, kwenikweni, zimagwira ntchito pa nsanja iliyonse yomwe mumayendetsa nkhokwe zanu ...

Chifukwa chake, titachita mawuwo, tinali ndi Postgres ikuyenda pa voliyumu yakunja (EBS pankhaniyi, popeza timagwira ntchito pa AWS). Mndandandawo unakula, panthawi ina kunali kofunikira kuti musinthe kukula kwake: mwachitsanzo, kukula koyambirira kwa EBS kunali 100 TB, deta inakula, tsopano tikufuna kupanga EBS 200 TB. Bwanji? Tiyerekeze kuti mutha kutaya / kubwezeretsanso pamwambo watsopano, koma izi zitenga nthawi yayitali ndikuphatikiza nthawi yopuma.

Chifukwa chake, ndimafuna kusinthanso komwe kungakulitse gawo la EBS ndikuwuza ma fayilo kuti agwiritse ntchito malo atsopanowo. Ndipo tidachita, koma panthawiyo Kubernetes analibe API iliyonse yosinthira kukula kwake. Popeza tidagwira ntchito pa AWS, tidalemba khodi ya API yake.

Palibe amene akukulepheretsani kuchita zomwezo pamapulatifomu ena. Palibe chidziwitso m'mawu oti chitha kuyendetsedwa pa AWS, ndipo sichigwira ntchito china chilichonse. Mwambiri, iyi ndi pulojekiti ya Open Source: ngati wina akufuna kufulumizitsa kutuluka kwa kugwiritsa ntchito API yatsopano, ndinu olandiridwa. Idyani GitHub, kukoka zopempha - gulu la Zalando limayesetsa kuyankha mwachangu ndikulimbikitsa wogwiritsa ntchito. Monga ine ndikudziwira, polojekiti adatenga nawo gawo pa Google Summer of Code ndi njira zina zofananira. Zalando ikugwira ntchito mwachangu pa izi.

PS Bonasi!

Ngati muli ndi chidwi ndi mutu wa PostgreSQL ndi Kubernetes, chonde dziwani kuti Lachiwiri lotsatira Postgres lidachitika sabata yatha, pomwe ndidalankhula ndi Nikolai. Alexander Kukushkin wochokera ku Zalando. Kanema kuchokera pamenepo akupezeka apa.

Pps

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga