Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ettekanne kĂ€sitleb praktilisi kĂŒsimusi operaatori arendamisest Kubernetes'is, tema arhitektuuri projekteerimisest ja pĂ”hifunktsioonide toimimisest.

Ettekanne jaguneb jÀrgmisteks osadeks:

  • mis on operaator Kubernetes'is ja milleks see on vajalik;
  • kuidas operaator lihtsustab keerukate sĂŒsteemide haldamist;
  • mida operaator suudab ja mida ta ei suuda.

JĂ€rgmisena arutame operaatori sisemist ĂŒlesehitust. Vaatame operaatori arhitektuuri ja toimimist samm-sammult. Üksikasjalikult kĂ€sitleme:

  • koostööd operaatori ja Kubernetes'i vahel;
  • milliseid funktsioone operaator enda peale vĂ”tab, ning mida ta Kubernetes'ile delegeerib.

RÀÀgime shardide ja andmebaasi koopiate haldamisest Kubernetes'is.
SeejĂ€rel arutame andmete salvestamise kĂŒsimusi:

  • kuidas operaatoriga Persistent Storage'iga töötada;
  • kohalikule salvestusele kehtivad probleemid.

Ettekanne lÔpus kÀsitleme praktilisi nÀiteid rakendustest clickhouse-operator Amazonist vÔi Google Cloud Services't. Ettekanne pÔhineb ClickHouse'i operaatori arendamise ja kasutamise kogemustel.

Video:

MĂ€ngi videot

Minu nimi on Vladislav Klimenko. Soovisin tÀna rÀÀkida meie kogemusest operaatori arendamisel ja kasutamisel, kusjuures see on spetsialiseeritud operaator andmebaasi klastrite haldamiseks. NÀiteks ClickHouse-operator ClickHouse'i klasstri haldamiseks.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Miks me saame rÀÀkida operaatorist ja ClickHouse'ist?

  • Tegeleme ClickHouse'i toe ja arendamisega.
  • Praegusel hetkel pĂŒĂŒame aeglaselt anda oma panuse ClickHouse'i arendamisse. Oleme teised, kes on teinud muudatusi ClickHouse'is pĂ€rast Yandexit.
  • PĂŒĂŒame luua tĂ€iendavaid projekte ClickHouse'i ökosĂŒsteemi jaoks.

Ühest sellisest projektist sooviksin rÀÀkida. See on ClickHouse'i operaator Kubernetes'i jaoks.

Oma ettekandes tahaksin kÀsitleda kahte teemat:

  • Esimene teema – kuidas meie operaator ClickHouse'i andmebaaside haldamisel Kubernetes'is töötab.
  • Teine teema – kuidas toimib iga operaator, st kuidas see suhtleb Kubernetes'iga.

Need kaks kĂŒsimust kattuvad kogu minu ettekande vĂ€ltel.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kellele vÔiks huvi pakkuda see, millest ma tahan rÀÀkida?

  • Eriti huvitav on see neile, kes haldavad operaatoreid.
  • VĂ”i neile, kes soovivad luua oma operaatorit, et mĂ”ista, kuidas see toimib seestpoolt, kuidas operaator suhelda Kubernetese ja millised probleemid vĂ”ivad tekkida.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kuna paremini mÔista, millest me tÀna rÀÀgime, oleks hea teada, kuidas Kubernetes töötab ja omada alusvalmidust pilvetehnoloogiate osas.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Mis on ClickHouse? See on veergudega andmebaas, millel on spetsiifika analĂŒĂŒtiliste pĂ€ringute online-töötlemiseks. Ja see on tĂ€iesti avatud lĂ€htekoodiga.

Ja me peame teadma ainult kahte asja. Peame teadma, et see on andmebaas, seega, mida ma rÀÀgin, on kohaldatav praktiliselt igale andmebaasile. Ja et andmebaasihaldussĂŒsteem ClickHouse skaleerub vĂ€ga hĂ€sti, pakkudes praktiliselt lineaarset skaleeritavust. SeetĂ”ttu on klastriseisund ClickHouse jaoks loomulik. Ja me tahame arutada, kuidas ClickHouse'i klastrit Kuberneteses hallata.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Miks on see seal vajalik? Miks ei saa me seda iseseisvalt jÀtkata? Ja vastused on osaliselt tehnilised ja osaliselt organisatsioonilised.

  • Praktikas puutume ĂŒha enam kokku olukordadega, kus suurtes ettevĂ”tetes on peaaegu kĂ”ik komponendid juba Kuberneteses. Andmebaasid jÀÀvad vĂ€ljapoole.
  • Ja ĂŒha rohkem kĂŒsitakse: "Kas on vĂ”imalik see sisse viia?" SeetĂ”ttu pĂŒĂŒdlevad suured ettevĂ”tted maksimaalse haldamise ĂŒhtsuse poole, et kiiresti hallata oma andmesalvestusi.
  • See aitab eriti, kui on vajalik maksimaalne kordamine uues kohas, s.t. maksimaalne ĂŒlekantavus.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kui lihtne vÔi keeruline see on? Loomulikult saab seda teha kÀsitsi. Kuid see ei ole nii lihtne, kuna meil on keerukus Kubernetesega haldamises, millele lisandub ClickHouse'i spetsiifika. Nii tekib kogum.

Ja kĂ”ik koos annab piisavalt suure tehnoloogiate kogumi, mille haldamine muutub ĂŒsna keeruliseks, kuna Kubernetes toob igapĂ€evaseid probleem kĂŒsimusi kĂ€itamiseks ning ClickHouse tĂ”statab igapĂ€evase tööga seotud probleeme. Eriti kui meil on mitu ClickHouse'i, ja me peame pidevalt nendega midagi tegema.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

ClickHouse'il on dĂŒnaamilise konfiguratsiooniga piisavalt palju kĂŒsimusi, mis tekitavad pidevat koormust DevOpsile:

  • Kui soovime ClickHouse'is midagi muuta, nĂ€iteks lisada koopiat vĂ”i shard'i, peame tegelema konfiguratsiooni haldamisega.
  • Siis tuleks andmemudel vahetada, sest ClickHouse'il on spetsiifiline sharding'i viis. Seal tuleb andmemudelit paigutada ja konfiguratsioone seadistada.
  • On vajalik seadistada jĂ€lgimine.
  • Logide kogumine uute shardide ja uute replikate jaoks.
  • On muretes taastumise pĂ€rast.
  • Ja taaskĂ€ivitamise.

Need on rutiinsed tööd, mida oleks vÀga soovitav lihtsustada.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kubernetes aitab tÔhusalt korraldada, kuid pÔhitehniliste asjade puhul.

Kubernetes lihtsustab ja automatiseerib selliseid asju nagu:

  • Taastumine.
  • TaaskĂ€ivitamine.
  • SĂŒsteemi salvestuse haldamine.

See on hea, see on Ôige suund, kuid tal ei ole tÀielikku arusaama, kuidas andmebaasi klastrit hallata.

Soovime rohkem, tahame, et kogu andmebaas töötaks Kuberneteses.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Soovime saada midagi nagu suur maagiline punane nupp, millele vajutada ja mille abil luuakse ja hallatakse klastrit kogu elu tsĂŒkli jooksul, lahendades igapĂ€evaseid ĂŒlesandeid. ClickHouse klaster Kuberneteses.

Ja me pĂŒĂŒdsime luua lahenduse, mis aitaks tööd lihtsustada. See on ClickHouse-operator Kuberneteses ettevĂ”ttelt Altinity.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Operator on programm, mille pĂ”hiĂŒlesanne on hallata teisi programme, st see on haldur.

Ja see sisaldab kÀitumismalle. Seda vÔib nimetada kodeeritud teadmusteks teema valdkonnas.

Ja selle peamine eesmÀrk on lihtsustada DevOpsi elu ning vÀhendada mikromanageerimist, et ta (DevOps) mÔtleks kÔrgema taseme mÔisted, st et ta (DevOps) ei tegeleks mikromanageerimisega ega seadistaks kÔiki detaile kÀsitsi.

Ja just operator on robotassistend, kes tegeleb mikrotegevustega ja aitab DevOps'i.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Miks on vajalik operator? Ta nĂ€itab end eriti hĂ€sti kahe kĂŒsimuse puhul:

  • Kui ClickHouse'i spetsialistil pole piisavalt kogemusi, kuid ClickHouse'i kasutamine on siiski vajalik, lihtsustab operator haldamist ja vĂ”imaldab hallata ClickHouse'i klastrit piisavalt keerulise konfiguratsiooniga, samas pĂ”hjalikesse detailidesse mitte sĂŒvenedes. Lihtsalt antakse talle kĂ”rgetasemelised ĂŒlesanded ja see töötab.
  • Ja teine ĂŒlesanne, kus ta kĂ”ige paremini esitleb, on see, kui on vaja automatiseerida suurt hulka tĂŒĂŒpilisi ĂŒlesandeid. Eemaldab mikroulesanded sĂŒsteemiadminnide kĂ€est.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

See on kÔige vajalikum kas neile, kes just alustavad oma teed, vÔi neile, kellel on palju automatiseerimisega tegeleda.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Mis on siis lĂ€henemise erinevus, mis pĂ”hineb operaatoritel, teiste sĂŒsteemide puhul? On ju olemas Helm. See aitab samuti installida ClickHouse'i, saab joonistada helm charts, mis isegi paigaldavad terve ClickHouse'i klastrite. Mis siis on erinevus operaatori ja nĂ€iteks Helmi vahel?

Peamine fundamentaalne erinevus on see, et Helm on paketihaldus, samas kui operaator lĂ€heb kaugemale. See hĂ”lmab kogu elutsĂŒkli. See ei ole ainult paigaldamine, need on igapĂ€evased ĂŒlesanded, mis sisaldavad skaleerimist, shardeerimist, st kĂ”ike, mida tuleb elutsĂŒkli jooksul teha (kui vajalik, siis ka eemaldamine) – kĂ”ik selle lahendab operaator. Ta pĂŒĂŒdleb automatiseerimiseks ja kogu tarkvara elutsĂŒkli teenindamiseks. See on tema fundamentaalne erinevus teiste esitatud lahenduste seas.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

See oli sissejuhatav osa, liikuge edasi.

Kuidas me oma operaatorit ehitame? PĂŒĂŒame lĂ€heneda kĂŒsimusele, et hallata ClickHouse'i klastrit kui ĂŒht ressurssi.

Siin on meie pildi vasakus osas sisenemisandmed. See on YAML klastrite spetsifikatsioon, mis klassikaliselt edastatakse lÀbi kubectl Kubernetesesse. Seal operaator haarab selle, teeb oma maagia. Ja vÀljundina saame sellise skeemi. See on ClickHouse'i rakendamine Kuberneteses.

Ja edaspidi vaatame aeglaselt, kuidas operaator tĂ€pselt töötab, milliseid tĂŒĂŒpilisi ĂŒlesandeid saab lahendada. Vaatame ainult tĂŒĂŒpilisi ĂŒlesandeid, sest meil on piiratud aeg. Ja rÀÀgitakse mitte kĂ”igest, mida operaator vĂ”ib lahendada.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

LÀhme praktikast lÀhtudes. Meie projekt on tÀielikult avatud lÀhtekoodiga, seega saab vaadata GitHub'is, kuidas see töötab. Ja arominekuga on soovitatav alustada Quick Start Guide'iga.

Kui soovite pĂ”hjalikult sĂŒveneda, siis pĂŒĂŒame hoida dokumentatsiooni enam-vĂ€hem korralikus seisundis.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Alustame praktilise ĂŒlesandega. Esimene asi, millega me kĂ”ik alustada tahame, on kĂ€ivitada esimene nĂ€ide kuidagi. Kuidas kĂ€ivitada ClickHouse'i operaatorit, isegi teadmata, kuidas see töötab? Kirjutame manifesti, kuna kogu suhtlus k8s-iga toimub manifestide kaudu.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Siin on selline keeruline manifest. Punasega vÀlja toodud on see, millele tuleb tÀhelepanu pöörata. Palume operaatoril luua klastrit nimega demo.

Praegu on need pĂ”hinĂ€ited. Storage'i pole veel kirjeldatud, kuid me tuleme storage'i juurde hiljem tagasi. Praegu vaatame klastrite arengut dĂŒnaamikas.

Oleme selle manifesti loonud. Anname selle meie operaatorile. Tema töötas, tegi oma maagia.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Vaadake konsooli. Kolm komponenti Ă€ratavad huvi – need on Pod, kaks teenust ja StatefulSet.

Operaator töötas ja me saame vaadata, mida ta tÀpselt lÔi.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ta loob ligikaudu sellise skeemi. Meil on StatefulSet, Pod, ConfigMap iga koopiana, ConfigMap kogu klastrile. Teenused peab olema sissepÀÀsu punktid klastrisse.

Teenused – see on keskne Load Balancer Service ja vĂ”ib olla ka iga koopia jaoks, iga shardi jaoks.

Siin on meie pĂ”hikluster, mis vĂ€lja nĂ€eb umbes selliselt. See koosneb ĂŒhest ainsast sĂ”lmest.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Liigume edasi, keerame asja keerulisemaks. Klastrit tuleb shardida.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Meie ĂŒlesanded kasvavad, algab dĂŒnaamika. Tahame lisada shardi. JĂ€lgime arengut. Muudame oma spetsifikatsiooni. NĂ€itame, et soovime kahte shardi.

See on sama fail, mis areneb dĂŒnaamiliselt koos sĂŒsteemi kasvuga. Storage'i pole, storage'i kĂ€sitletakse hiljem, see on eraldi teema.

Anname YAML operaatorile ja vaatame, mis saadakse.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Operaator mĂ”tles ja lĂ”i jĂ€rgmised ĂŒksused. Meil on juba kaks Pod'i, kolm teenust ja Ă€kitselt 2 StatefulSet'i. Miks 2 StatefulSet'i?

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Skeem nĂ€gi vĂ€lja nĂ”nda – see on meie algne seis, kui meil oli ĂŒks pod.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

NĂŒĂŒd nĂ€eb see vĂ€lja nĂ”nda. Seni on kĂ”ik lihtne, see on dubleeritud.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja miks StatefulSet'ide arv kasvas kahele? Siin tuleb kÔrvale tÔmmata ja arutada, kuidas Kuberneteses toimub Pod'ide haldamine.

On selline objekt nagu StatefulSet, mis vĂ”imaldab luua Pod'ide komplekti mallist. Siin on vĂ”tmetegur Template. Ja ĂŒhes StatefulSet'is saab palju Pod'e kĂ€ivitada ĂŒhtede mallide alusel. Ja vĂ”tmefraas siin on â€žĂŒhtede mallide alusel palju Pod'e“.

Ja oli suur kiusatus teha kogu klaster, pakkides kĂ”ik ĂŒhte StatefulSet'i. See töötab, selles pole mingeid probleeme. Kuid on ĂŒks nĂŒanss. Kui soovime luua heterogeense klastri, st mitmest ClickHouse'i versioonist, siis siin tekivad meil kĂŒsimused. Jah, StatefulSet vĂ”ib teha rolling update'i, jah, seal saab uut versiooni rakendada, selgitades, et korraga ei tohiks proovida rohkem kui niivĂ”rd palju noode.

Aga kui extrapoleerida ĂŒlesanne ja öelda, et soovime luua tĂ€ielikult heterogeense klastri ning soovime mitte vanat versioonist uut rakendada rolling update'i abil, vaid soovime lihtsalt luua heterogeense klastri, mis koosneb erinevatest ClickHouse'i versioonidest ja erinevast salvestamisest. NĂ€iteks, tahame teha mĂ”ned replikad eraldi ketastele, aeglastele, ĂŒldiselt, soovime tĂ€ielikult ĂŒles ehitada heterogeense klastri. Ja kuna StatefulSet teeb ĂŒhest ĆĄabloonist standardiseeritud lahenduse, siis pole seda vĂ”imalik teha.

PĂ€rast mĂ”ningast kaalumist otsustasime, et teeme nii. Iga replik on oma StatefulSet'is. Sellel lahendusel on mĂ”ned puudused, kuid praktikas kapseldab see kĂ”ik tĂ€ielikult operaator. Ja see toob kaasa palju eeliseid. Saame ehitada tĂ€ielikult sellise klastri, nagu soovime, nĂ€iteks tĂ€iesti heterogeense. Seega, klastris, kus meil on kaks shardi ĂŒhe replikaga, on meil 2 StatefulSet'i ja 2 Pod'i just sellepĂ€rast, et oleme valinud sellise lĂ€henemise eespool nimetatud pĂ”hjustel, et luua heterogeenne klaster.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Naaseme praktiliste ĂŒlesannete juurde. Meie klastris tuleb seadistada kasutajad, st tuleb teha mingit konfiguratsiooni ClickHouse'is Kuberneteses. Operaator pakub selleks kĂ”ik vĂ”imalused.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Saame otse YAML-s kirjutada, mida soovime. KĂ”ik konfiguratsiooni valikud kaardistuvad otse sellest YAML-ist ClickHouse'i seadistustesse, mis siis jagatakse ĂŒle kogu klastris.

Saame ka niimoodi kirjutada. See on lihtsalt nĂ€ide. Parool vĂ”ib olla krĂŒpteeritud. Toetatakse tĂ€ielikult kĂ”iki ClickHouse'i konfiguratsiooni valikuid. Siin on ainult nĂ€idis.

Klastri konfiguratsioon levib nagu ConfigMap. Praktikas ei toimu ConfigMap'i uuendamine hetkega, seega kui klaster on suur, siis konfiguratsiooni surumise protsess vÔtab aega. Kuid see on kÔik vÀga mugav kasutuses.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Vaatame ĂŒlesande keerukust. Klaster areneb. Soovime andmeid replitseerida. Ehk meil on juba kaks shardi, kummalgi ĂŒks koopia, kasutajad on seadistatud. Kasvame ja soovime replitseerimisega tegeleda.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Mida vajame replitseerimiseks?

Meile on vajalik ZooKeeper. ClickHouse'is on replitseerimine ĂŒles ehitatud ZooKeeperi kasutamisele. ZooKeeper on vajalik, et erinevad ClickHouse'i koopiad jĂ”uaksid kokkuleppele, millised andmeplokid on millises ClickHouse'is.

Iga ZooKeeper sobib kasutamiseks. Kui ettevÔttel on vÀline ZooKeeper, siis vÔib seda kasutada. Kui ei, siis saab meie repostiitorist paigaldada. On olemas installer, mis teeb selle protsessi lihtsamaks.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja kogu sĂŒsteemi koostöö skeem nĂ€eb vĂ€lja selline. Meil on Kubernetes platvormina. Sellel töötab ClickHouse'i operaator. ZooKeeper on siin kujutatud. Operaator suhtleb nii ClickHouse'i kui ka ZooKeeperiga. Ehk toimub koostöö.

Ja see on vajalik, et ClickHouse suudaks edukalt andmeid k8s'is replitseerida.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Vaatame nĂŒĂŒd ĂŒlesannet ise, kuidas nĂ€eb vĂ€lja replitseerimise mansiif.

Lisame meie mansiifile kaks sektsiooni. Esimene – kust vĂ”tta ZooKeeper, mis vĂ”ib olla kas Kubernetes'es sees vĂ”i vĂ€line. See on lihtsalt kirjeldus. Ja tellime koopiad. Ehk soovime kahte koopiat. LĂ”puks peaks meil olema 4 pod'i. Storage'i me mĂ€letame, see tuleb veidi hiljem. Storage – see on eraldi teema.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

See oli algne variant.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

NĂŒĂŒd nĂ€eb see vĂ€lja nii. Lisanduvad koopiad. 4. ei mahtunud, usume, et neid vĂ”ib olla palju. Ja kĂŒlje peale lisandub ZooKeeper. Skeemid muutuvad keerukamaks.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja on aeg lisada jĂ€rgmine ĂŒlesanne. Lisame PĂŒsiva SĂ€ilitamise.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)PĂŒsiva SĂ€ilitamise korral on meil erinevad teostusvariandid.

Kui kasutame pilveteenuse pakkujat, nÀiteks Amazoni vÔi Google'i, siis on suur kiusatus kasutada pilvepÔhist salvestust. See on vÀga mugav ja hea.

Ja teine variant. See on kohaliku salvestuse jaoks, kui meil on iga nodi peal kohalikud kettad. See variant on palju keerulisem teostada, kuid samas on see tootlikum.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Vaatame, millised on pilvesalvestuse suhtes meie variandid.

On eelised. Selle konfigureerimine on vÀga lihtne. Me lihtsalt tellime pilveteenuse pakkujalt, et palun anna meile sellise mahutavusega ja sellise klassiga salvestus. Klassid on pakkujate poolt iseseisvalt mÀÀratletud.

Ja on puudus. MÔne jaoks ei ole see kriitiline puudus. Loomulikult vÔivad esineda mÔned tootlikkuse probleemid. See töötab vÀga mugavalt, on usaldusvÀÀrne, kuid seal on mÔned potentsiaalsed tootlikkuse langused.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kuna ClickHouse keskendub just tootlikkusele, vĂ”ib isegi öelda, et pigistab vĂ€lja kĂ”ik, mis vĂ”imalik, pĂŒĂŒavad vĂ€ga paljud kliendid saavutada maksimaalset tootlikkust.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Maksimaalse saavutamiseks vajame kohalikke andmesalvestusi.

Kubernetes pakub kolme abstraktsiooni kohaliku andmesalvestuse kasutamiseks Kuberneteses. Need on:

  • EmptyDir
  • HostPath.
  • Local

Vaatame, kuidas nad erinevad ja kuidas nad sarnanevad.

Esiteks, kĂ”igis kolmes lĂ€henemisviisis on andmesalvestus – need on kohalikud kettad, mis asuvad samal fĂŒĂŒsilisel k8s sĂ”lmel. Kuid neil on mĂ”ned erinevused.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Alustame kĂ”ige lihtsamast, st emptyDir. Mis see praktikas on? Palume oma spetsifikatsioonis konteinerisĂŒsteemil (enamasti on see Docker) anda meile juurdepÀÀs kausta kohaliku ketta juurde.

Praktikas loob Docker kuskil seal enda teedel ajutise kausta, nimetab selle pikka hÀÀldamatut numbrit kasutades. Ja pakub sellele juurdepÀÀsu liidest.

Kuidas see tootlikkuse osas töötab? See töötab kohaliku ketta kiirusel, st see on tÀielik juurdepÀÀs oma kettale.

Kuid sellel on oma puudus. PĂŒsivus on selles osas piisavalt kaheldav. Esimese liikumise korral koos konteineritega kaob pĂŒsivus. Kui Kubernetes otsustab mingil pĂ”hjusel selle Pod'i teisele kettale viia, kaovad andmed.

See lÀhenemine sobib hÀsti katsetamiseks, sest kiirus on juba normaalne, kuid millegi tÔsise jaoks ei sobi see variant.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Seega on olemas teine lĂ€henemine. See on hostPath. Kui vaadata eelmist slaidi ja seda, siis vĂ”ib nĂ€ha vaid ĂŒhte erinevust. Meie kaust on vĂ€lja viidud Dockerist otse Kubernetesesse. Siin on natuke lihtsam. Me kirjutame otse kohaliku failisĂŒsteemi teed, kuhu tahame oma andmed salvestada.

Selle meetodi eelised on olemas. See on juba tĂ”eline pĂŒsivus, ja veel klassikaline. Andmed salvestatakse kettale mingisse aadressi.

Samuti on ka puudusi. See on haldamise keerukus. Meie Kubernetes vĂ”ib soovida Pod'i liigutada teisele fĂŒĂŒsilisele nodile. Siin tuleb mĂ€ngu DevOps. Tema peab Ă”igesti selgitama kogu sĂŒsteemile, et neid pod'e vĂ”ib liigutada ainult sellistele nodidele, kus sul on nende teede kaudu midagi monteeritud, ja mitte rohkem kui ĂŒhte nodi korraga. See on ĂŒsna keeruline.

Spetsiaalselt nende eesmĂ€rkide jaoks oleme meie operaatoris loonud malle, et kogu see keerukus Ă€ra peita. Ja vĂ”iks lihtsalt rÀÀkida: „Ma tahan, et mul oleks iga fĂŒĂŒsilise nodi kohta ĂŒks ClickHouse'i instants ja sellisel teel“.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Aga see vajadus ei ole vajalik ainult meile, seega mehed Kubernetesest mĂ”istavad ka, et inimestele meeldib saada juurdepÀÀs fĂŒĂŒsilistele ketastele, seega nad pakuvad kolmandat taset.

See on nimega local. Erinevus eelmisest slaidist on praktiliselt olematu. Ainult varem tuli kĂ€sitsi lĂ€bi viia, et meil ei tohi neid pod'e nodilt nodile liigutada, sest nad peavad olema seotud selle teega kohaliku fĂŒĂŒsilise ketta juurde, ja nĂŒĂŒd on kĂ”ik need teadmised kapseldatud ise Kubernetesesse. Ja seadistamine on oluliselt lihtsam.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Naaseme oma praktilise ĂŒlesande juurde. Naaseme YAML malli juurde. Siin on meil tĂ”eline salvestus. Oleme tagasi selle juurde. Me mÀÀratleme klassikalise VolumeClaim malli nagu k8s. Ja kirjeldame, millist salvestust me tahame.

PĂ€rast seda kĂŒsib k8s salvestust. KĂŒllaldab meile selle StatefulSet'is. Ja lĂ”puks on see ClickHouse'i kĂ€sutuses.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Meil oli selline skeem. Meie Persistent Storage oli punane, mis nagu vihjas, et seda oleks mÔistlik teha.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja see muutub roheliseks. NĂŒĂŒd on ClickHouse'i k8s klastrite skeem tĂ€ielikult valmis. Meil on shard'id, replikad, ZooKeeper, on olemas tĂ”eline Persistent, mis on ellu viidud sel vĂ”i teisel viisil. Skeem on juba tĂ€ielikult funktsionaalne.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Me jÀtkame edasiviimist. Meie klaster areneb. Ja Aleksei pingutab, ning vÀljastab uue ClickHouse'i versiooni.

Tekib praktiline ĂŒlesanne - testida uut ClickHouse'i versiooni meie klastris. Ja loomulikult ei taha me seda kogu aeg kasutada, tahaks kuskil kauges nurgas ĂŒhte replikat panna uue versiooni, ja vĂ”ib-olla mitte ĂŒhte, vaid kohe kaks, sest neid vĂ€ljastatakse sageli.

Mida me saame selle kohta öelda?

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Siin on meil just selline vÔimalus. Need on pod'i mallid. Saame neid kirjeldada, meie operaator vÔimaldab tÀielikult ehitada heterogeenset klastrit. St. saame konfigureerida alates kÔigist replikatest kuni iga isikliku replikani, mÀÀrates, millist versiooni soovime ClickHouse'ist, millist versiooni soovime salvestusruumist. Saame tÀielikult konfigureerida klastrit vastavalt meie vajadustele.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Natuke sĂŒveneme nĂŒĂŒd sisemusse. Varem rÀÀkisime, kuidas ClickHouse operaator töötab ClickHouse'i spetsiifikaga seonduvalt.

NĂŒĂŒd tahaksin öelda paar sĂ”na selle kohta, kuidas töötab igasugune operaator ja kuidas see suhtleb K8s-iga.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Alustame K8siga suhtlemise uurimist. Mis juhtub, kui me saame kubectl apply? Meie objektid ilmuvad API kaudu etcd-sse.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

NÀiteks Kubernetes'i pÔhiobjektid: pod, StatefulSet, teenus ja nii edasi.

Sel ajal ei toimu veel fĂŒĂŒsiliselt midagi. Need objektid tuleb klastris materialiseerida.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Selleks tuleb kontrollija. Kontrollija on spetsiaalne K8s komponent, mis oskab neid kirjeldusi materialiseerida. Ta teab, kuidas ja mida fĂŒĂŒsiliselt teha. Ta teab, kuidas konteinerid kĂ€ivitada, mida seadistada serveri töölepanemiseks.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja ta materialiseerib meie objektid K8s-i.

Aga me tahame hallata mitte ainult pod'e ja StatefulSet'e, vaid tahame luua ClickHouseInstallation'i, st. ClickHouse tĂŒĂŒpi objekti, et saaksime sellega kui tervikuga opereerida. Praegu sellist vĂ”imalust ei ole.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Aga K8s-il on jÀrgmine tore asi. Tahame, et meil oleks kuskil selline keeruline struktuur, mis koosneks pod'dest ja StatefulSet'ist meie klastris.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja mida selleks teha? Esiteks, tuleb mĂ€ngu Custom Resource Definition. Mis see on? See on K8si kirjeldus, et sul on veel ĂŒks andmetĂŒĂŒp, et me tahame lisada pod'ile ja StatefulSet'ile kohandatud ressursi, mis oleks keeruline seestpoolt. See on andmestruktuuri kirjeldus.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Seda saadame samuti kubectl apply kaudu. Kubernetes on selle rÔÔmuga vastu vÔtnud.

Ja nĂŒĂŒd on meie hoidlas, objektil etcd-s, vĂ”imalus salvestada kohandatud ressurss nimega ClickHouseInstallation.

Aga praegu ei juhtu midagi. See tĂ€hendab, et kui me nĂŒĂŒd loome YAML-faili, mis kirjeldab shard'e, replikaid ja ĂŒtleme «kubectl apply», siis Kubernetes aktsepteerib seda, salvestab etcd-sse ja ĂŒtleb: «SuurepĂ€rane, aga ma ei tea, mida sellega teha. Kuidas hooldada ClickHouseInstallation, ei tea ma».

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Seega, meil on vaja kedagi, kes aitaks Kubernetesel hooldada uut andmeformaati. Vasakul on meil Kubernetes'i baasjuht, mis töötab standardsete andmeformaatide kallal. Ja paremal peab olema kohandatud juht, mis oskab töötada kohandatud andmeformaatide kallal.

Ja seda nimetatakse operaatoriks. Ma tÔin ta siia teadlikult vÀlja Kubernetes'e kontekstist, sest ta vÔib töötada ka vÀljaspool K8s. Enamasti töötavad kÔik operaatorid siiski Kubernetes'es, kuid ei ole midagi, mis takistaks tal töötamast ka vÀljas, seetÔttu on ta siin spetsiaalselt esitatud vÀljaspool.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kohandatud juht, see on operaator, suhtleb Kubernetes'ega lÀbi API. Ta teab, kuidas suhelda API-ga. Ja ta juba teab, kuidas kohandatud ressursist luua keerukat struktuuri, mida me tahame saavutada. Just sellega tegeleb operaator.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kuidas operaator töötab? Vaatame paremat kĂŒlge, et teada saada, kuidas ta seda teeb. Uurime, kuidas operaator kĂ”ik selle materiaalselt ellu viib ja kuidas toimub edasine suhtlemine K8s-iga.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Operaator on programm. See on sĂŒndmustele orienteeritud. Operaator registreerib end Kubernetes API-s sĂŒndmustele. Kubernetes API-s on sisenemispunkte, kus saab registreeruda sĂŒndmustele. Ja kui K8s-is midagi muutub, siis saadab Kubernetes sĂŒndmusi kĂ”igile soovijatele, st kes on sellele API punktile registreeritud, need saavad teateid.

Operaator registreerib end sĂŒndmustele ja peab tegema mingi reaktsiooni. Tema ĂŒlesanne on reageerida tekkivatele sĂŒndmustele.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

SĂŒndmused genereeritakse teatud uuenduste kaudu. Meie YAML-fail, mis kirjeldab ClickHouseInstallation'i, jĂ”uab kubectl apply kaudu etcd-sse. Seal tekib sĂŒndmus, mille tulemusena see sĂŒndmus jĂ”uab ClickHouse-operaatorisse. Operaator saab selle kirjelduse. Ja ta peab midagi tegema. Kui ClickHouseInstallation objekti kohta on tulnud uuendus, siis tuleb uuendada klastrit. Ja operaatori ĂŒlesanne on uuendada klastri.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Mida ta teeb? Esiteks tuleb koostada tegevusplaan, mida me selle uuendusega teeme. Uuendused vÔivad olla vÀga vÀikesed, st vÀikestes YAML-esitustes, kuid need vÔivad tuua kaasa vÀga suuri muudatusi klastris. SeetÔttu koostab operaator plaani ja seejÀrel jÀrgib seda.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ta hakkab selle plaani kohaselt ehitama struktuuri sisse, et materialiseerida pod'id, teenuseid, st teha seda, mis on tema pÔhieesmÀrk. See on nagu ClickHouse'i klastrite ehitamine Kuberneteses.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

NĂŒĂŒd puudutame huvitavat teemat. See on vastutuse jagamine Kubernetes'i ja operaatori vahel, st mida teeb Kubernetes, mida teeb operaator ja kuidas nad omavahel suhtlevad.

Kubernetes vastutab sĂŒsteemsete asjade eest, st aluste objektide pĂ”hikomplekti eest, mida saab tĂ”lgendada kui sĂŒsteemi ulatust. Kubernetes teab, kuidas kĂ€ivitada pod'e, kuidas konteinerit taastada, kuidas mountida mahtu, kuidas töötada ConfigMap'i'ga, st kĂ”ike, mida saab nimetada sĂŒsteemiks.

Operaatorid töötavad spetsiifilistes valdkondades. Iga operaator on loodud oma spetsialiseeritud valdkonna jaoks. Meie oleme loonud ClickHouse'i jaoks.

Ja operaator suhtleb konkreetselt selliste valdkonna termineid kasutades, nagu repliigi lisamine, skeemi loomine, jÀlgimise seadistamine. Nii toimub selle vastutuse jagamine.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Vaadakem praktilist nÀidet, kuidas see vastutuse jagamine toimub, kui me teeme tegevuse repliigi lisamiseks.

Operaatorile tuleb ĂŒlesanne – lisada replik. Mida operaator teeb? Operaator arvutab, et on vaja luua uus StatefulSet, milles tuleb kirjeldada sellised mallid, mahtude nĂ”uded.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ta on kĂ”ik selle ette valmistanud ja edastab edasi K8s'ile. Ta ĂŒtleb, et tal on vaja ConfigMap'i, StatefulSet'i, mahtu. Kubernetes töötab vĂ€lja. Ta materialiseerib pĂ”hiejed, millega ta opereerib.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja siis astub taas mĂ€ngu ClickHouse-operator. Tal on juba fĂŒĂŒsiline pod, mille peal saab juba midagi teha. Ja ClickHouse-operator töötab taas oma valdkonna terminoloogias. St, et ClickHouse'i puhul, et lisada replik klastrisse, tuleb kĂ”igepealt seadistada andmeskeem, mis klastris on. Ja teiseks tuleb see replik lisada jĂ€lgimise alla, et see oleks hĂ€sti jĂ€lgitav. Operaator seadistab selle.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja alles sellest hakkab tööle ClickHouse, st veel ĂŒks kĂ”rgem tasandi entiteet. See on juba andmebaas. Tal on oma instance, konfigureeritud replikatsioon, mis on valmis klastrisse liituma.

Nii et replikatsiooni lisamise protsess ja vastutuse jagamine on piisavalt pikk.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

JĂ€tkame meie praktilisi ĂŒlesandeid. Kui klaster on juba olemas, siis saab teostada konfiguratsiooni migreerimist.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Oleme teinud nii, et olemasolevasse xml-faili, mille ClickHouse mÔistab, saab lÀbipÀÀsu luua.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

ClickHouse'i saab tĂ€psustada. Just zoned deployment – see on see, millest rÀÀkisin hostPath'i ja kohalikku salvestusse seletades. See on Ă”ige viis zoned deployment'i teostamiseks.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

JĂ€rgmine praktiline ĂŒlesanne on jĂ€lgimine.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kui meie klaster muutub, tuleb jÀlgimist perioodiliselt seadistada.

Vaadakem skeemi. Oleme siin juba arutanud rohelisi nooli. NĂŒĂŒd vaatame punaseid nooli. See on see, kuidas tahame oma klastrit jĂ€lgida. Kuidas mÔÔdud ClickHouse'i klastri kaudu saavad Prometheusesse, seejĂ€rel Grafanasse.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Mis on jĂ€lgimise keerukus? Miks see esitatakse kui mingisugune saavutus? Keerukus seisneb dĂŒnaamikas. Kui meil on klaster, mis on staatiline, siis vĂ”ib jĂ€lgimise seadistada ĂŒks kord ja unustada selle.

Aga kui meil on palju klustreid vĂ”i pidevalt midagi muutub, siis on protsess dĂŒnaamiline. Ja pidev jĂ€lgimise seadistamine on ressursi- ja aeganĂ”udev, st isegi lihtsalt tĂŒĂŒtav. See tuleb automatiseerida. Keerukus seisneb protsessi dĂŒnaamikas. Ja operaator automatiseerib seda vĂ€ga hĂ€sti.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kuidas meie klaster arenes? Alguses oli see selline.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Siis oli see selline.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

LÔppkokkuvÔttes sai see selliseks.

Ja jĂ€lgimine toimub automaatselt operaatori kaudu. Üks sisenemiskoht.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Ja me vaatame lihtsalt vÀljundis Grafana juhtpaneeli, kuidas meie klastris elu pulbitseb.

Muide, Grafana juhtpaneel jagatakse ka meie operaatoriga otse lĂ€htekoodis. Seda saab ĂŒhendada ja kasutada. See ekraanipilt anti mulle meie DevOps'ilt.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kuhu tahaksime edasi liikuda? See on:

  • Arendada automatiseeritud testimist. Peamine ĂŒlesanne on automatiseeritud testimine uute versioonide jaoks.
  • Soovime samuti automatiseerida integratsiooni ZooKeeperiga. Plaanis on integreeruda ZooKeeper-operatoriga. See tĂ€hendab, et ZooKeeperi jaoks on kirjutatud operaator ja oleks mĂ”istlik, et kaks operaatorit hakkavad integreeruma, et luua mugavamat lahendust.
  • Soovime teha keerukamaid elujĂ”udluse kontrollimisi.
  • Roheline on see, mida me lĂ€heneme, Templatesi pĂ€rimise – VALMIS, st jĂ€rgmise operaatori versiooniga on meil juba ĆĄablonite pĂ€rimine. See on vĂ”imas tööriist, mis vĂ”imaldab luua keerulisi konfiguratsioone tĂŒkkidest.
  • Ja me soovime keeruliste ĂŒlesannete automatiseerimist. Üks peamine sellest on Re-sharding.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Teeme vahekokkuvÔtte.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Mida me saadame vĂ€lja? Kas tasub sellega tegeleda vĂ”i mitte? Kas on mĂ”tet proovida andmebaasi tuua Kubernetesesse ja rakendada operaatorit ĂŒldiselt ning Alitnity-operatorit konkreetselt.

Saame vÀlja jÀrgmise:

  • Oluline lihtsustamine ja automatiseerimine konfigureerimisest, juurutamisest ning ka tugitegevusest.
  • Vahetu sisseehitatud jĂ€lgimine.
  • Ja valmis kasutamiseks kodeeritud ĆĄablonid keeruliste olukordade jaoks. NĂ€iteks ei pea enam kĂ€sitsi tegema toimingut nagu replikatsiooni lisamine. Selle teeb operaator.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

On jÀÀnud vaid viimane kĂŒsimus. Meil on juba andmebaas Kuberneteses, virtualiseerimine. Kuidas on sel lahendusel jĂ”udlusega, eriti arvestades, et ClickHouse on jĂ”udluse poolest optimeeritud?

Vastus – kĂ”ik on korras! Ma ei hakka seda ĂŒksikasjalikult lahti kirjutama, see on eraldi ettekande teema.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Kuid on projekt nimega TSBS. Mis on selle peamine ĂŒlesanne? See on andmebaaside jĂ”udlustest. See on katse vĂ”rrelda sooja sooja, pehmet pehme vastu.

Kuidas see töötab? Genereeritakse ĂŒks andmebaas. Siis seda andmestikku katsetatakse sama testikomplekti abil erinevates andmebaasides. Iga andmebaas lahendab ĂŒhe ĂŒlesande selle oskuste kohaselt. Ja siis saab tulemusi vĂ”rrelda.

See toetab juba palju andmebaase. Olen esile tÔstnud kolm peamist. Need on:

  • TimescaleDB.
  • InfluxDB.
  • ClickHouse.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Samuti on tehtud vĂ”rdlus teise sarnase lahendusega. VĂ”rdlus RedShiftiga. VĂ”rdlus tehti Amazonis. ClickHouse ĂŒletab ka kĂ”ik selles kĂŒsimuses hĂ€sti.

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

Milliseid jÀreldusi saab teha sellest, mida ma rÀÀkisin?

  • Andmebaasi kasutamine Kuberneteses on vĂ”imalik. Kindlasti saab kasutada erinevaid andmebaase, kuid ĂŒldiselt tundub, et see on teostatav. ClickHouse on kindlasti vĂ”imalik Kuberneteses meie operaatoriga.
  • Operaator aitab protsesside automatiseerimisel ja lihtsustab elu.
  • JĂ”udlus on normaalne.
  • Ja me arvame, et seda saaks ja peaks kasutama.

Avaallikas – liituge!

Nagu juba ĂŒtlesin, on operaator tĂ€ielikult avaallika toode, seega oleks vĂ€ga tore, kui vĂ”imalikult palju inimesi seda kasutaks. Liituge! Ootame teid kĂ”iki!

AitÀh kÔigile!

KĂŒsimused

Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)

AitÀh ettekande eest! Minu nimi on Anton. Olen ettevÔttest SEMrush. Mind huvitab logimise teema. JÀlgimisest on kuulda, kuid logimise kohta ei ole midagi, kui rÀÀkida terve klastrist. Meie puhul on nÀiteks klaster loodud raudvaral. Ja me kasutame tsentraliseeritud logimist, kogume standardsete vahenditega kokku. Ja siis tÔmbame sealt vÀlja huvitavad andmed.

Hea kĂŒsimus, st. logimine on meie to-do nimekirjas. Meie operaator ei automatiseeri seda veel. Ta on endiselt arengus, projekt on veel piisavalt noor. Me mĂ”istame, et logimine on vajalik. See on samuti vĂ€ga tĂ€htis teema. Ja see on ilmselt vĂ€hemalt sama oluline kui jĂ€lgimine. Kuid esimene teema, mida ellu viia, oli jĂ€lgimine. Logimine tuleb. Loomulikult pĂŒĂŒame automatiseerida kĂ”ik klastrite elutegevuse aspektid. Seega on vastus – praegu operaator kahjuks ei oska seda teha, kuid see on plaanis, me seda teeme. Kui soovite liituda, palun esitage pull request.

Tere! AitĂ€h ettekande eest! Mul on standardkĂŒsimus, mis on seotud pĂŒsivate mahtudega. Kui me loome selle operaatoriga konfiguratsiooni, siis kuidas operaator mÀÀrab, millisel sĂ”lmel meil on mountitud disk vĂ”i kaust? Kas me peaksime talle eelnevalt selgitama, et palun paigaldage meie ClickHouse just nendele sĂ”lmedele, kus on disk?

Nii palju kui ma aru saan, on see kĂŒsimus seotud kohaliku salvestusega, eriti selle hostPath-i osaga. See on nagu selgitada kogu sĂŒsteemile, et pod peab olema kĂ€ivitatud just sellel sĂ”lmel, kuhu meil on fĂŒĂŒsiliselt ĂŒhendatud disk, mis on monteeritud sellisel teel. See on terve sektsioon, mille ma kĂ€sitlesin vĂ€ga pinnapealselt, kuna sealne vastus on kĂŒllalt mahukas.

LĂŒhidalt öeldes nĂ€eb see vĂ€lja nii. Me peame loomulikult nende mahtude provisioni tegema. Praegusel hetkel ei ole kohalikes salvestustes dĂŒnaamilist provisioni, seega peavad DevOps omaette kettad lĂ”ikama, need mahud. Ja nad peavad selgitama Kubernetes'e provisionile, et sul on teatud klassi PĂŒsiv maht, mis asub teatud sĂ”lmedel. Siis tuleb selgitada Kubernetes'ele, et pod'id, mis vajavad teatud klassi kohalikke salvestusi, tuleb sildistada ainult teatud sĂ”lmedele. Nende eesmĂ€rkide saavutamiseks on operaatoril vĂ”imalus mÀÀrata teatud sildid ja ĂŒhe hosti eksemplar. Tulemuseks on see, et pod'id marsrutatakse Kubernetes'e poolt ainult sellistele sĂ”lmedele, mis vastavad nĂ”uetele, sildid, rÀÀgides lihtsalt. Administratiivtaust mÀÀrab sildid, teeb kettade provisioni kĂ€sitsi. Ja siis see skaleerub.

Ja just kolmas variant kohaliku salvestuse osas aitab seda veidi kergendada. Nagu ma juba rÔhutasin, on see pÔhjalik seadistustöö, mis aitab lÔppkokkuvÔttes saavutada maksimaalset jÔudlust.

Mul on selle osas teine kĂŒsimus. Kubernetes on ĂŒles ehitatud nii, et meil ei ole vahet, kas me kaotame sĂ”lme vĂ”i mitte. Mida me siis teeme, kui me kaotasime sĂ”lme, kus meil oli ĆĄard?

Jah, Kubernetes oli algselt positsioneeritud nii, et meie suhtumine oma pod'idesse on nagu karja, kuid siin iga ketas muutub nagu lemmikloom. On probleem, et me ei saa neid lihtsalt kÔrvale heita. Ja Kubernetes'e areng liigub sinna suunas, et sellele ei saa tÀielikult filosoofiliselt lÀheneda nagu tÀielikult Àra visatud ressurssidele.

NĂŒĂŒd praktiline kĂŒsimus. Mida teha, kui sul on kadunud sĂ”lm, millel oli ketas? Siin lahendatakse probleem juba kĂ”rgemal tasemel. ClickHouse'i korral on meil koopiad, mis töötavad kĂ”rgemal tasemel, st ClickHouse'i tasemel.

Milline on olukord siis? DevOps vastutab selle eest, et andmed ei kaoks. Ta peab Ă”igeaegselt seadistama replikatsiooni ja jĂ€lgima, et replikatsioon toimuks. ClickHouse'i tasemel peavad koopiad olema andmeid dubleeritud. See ei ole ĂŒlesanne, millega operaator tegeleb. Ja see ei ole ĂŒlesanne, millega Kubernetes iseenesest tegeleb. See on ClickHouse'i tasemel.

Mida teha, kui teil on rauanode, mis on vĂ€lja kukkunud? Tundub, et peate seadma teise, Ă”igesti mÀÀrama ketta, rakendama silte. Ja pĂ€rast seda vastab see nĂ”uetele, et Kubernetes saab sellel kĂ€ivitada pod'i instantsi. Kubernetes kĂ€ivitab selle. Teil ei ole ju pod'ide arvu, mis vastaks mÀÀratud nĂ”uetele. See lĂ€bib ringi, mida ma nĂ€itasin. Ja kĂ”rgeimal tasemel mĂ”istab ClickHouse, et meil on tulnud repliik, see on veel tĂŒhi ja sinna tuleb hakata andmeid vedama. TeisisĂ”nu, see protsess on veel halvasti automatiseeritud.

AitĂ€h ettekande eest! Kui juhtub igasuguseid halbu asju, kukub operaator ja restardib, ja sel ajal saabub sĂŒndmusi, kas te töötate neid kuidagi ĂŒles?

Mis juhtub, kui operaator kukub ja restardib, eks?

Jah. Ja sel ajal saabusid sĂŒndmused.

Ülesanne, mida sel juhul teha, jaguneb osaliselt operaatori ja Kubernetes'i vahel. Kubernetes'il on vĂ”imalus juhtuda sĂŒndmus uuesti mĂ€ngida. Ta mĂ€ngib selle uuesti. Ja operaatori ĂŒlesanne on veenduda, et kui sĂŒndmuste logi uuesti mĂ€ngitakse, oleksid need sĂŒndmused idempotentsed. Ja et sama sĂŒndmuse korduv toimumine ei kahjustaks meie sĂŒsteemi. Ja meie operaator tegeleb selle ĂŒlesandega.

Tere! AitÀh ettekande eest! Dmitri Zavyalov, ettevÔte Smedova. Kas plaanitakse operaatorisse lisada vÔimalust seadistada haproxy? Huvitavad miski muu koormuse jaotaja peale standardse, et ta oleks intelligentne ja mÔistaks, et seal on tegelikult ClickHouse.

Kas rÀÀgite Ingress'ist?

Jah, vahetage Ingress haproxy vastu. Haproxy's saab mÀÀrata klastri topoloogia, kus on repliigid.

Kuni praeguseni ei ole me selle peale mĂ”elnud. Kui see on vajalik ja saate selgitada, miks see vajalik on, siis saame selle rakendada, eriti kui soovite osaleda. Vastus on lĂŒhidalt - ei, praegu meil sellist funktsionaalsust ei ole. AitĂ€h vihje eest, vaatame selle peale. Ja kui te seletate ka kasutusjuhtumi ja miks see praktikas vajalik on, nĂ€iteks loote GitHub'is probleemid, siis oleks see suurepĂ€rane.

See on juba olemas.

Hea. Oleme avatud igasugustele ettepanekutele. Ja haproxy lisatakse to-do nimekirja. To-do nimekiri kasvab, mitte ei vÀheneks. Aga see on hea, see tÀhendab, et toode on nÔutud.

Allikas: habr.com

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster