{"id":96965,"date":"2020-10-15T14:42:53","date_gmt":"2020-10-15T12:42:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019"},"modified":"2020-10-15T14:42:53","modified_gmt":"2020-10-15T12:42:53","slug":"operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019","title":{"rendered":"Kubernetes'i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/56e002c7408c4708e39ece867f84171e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ettekanne k\u00e4sitleb praktilisi k\u00fcsimusi operaatori arendamisest Kubernetes'is, tema arhitektuuri projekteerimisest ja p\u00f5hifunktsioonide toimimisest.<\/p>\n<p><\/p>\n<p>Ettekanne jaguneb j\u00e4rgmisteks osadeks:<\/p>\n<p><\/p>\n<ul>\n<li>mis on operaator Kubernetes'is ja milleks see on vajalik;<\/li>\n<li>kuidas operaator lihtsustab keerukate s\u00fcsteemide haldamist;<\/li>\n<li>mida operaator suudab ja mida ta ei suuda.<\/li>\n<\/ul>\n<p><\/p>\n<p>J\u00e4rgmisena arutame operaatori sisemist \u00fclesehitust. Vaatame operaatori arhitektuuri ja toimimist samm-sammult. \u00dcksikasjalikult k\u00e4sitleme:<\/p>\n<p><\/p>\n<ul>\n<li>koost\u00f6\u00f6d operaatori ja Kubernetes'i vahel;<\/li>\n<li>milliseid funktsioone operaator enda peale v\u00f5tab, ning mida ta Kubernetes'ile delegeerib.<\/li>\n<\/ul>\n<p><\/p>\n<p>R\u00e4\u00e4gime shardide ja andmebaasi koopiate haldamisest Kubernetes'is.<br \/>\nSeej\u00e4rel arutame andmete salvestamise k\u00fcsimusi:<\/p>\n<p><\/p>\n<ul>\n<li>kuidas operaatoriga Persistent Storage'iga t\u00f6\u00f6tada;<\/li>\n<li>kohalikule salvestusele kehtivad probleemid.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ettekanne l\u00f5pus k\u00e4sitleme praktilisi n\u00e4iteid rakendustest <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">clickhouse-operator<\/a><\/noindex> Amazonist v\u00f5i Google Cloud Services't. Ettekanne p\u00f5hineb ClickHouse'i operaatori arendamise ja kasutamise kogemustel.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Video:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"z2aARjKDg4w\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/z2aARjKDg4w\/hqdefault.jpg\" alt=\"M\u00e4ngi videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Minu nimi on Vladislav Klimenko. Soovisin t\u00e4na r\u00e4\u00e4kida meie kogemusest operaatori arendamisel ja kasutamisel, kusjuures see on spetsialiseeritud operaator andmebaasi klastrite haldamiseks. N\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">ClickHouse-operator<\/a><\/noindex> ClickHouse'i klasstri haldamiseks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/cc297a3edb3b2a5e30d0dc2725de4011.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Miks me saame r\u00e4\u00e4kida operaatorist ja ClickHouse'ist?<\/p>\n<p><\/p>\n<ul>\n<li>Tegeleme ClickHouse'i toe ja arendamisega. <\/li>\n<li>Praegusel hetkel p\u00fc\u00fcame aeglaselt anda oma panuse ClickHouse'i arendamisse. Oleme teised, kes on teinud muudatusi ClickHouse'is p\u00e4rast Yandexit. <\/li>\n<li>P\u00fc\u00fcame luua t\u00e4iendavaid projekte ClickHouse'i \u00f6kos\u00fcsteemi jaoks. <\/li>\n<\/ul>\n<p><\/p>\n<p>\u00dchest sellisest projektist sooviksin r\u00e4\u00e4kida. See on ClickHouse'i operaator Kubernetes'i jaoks. <\/p>\n<p><\/p>\n<p>Oma ettekandes tahaksin k\u00e4sitleda kahte teemat: <\/p>\n<p><\/p>\n<ul>\n<li>Esimene teema \u2013 kuidas meie operaator ClickHouse'i andmebaaside haldamisel Kubernetes'is t\u00f6\u00f6tab. <\/li>\n<li>Teine teema \u2013 kuidas toimib iga operaator, st kuidas see suhtleb Kubernetes'iga. <\/li>\n<\/ul>\n<p><\/p>\n<p>Need kaks k\u00fcsimust kattuvad kogu minu ettekande v\u00e4ltel. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4cc9790e18e70ae1ccde2cf39ef4ef00.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kellele v\u00f5iks huvi pakkuda see, millest ma tahan r\u00e4\u00e4kida?<\/p>\n<p><\/p>\n<ul>\n<li>Eriti huvitav on see neile, kes haldavad operaatoreid. <\/li>\n<li>V\u00f5i neile, kes soovivad luua oma operaatorit, et m\u00f5ista, kuidas see toimib seestpoolt, kuidas operaator suhelda Kubernetese ja millised probleemid v\u00f5ivad tekkida. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/07545f7a0171b610697c519d4aa9cd43.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuna paremini m\u00f5ista, millest me t\u00e4na r\u00e4\u00e4gime, oleks hea teada, kuidas Kubernetes t\u00f6\u00f6tab ja omada alusvalmidust pilvetehnoloogiate osas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/eff56cc3e83fde3d3e64d73d41b07417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis on ClickHouse? See on veergudega andmebaas, millel on spetsiifika anal\u00fc\u00fctiliste p\u00e4ringute online-t\u00f6\u00f6tlemiseks. Ja see on t\u00e4iesti avatud l\u00e4htekoodiga. <\/p>\n<p><\/p>\n<p>Ja me peame teadma ainult kahte asja. Peame teadma, et see on andmebaas, seega, mida ma r\u00e4\u00e4gin, on kohaldatav praktiliselt igale andmebaasile. Ja et andmebaasihalduss\u00fcsteem ClickHouse skaleerub v\u00e4ga h\u00e4sti, pakkudes praktiliselt lineaarset skaleeritavust. Seet\u00f5ttu on klastriseisund ClickHouse jaoks loomulik. Ja me tahame arutada, kuidas ClickHouse'i klastrit Kuberneteses hallata.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5eb1ff5026c492117bf2467b10de7053.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Miks on see seal vajalik? Miks ei saa me seda iseseisvalt j\u00e4tkata? Ja vastused on osaliselt tehnilised ja osaliselt organisatsioonilised. <\/p>\n<p><\/p>\n<ul>\n<li>Praktikas puutume \u00fcha enam kokku olukordadega, kus suurtes ettev\u00f5tetes on peaaegu k\u00f5ik komponendid juba Kuberneteses. Andmebaasid j\u00e4\u00e4vad v\u00e4ljapoole. <\/li>\n<li>Ja \u00fcha rohkem k\u00fcsitakse: \"Kas on v\u00f5imalik see sisse viia?\" Seet\u00f5ttu p\u00fc\u00fcdlevad suured ettev\u00f5tted maksimaalse haldamise \u00fchtsuse poole, et kiiresti hallata oma andmesalvestusi. <\/li>\n<li>See aitab eriti, kui on vajalik maksimaalne kordamine uues kohas, s.t. maksimaalne \u00fclekantavus.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/99312e74bd7ed4031128c7ec872f6a68.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui lihtne v\u00f5i keeruline see on? Loomulikult saab seda teha k\u00e4sitsi. Kuid see ei ole nii lihtne, kuna meil on keerukus Kubernetesega haldamises, millele lisandub ClickHouse'i spetsiifika. Nii tekib kogum. <\/p>\n<p><\/p>\n<p>Ja k\u00f5ik koos annab piisavalt suure tehnoloogiate kogumi, mille haldamine muutub \u00fcsna keeruliseks, kuna Kubernetes toob igap\u00e4evaseid probleem k\u00fcsimusi k\u00e4itamiseks ning ClickHouse t\u00f5statab igap\u00e4evase t\u00f6\u00f6ga seotud probleeme. Eriti kui meil on mitu ClickHouse'i, ja me peame pidevalt nendega midagi tegema. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/ca10b805b2744d1a5283f96b0ac1cc11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>ClickHouse'il on d\u00fcnaamilise konfiguratsiooniga piisavalt palju k\u00fcsimusi, mis tekitavad pidevat koormust DevOpsile:<\/p>\n<p><\/p>\n<ul>\n<li>Kui soovime ClickHouse'is midagi muuta, n\u00e4iteks lisada koopiat v\u00f5i shard'i, peame tegelema konfiguratsiooni haldamisega. <\/li>\n<li>Siis tuleks andmemudel vahetada, sest ClickHouse'il on spetsiifiline sharding'i viis. Seal tuleb andmemudelit paigutada ja konfiguratsioone seadistada. <\/li>\n<li>On vajalik seadistada j\u00e4lgimine. <\/li>\n<li>Logide kogumine uute shardide ja uute replikate jaoks. <\/li>\n<li>On muretes taastumise p\u00e4rast.<\/li>\n<li>Ja taask\u00e4ivitamise. <\/li>\n<\/ul>\n<p><\/p>\n<p>Need on rutiinsed t\u00f6\u00f6d, mida oleks v\u00e4ga soovitav lihtsustada.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2461e861ca1d2f2344ead9decf85a97e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kubernetes aitab t\u00f5husalt korraldada, kuid p\u00f5hitehniliste asjade puhul. <\/p>\n<p><\/p>\n<p>Kubernetes lihtsustab ja automatiseerib selliseid asju nagu:<\/p>\n<p><\/p>\n<ul>\n<li>Taastumine.<\/li>\n<li>Taask\u00e4ivitamine. <\/li>\n<li>S\u00fcsteemi salvestuse haldamine.<\/li>\n<\/ul>\n<p><\/p>\n<p>See on hea, see on \u00f5ige suund, kuid tal ei ole t\u00e4ielikku arusaama, kuidas andmebaasi klastrit hallata. <\/p>\n<p><\/p>\n<p>Soovime rohkem, tahame, et kogu andmebaas t\u00f6\u00f6taks Kuberneteses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6564e9f29d5d518925c8593bca978345.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Soovime saada midagi nagu suur maagiline punane nupp, millele vajutada ja mille abil luuakse ja hallatakse klastrit kogu elu ts\u00fckli jooksul, lahendades igap\u00e4evaseid \u00fclesandeid. ClickHouse klaster Kuberneteses.<\/p>\n<p><\/p>\n<p>Ja me p\u00fc\u00fcdsime luua lahenduse, mis aitaks t\u00f6\u00f6d lihtsustada. See on ClickHouse-operator Kuberneteses ettev\u00f5ttelt Altinity.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ff80c6fc59069ec900d545096ad978d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Operator on programm, mille p\u00f5hi\u00fclesanne on hallata teisi programme, st see on haldur. <\/p>\n<p><\/p>\n<p>Ja see sisaldab k\u00e4itumismalle. Seda v\u00f5ib nimetada kodeeritud teadmusteks teema valdkonnas. <\/p>\n<p><\/p>\n<p>Ja selle peamine eesm\u00e4rk on lihtsustada DevOpsi elu ning v\u00e4hendada mikromanageerimist, et ta (DevOps) m\u00f5tleks k\u00f5rgema taseme m\u00f5isted, st et ta (DevOps) ei tegeleks mikromanageerimisega ega seadistaks k\u00f5iki detaile k\u00e4sitsi. <\/p>\n<p><\/p>\n<p>Ja just operator on robotassistend, kes tegeleb mikrotegevustega ja aitab DevOps'i.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0824a1fa710e8c4f45406aa7f596b977.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Miks on vajalik operator? Ta n\u00e4itab end eriti h\u00e4sti kahe k\u00fcsimuse puhul:<\/p>\n<p><\/p>\n<ul>\n<li>Kui ClickHouse'i spetsialistil pole piisavalt kogemusi, kuid ClickHouse'i kasutamine on siiski vajalik, lihtsustab operator haldamist ja v\u00f5imaldab hallata ClickHouse'i klastrit piisavalt keerulise konfiguratsiooniga, samas p\u00f5hjalikesse detailidesse mitte s\u00fcvenedes. Lihtsalt antakse talle k\u00f5rgetasemelised \u00fclesanded ja see t\u00f6\u00f6tab. <\/li>\n<li>Ja teine \u00fclesanne, kus ta k\u00f5ige paremini esitleb, on see, kui on vaja automatiseerida suurt hulka t\u00fc\u00fcpilisi \u00fclesandeid. Eemaldab mikroulesanded s\u00fcsteemiadminnide k\u00e4est. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f1cb11156d57f560d0b6c82700ac6ff8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on k\u00f5ige vajalikum kas neile, kes just alustavad oma teed, v\u00f5i neile, kellel on palju automatiseerimisega tegeleda. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/128e7d9ff1ce0c535f98be66aedb1060.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis on siis l\u00e4henemise erinevus, mis p\u00f5hineb operaatoritel, teiste s\u00fcsteemide 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\u00e4iteks Helmi vahel?<\/p>\n<p><\/p>\n<p>Peamine fundamentaalne erinevus on see, et Helm on paketihaldus, samas kui operaator l\u00e4heb kaugemale. See h\u00f5lmab kogu eluts\u00fckli. See ei ole ainult paigaldamine, need on igap\u00e4evased \u00fclesanded, mis sisaldavad skaleerimist, shardeerimist, st k\u00f5ike, mida tuleb eluts\u00fckli jooksul teha (kui vajalik, siis ka eemaldamine) \u2013 k\u00f5ik selle lahendab operaator. Ta p\u00fc\u00fcdleb automatiseerimiseks ja kogu tarkvara eluts\u00fckli teenindamiseks. See on tema fundamentaalne erinevus teiste esitatud lahenduste seas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e26b57c8caf8437f683d7afbfa127ebd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See oli sissejuhatav osa, liikuge edasi. <\/p>\n<p><\/p>\n<p>Kuidas me oma operaatorit ehitame? P\u00fc\u00fcame l\u00e4heneda k\u00fcsimusele, et hallata ClickHouse'i klastrit kui \u00fcht ressurssi. <\/p>\n<p><\/p>\n<p>Siin on meie pildi vasakus osas sisenemisandmed. See on YAML klastrite spetsifikatsioon, mis klassikaliselt edastatakse l\u00e4bi kubectl Kubernetesesse. Seal operaator haarab selle, teeb oma maagia. Ja v\u00e4ljundina saame sellise skeemi. See on ClickHouse'i rakendamine Kuberneteses.<\/p>\n<p><\/p>\n<p>Ja edaspidi vaatame aeglaselt, kuidas operaator t\u00e4pselt t\u00f6\u00f6tab, milliseid t\u00fc\u00fcpilisi \u00fclesandeid saab lahendada. Vaatame ainult t\u00fc\u00fcpilisi \u00fclesandeid, sest meil on piiratud aeg. Ja r\u00e4\u00e4gitakse mitte k\u00f5igest, mida operaator v\u00f5ib lahendada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/b40401931b58988058419d4495dbb1bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00e4hme praktikast l\u00e4htudes. Meie projekt on t\u00e4ielikult avatud l\u00e4htekoodiga, seega saab vaadata GitHub'is, kuidas see t\u00f6\u00f6tab. Ja arominekuga on soovitatav alustada Quick Start Guide'iga.<\/p>\n<p><\/p>\n<p>Kui soovite p\u00f5hjalikult s\u00fcveneda, siis p\u00fc\u00fcame hoida dokumentatsiooni enam-v\u00e4hem korralikus seisundis. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9414d7c3aa94b6ad999e150f0ac25a97.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alustame praktilise \u00fclesandega. Esimene asi, millega me k\u00f5ik alustada tahame, on k\u00e4ivitada esimene n\u00e4ide kuidagi. Kuidas k\u00e4ivitada ClickHouse'i operaatorit, isegi teadmata, kuidas see t\u00f6\u00f6tab? Kirjutame manifesti, kuna kogu suhtlus k8s-iga toimub manifestide kaudu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/3e97cd235827460693ed95fb3598d31d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin on selline keeruline manifest. Punasega v\u00e4lja toodud on see, millele tuleb t\u00e4helepanu p\u00f6\u00f6rata. Palume operaatoril luua klastrit nimega demo.<\/p>\n<p><\/p>\n<p>Praegu on need p\u00f5hin\u00e4ited. Storage'i pole veel kirjeldatud, kuid me tuleme storage'i juurde hiljem tagasi. Praegu vaatame klastrite arengut d\u00fcnaamikas.<\/p>\n<p><\/p>\n<p>Oleme selle manifesti loonud. Anname selle meie operaatorile. Tema t\u00f6\u00f6tas, tegi oma maagia.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/502e64fbe6ed7d04b2aecb7d51abc7f9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadake konsooli. Kolm komponenti \u00e4ratavad huvi \u2013 need on Pod, kaks teenust ja StatefulSet.<\/p>\n<p><\/p>\n<p>Operaator t\u00f6\u00f6tas ja me saame vaadata, mida ta t\u00e4pselt l\u00f5i. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/67faf120e21e5113680ccff9c71b00f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ta loob ligikaudu sellise skeemi. Meil on StatefulSet, Pod, ConfigMap iga koopiana, ConfigMap kogu klastrile. Teenused peab olema sissep\u00e4\u00e4su punktid klastrisse. <\/p>\n<p><\/p>\n<p>Teenused \u2013 see on keskne Load Balancer Service ja v\u00f5ib olla ka iga koopia jaoks, iga shardi jaoks. <\/p>\n<p><\/p>\n<p>Siin on meie p\u00f5hikluster, mis v\u00e4lja n\u00e4eb umbes selliselt. See koosneb \u00fchest ainsast s\u00f5lmest. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f235ada45ee58b517c0e041f795ae122.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Liigume edasi, keerame asja keerulisemaks. Klastrit tuleb shardida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/992836a00434c64fb4616c1c4cc4df97.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Meie \u00fclesanded kasvavad, algab d\u00fcnaamika. Tahame lisada shardi. J\u00e4lgime arengut. Muudame oma spetsifikatsiooni. N\u00e4itame, et soovime kahte shardi. <\/p>\n<p><\/p>\n<p>See on sama fail, mis areneb d\u00fcnaamiliselt koos s\u00fcsteemi kasvuga. Storage'i pole, storage'i k\u00e4sitletakse hiljem, see on eraldi teema.<\/p>\n<p><\/p>\n<p>Anname YAML operaatorile ja vaatame, mis saadakse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8ddb5845cae160098470208f51b5da7c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Operaator m\u00f5tles ja l\u00f5i j\u00e4rgmised \u00fcksused. Meil on juba kaks Pod'i, kolm teenust ja \u00e4kitselt 2 StatefulSet'i. Miks 2 StatefulSet'i?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/26eb734ff1a195de2ceaab842b472ee4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Skeem n\u00e4gi v\u00e4lja n\u00f5nda \u2013 see on meie algne seis, kui meil oli \u00fcks pod.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/657838b0d378121fdd66ad3ff8168600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd n\u00e4eb see v\u00e4lja n\u00f5nda. Seni on k\u00f5ik lihtne, see on dubleeritud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f039a7046f1c56fbdad6b5a26a519b10.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja miks StatefulSet'ide arv kasvas kahele? Siin tuleb k\u00f5rvale t\u00f5mmata ja arutada, kuidas Kuberneteses toimub Pod'ide haldamine.<\/p>\n<p><\/p>\n<p>On selline objekt nagu StatefulSet, mis v\u00f5imaldab luua Pod'ide komplekti mallist. Siin on v\u00f5tmetegur Template. Ja \u00fches StatefulSet'is saab palju Pod'e k\u00e4ivitada \u00fchtede mallide alusel. Ja v\u00f5tmefraas siin on \u201e\u00fchtede mallide alusel palju Pod'e\u201c.<\/p>\n<p><\/p>\n<p>Ja oli suur kiusatus teha kogu klaster, pakkides k\u00f5ik \u00fchte StatefulSet'i. See t\u00f6\u00f6tab, selles pole mingeid probleeme. Kuid on \u00fcks n\u00fcanss. Kui soovime luua heterogeense klastri, st mitmest ClickHouse'i versioonist, siis siin tekivad meil k\u00fcsimused. Jah, StatefulSet v\u00f5ib teha rolling update'i, jah, seal saab uut versiooni rakendada, selgitades, et korraga ei tohiks proovida rohkem kui niiv\u00f5rd palju noode.<\/p>\n<p><\/p>\n<p>Aga kui extrapoleerida \u00fclesanne ja \u00f6elda, et soovime luua t\u00e4ielikult 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\u00e4iteks, tahame teha m\u00f5ned replikad eraldi ketastele, aeglastele, \u00fcldiselt, soovime t\u00e4ielikult \u00fcles ehitada heterogeense klastri. Ja kuna StatefulSet teeb \u00fchest \u0161abloonist standardiseeritud lahenduse, siis pole seda v\u00f5imalik teha. <\/p>\n<p><\/p>\n<p>P\u00e4rast m\u00f5ningast kaalumist otsustasime, et teeme nii. Iga replik on oma StatefulSet'is. Sellel lahendusel on m\u00f5ned puudused, kuid praktikas kapseldab see k\u00f5ik t\u00e4ielikult operaator. Ja see toob kaasa palju eeliseid. Saame ehitada t\u00e4ielikult sellise klastri, nagu soovime, n\u00e4iteks t\u00e4iesti heterogeense. Seega, klastris, kus meil on kaks shardi \u00fche replikaga, on meil 2 StatefulSet'i ja 2 Pod'i just sellep\u00e4rast, et oleme valinud sellise l\u00e4henemise eespool nimetatud p\u00f5hjustel, et luua heterogeenne klaster. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b7ae92a545f9bb6cc5f0136df87207f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Naaseme praktiliste \u00fclesannete juurde. Meie klastris tuleb seadistada kasutajad, st tuleb teha mingit konfiguratsiooni ClickHouse'is Kuberneteses. Operaator pakub selleks k\u00f5ik v\u00f5imalused. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6a65aa78293c0b40230cf24efc58e55a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Saame otse YAML-s kirjutada, mida soovime. K\u00f5ik konfiguratsiooni valikud kaardistuvad otse sellest YAML-ist ClickHouse'i seadistustesse, mis siis jagatakse \u00fcle kogu klastris.<\/p>\n<p><\/p>\n<p>Saame ka niimoodi kirjutada. See on lihtsalt n\u00e4ide. Parool v\u00f5ib olla kr\u00fcpteeritud. Toetatakse t\u00e4ielikult k\u00f5iki ClickHouse'i konfiguratsiooni valikuid. Siin on ainult n\u00e4idis. <\/p>\n<p><\/p>\n<p>Klastri konfiguratsioon levib nagu ConfigMap. Praktikas ei toimu ConfigMap'i uuendamine hetkega, seega kui klaster on suur, siis konfiguratsiooni surumise protsess v\u00f5tab aega. Kuid see on k\u00f5ik v\u00e4ga mugav kasutuses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2e42d19d7a558e3b8d4bbb51fe5bd08b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaatame \u00fclesande keerukust. Klaster areneb. Soovime andmeid replitseerida. Ehk meil on juba kaks shardi, kummalgi \u00fcks koopia, kasutajad on seadistatud. Kasvame ja soovime replitseerimisega tegeleda.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4c97e5e6ca9cb66d3a94fb8cfe610186.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mida vajame replitseerimiseks? <\/p>\n<p><\/p>\n<p>Meile on vajalik ZooKeeper. ClickHouse'is on replitseerimine \u00fcles ehitatud ZooKeeperi kasutamisele. ZooKeeper on vajalik, et erinevad ClickHouse'i koopiad j\u00f5uaksid kokkuleppele, millised andmeplokid on millises ClickHouse'is. <\/p>\n<p><\/p>\n<p>Iga ZooKeeper sobib kasutamiseks. Kui ettev\u00f5ttel on v\u00e4line ZooKeeper, siis v\u00f5ib seda kasutada. Kui ei, siis saab meie repostiitorist paigaldada. On olemas installer, mis teeb selle protsessi lihtsamaks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6cc40951a19b982abf578836edf569d3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja kogu s\u00fcsteemi koost\u00f6\u00f6 skeem n\u00e4eb v\u00e4lja selline. Meil on Kubernetes platvormina. Sellel t\u00f6\u00f6tab ClickHouse'i operaator. ZooKeeper on siin kujutatud. Operaator suhtleb nii ClickHouse'i kui ka ZooKeeperiga. Ehk toimub koost\u00f6\u00f6. <\/p>\n<p><\/p>\n<p>Ja see on vajalik, et ClickHouse suudaks edukalt andmeid k8s'is replitseerida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4fc37aee850acd20517fa3d7562f0165.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaatame n\u00fc\u00fcd \u00fclesannet ise, kuidas n\u00e4eb v\u00e4lja replitseerimise mansiif.<\/p>\n<p><\/p>\n<p>Lisame meie mansiifile kaks sektsiooni. Esimene \u2013 kust v\u00f5tta ZooKeeper, mis v\u00f5ib olla kas Kubernetes'es sees v\u00f5i v\u00e4line. See on lihtsalt kirjeldus. Ja tellime koopiad. Ehk soovime kahte koopiat. L\u00f5puks peaks meil olema 4 pod'i. Storage'i me m\u00e4letame, see tuleb veidi hiljem. Storage \u2013 see on eraldi teema. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/afb8c974d0587a4ad87d6ba36bbe5e3b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See oli algne variant.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/909ffd258dbce718ddf529a1a753de6f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd n\u00e4eb see v\u00e4lja nii. Lisanduvad koopiad. 4. ei mahtunud, usume, et neid v\u00f5ib olla palju. Ja k\u00fclje peale lisandub ZooKeeper. Skeemid muutuvad keerukamaks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c33b37fc7fc72f51276e5e98b9ec2134.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja on aeg lisada j\u00e4rgmine \u00fclesanne. Lisame P\u00fcsiva S\u00e4ilitamise. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f28d14901a713eca413a52ec6ea21ac5.jpeg\" style=\"display:block;margin: 0 auto;\" \/>P\u00fcsiva S\u00e4ilitamise korral on meil erinevad teostusvariandid.<\/p>\n<p><\/p>\n<p>Kui kasutame pilveteenuse pakkujat, n\u00e4iteks Amazoni v\u00f5i Google'i, siis on suur kiusatus kasutada pilvep\u00f5hist salvestust. See on v\u00e4ga mugav ja hea. <\/p>\n<p><\/p>\n<p>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. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/483ee5c08b62e987620bf54fd32a44b4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaatame, millised on pilvesalvestuse suhtes meie variandid.<\/p>\n<p><\/p>\n<p>On eelised. Selle konfigureerimine on v\u00e4ga lihtne. Me lihtsalt tellime pilveteenuse pakkujalt, et palun anna meile sellise mahutavusega ja sellise klassiga salvestus. Klassid on pakkujate poolt iseseisvalt m\u00e4\u00e4ratletud. <\/p>\n<p><\/p>\n<p>Ja on puudus. M\u00f5ne jaoks ei ole see kriitiline puudus. Loomulikult v\u00f5ivad esineda m\u00f5ned tootlikkuse probleemid. See t\u00f6\u00f6tab v\u00e4ga mugavalt, on usaldusv\u00e4\u00e4rne, kuid seal on m\u00f5ned potentsiaalsed tootlikkuse langused.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8e82430b64477f91640078ff4eacb47e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuna ClickHouse keskendub just tootlikkusele, v\u00f5ib isegi \u00f6elda, et pigistab v\u00e4lja k\u00f5ik, mis v\u00f5imalik, p\u00fc\u00fcavad v\u00e4ga paljud kliendid saavutada maksimaalset tootlikkust.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8638fe37b848a98ce8326218d368baa3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Maksimaalse saavutamiseks vajame kohalikke andmesalvestusi.<\/p>\n<p><\/p>\n<p>Kubernetes pakub kolme abstraktsiooni kohaliku andmesalvestuse kasutamiseks Kuberneteses. Need on: <\/p>\n<p><\/p>\n<ul>\n<li>EmptyDir<\/li>\n<li>HostPath.<\/li>\n<li>Local<\/li>\n<\/ul>\n<p><\/p>\n<p>Vaatame, kuidas nad erinevad ja kuidas nad sarnanevad. <\/p>\n<p><\/p>\n<p>Esiteks, k\u00f5igis kolmes l\u00e4henemisviisis on andmesalvestus \u2013 need on kohalikud kettad, mis asuvad samal f\u00fc\u00fcsilisel k8s s\u00f5lmel. Kuid neil on m\u00f5ned erinevused.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/79afb620a0c9a1552b47240b405fedc9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alustame k\u00f5ige lihtsamast, st emptyDir. Mis see praktikas on? Palume oma spetsifikatsioonis konteineris\u00fcsteemil (enamasti on see Docker) anda meile juurdep\u00e4\u00e4s kausta kohaliku ketta juurde.<\/p>\n<p><\/p>\n<p>Praktikas loob Docker kuskil seal enda teedel ajutise kausta, nimetab selle pikka h\u00e4\u00e4ldamatut numbrit kasutades. Ja pakub sellele juurdep\u00e4\u00e4su liidest. <\/p>\n<p><\/p>\n<p>Kuidas see tootlikkuse osas t\u00f6\u00f6tab? See t\u00f6\u00f6tab kohaliku ketta kiirusel, st see on t\u00e4ielik juurdep\u00e4\u00e4s oma kettale. <\/p>\n<p><\/p>\n<p>Kuid sellel on oma puudus. P\u00fcsivus on selles osas piisavalt kaheldav. Esimese liikumise korral koos konteineritega kaob p\u00fcsivus. Kui Kubernetes otsustab mingil p\u00f5hjusel selle Pod'i teisele kettale viia, kaovad andmed. <\/p>\n<p><\/p>\n<p>See l\u00e4henemine sobib h\u00e4sti katsetamiseks, sest kiirus on juba normaalne, kuid millegi t\u00f5sise jaoks ei sobi see variant. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0b60f80fc9ea0e2c1820021bcd9e1382.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seega on olemas teine l\u00e4henemine. See on hostPath. Kui vaadata eelmist slaidi ja seda, siis v\u00f5ib n\u00e4ha vaid \u00fchte erinevust. Meie kaust on v\u00e4lja viidud Dockerist otse Kubernetesesse. Siin on natuke lihtsam. Me kirjutame otse kohaliku failis\u00fcsteemi teed, kuhu tahame oma andmed salvestada. <\/p>\n<p><\/p>\n<p>Selle meetodi eelised on olemas. See on juba t\u00f5eline p\u00fcsivus, ja veel klassikaline. Andmed salvestatakse kettale mingisse aadressi. <\/p>\n<p><\/p>\n<p>Samuti on ka puudusi. See on haldamise keerukus. Meie Kubernetes v\u00f5ib soovida Pod'i liigutada teisele f\u00fc\u00fcsilisele nodile. Siin tuleb m\u00e4ngu DevOps. Tema peab \u00f5igesti selgitama kogu s\u00fcsteemile, et neid pod'e v\u00f5ib liigutada ainult sellistele nodidele, kus sul on nende teede kaudu midagi monteeritud, ja mitte rohkem kui \u00fchte nodi korraga. See on \u00fcsna keeruline. <\/p>\n<p><\/p>\n<p>Spetsiaalselt nende eesm\u00e4rkide jaoks oleme meie operaatoris loonud malle, et kogu see keerukus \u00e4ra peita. Ja v\u00f5iks lihtsalt r\u00e4\u00e4kida: \u201eMa tahan, et mul oleks iga f\u00fc\u00fcsilise nodi kohta \u00fcks ClickHouse'i instants ja sellisel teel\u201c. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f64c19bccc8b187d6af112eda896b25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aga see vajadus ei ole vajalik ainult meile, seega mehed Kubernetesest m\u00f5istavad ka, et inimestele meeldib saada juurdep\u00e4\u00e4s f\u00fc\u00fcsilistele ketastele, seega nad pakuvad kolmandat taset.<\/p>\n<p><\/p>\n<p>See on nimega local. Erinevus eelmisest slaidist on praktiliselt olematu. Ainult varem tuli k\u00e4sitsi l\u00e4bi viia, et meil ei tohi neid pod'e nodilt nodile liigutada, sest nad peavad olema seotud selle teega kohaliku f\u00fc\u00fcsilise ketta juurde, ja n\u00fc\u00fcd on k\u00f5ik need teadmised kapseldatud ise Kubernetesesse. Ja seadistamine on oluliselt lihtsam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/140c43be34dd7015c0bf4cfd0a0bb384.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Naaseme oma praktilise \u00fclesande juurde. Naaseme YAML malli juurde. Siin on meil t\u00f5eline salvestus. Oleme tagasi selle juurde. Me m\u00e4\u00e4ratleme klassikalise VolumeClaim malli nagu k8s. Ja kirjeldame, millist salvestust me tahame.<\/p>\n<p><\/p>\n<p>P\u00e4rast seda k\u00fcsib k8s salvestust. K\u00fcllaldab meile selle StatefulSet'is. Ja l\u00f5puks on see ClickHouse'i k\u00e4sutuses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/960e666486ed09cebd83235d43f83970.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Meil oli selline skeem. Meie Persistent Storage oli punane, mis nagu vihjas, et seda oleks m\u00f5istlik teha. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a989df489e3a9fef6a4fbf7b93c489a6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja see muutub roheliseks. N\u00fc\u00fcd on ClickHouse'i k8s klastrite skeem t\u00e4ielikult valmis. Meil on shard'id, replikad, ZooKeeper, on olemas t\u00f5eline Persistent, mis on ellu viidud sel v\u00f5i teisel viisil. Skeem on juba t\u00e4ielikult funktsionaalne. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c409ee5da6309a67904394d968ed4906.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me j\u00e4tkame edasiviimist. Meie klaster areneb. Ja Aleksei pingutab, ning v\u00e4ljastab uue ClickHouse'i versiooni.<\/p>\n<p><\/p>\n<p>Tekib praktiline \u00fclesanne - testida uut ClickHouse'i versiooni meie klastris. Ja loomulikult ei taha me seda kogu aeg kasutada, tahaks kuskil kauges nurgas \u00fchte replikat panna uue versiooni, ja v\u00f5ib-olla mitte \u00fchte, vaid kohe kaks, sest neid v\u00e4ljastatakse sageli. <\/p>\n<p><\/p>\n<p>Mida me saame selle kohta \u00f6elda?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48ed52d393d977d0cfaa9320bd02ed1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin on meil just selline v\u00f5imalus. Need on pod'i mallid. Saame neid kirjeldada, meie operaator v\u00f5imaldab t\u00e4ielikult ehitada heterogeenset klastrit. St. saame konfigureerida alates k\u00f5igist replikatest kuni iga isikliku replikani, m\u00e4\u00e4rates, millist versiooni soovime ClickHouse'ist, millist versiooni soovime salvestusruumist. Saame t\u00e4ielikult konfigureerida klastrit vastavalt meie vajadustele. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4949ecd8119cb4ec0f4bad9bf27fa74e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Natuke s\u00fcveneme n\u00fc\u00fcd sisemusse. Varem r\u00e4\u00e4kisime, kuidas ClickHouse operaator t\u00f6\u00f6tab ClickHouse'i spetsiifikaga seonduvalt.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd tahaksin \u00f6elda paar s\u00f5na selle kohta, kuidas t\u00f6\u00f6tab igasugune operaator ja kuidas see suhtleb K8s-iga.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ca9c2a23c54b2a81ac0a8bba88d5e65.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alustame K8siga suhtlemise uurimist. Mis juhtub, kui me saame kubectl apply? Meie objektid ilmuvad API kaudu etcd-sse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b9eaedeb0f34d10398ba0187f09fef9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4iteks Kubernetes'i p\u00f5hiobjektid: pod, StatefulSet, teenus ja nii edasi. <\/p>\n<p><\/p>\n<p>Sel ajal ei toimu veel f\u00fc\u00fcsiliselt midagi. Need objektid tuleb klastris materialiseerida. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/3c49dc1b0067347d5fc415ef9b87642d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Selleks tuleb kontrollija. Kontrollija on spetsiaalne K8s komponent, mis oskab neid kirjeldusi materialiseerida. Ta teab, kuidas ja mida f\u00fc\u00fcsiliselt teha. Ta teab, kuidas konteinerid k\u00e4ivitada, mida seadistada serveri t\u00f6\u00f6lepanemiseks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/d951eb0f7bacf519566b0ef6cf9bc100.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja ta materialiseerib meie objektid K8s-i.<\/p>\n<p><\/p>\n<p>Aga me tahame hallata mitte ainult pod'e ja StatefulSet'e, vaid tahame luua ClickHouseInstallation'i, st. ClickHouse t\u00fc\u00fcpi objekti, et saaksime sellega kui tervikuga opereerida. Praegu sellist v\u00f5imalust ei ole. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1594921ac5dd9384ce81ceae92f5cda9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aga K8s-il on j\u00e4rgmine tore asi. Tahame, et meil oleks kuskil selline keeruline struktuur, mis koosneks pod'dest ja StatefulSet'ist meie klastris. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/04f86706f506fa91e365d45537dd9def.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja mida selleks teha? Esiteks, tuleb m\u00e4ngu Custom Resource Definition. Mis see on? See on K8si kirjeldus, et sul on veel \u00fcks andmet\u00fc\u00fcp, et me tahame lisada pod'ile ja StatefulSet'ile kohandatud ressursi, mis oleks keeruline seestpoolt. See on andmestruktuuri kirjeldus. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f02ae12ef3ab5db974234b14e38792ac.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seda saadame samuti kubectl apply kaudu. Kubernetes on selle r\u00f5\u00f5muga vastu v\u00f5tnud. <\/p>\n<p><\/p>\n<p>Ja n\u00fc\u00fcd on meie hoidlas, objektil etcd-s, v\u00f5imalus salvestada kohandatud ressurss nimega ClickHouseInstallation.<\/p>\n<p><\/p>\n<p>Aga praegu ei juhtu midagi. See t\u00e4hendab, et kui me n\u00fc\u00fcd loome YAML-faili, mis kirjeldab shard'e, replikaid ja \u00fctleme \u00abkubectl apply\u00bb, siis Kubernetes aktsepteerib seda, salvestab etcd-sse ja \u00fctleb: \u00abSuurep\u00e4rane, aga ma ei tea, mida sellega teha. Kuidas hooldada ClickHouseInstallation, ei tea ma\u00bb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7c2f9f3f81b83c987a3bd72a881d0d91.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seega, meil on vaja kedagi, kes aitaks Kubernetesel hooldada uut andmeformaati. Vasakul on meil Kubernetes'i baasjuht, mis t\u00f6\u00f6tab standardsete andmeformaatide kallal. Ja paremal peab olema kohandatud juht, mis oskab t\u00f6\u00f6tada kohandatud andmeformaatide kallal. <\/p>\n<p><\/p>\n<p>Ja seda nimetatakse operaatoriks. Ma t\u00f5in ta siia teadlikult v\u00e4lja Kubernetes'e kontekstist, sest ta v\u00f5ib t\u00f6\u00f6tada ka v\u00e4ljaspool K8s. Enamasti t\u00f6\u00f6tavad k\u00f5ik operaatorid siiski Kubernetes'es, kuid ei ole midagi, mis takistaks tal t\u00f6\u00f6tamast ka v\u00e4ljas, seet\u00f5ttu on ta siin spetsiaalselt esitatud v\u00e4ljaspool. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7aa3a1b67d0def5ba752dff56baeebbf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kohandatud juht, see on operaator, suhtleb Kubernetes'ega l\u00e4bi 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. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a5f773ddc3663f24d5379955da9c3037.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas operaator t\u00f6\u00f6tab? Vaatame paremat k\u00fclge, et teada saada, kuidas ta seda teeb. Uurime, kuidas operaator k\u00f5ik selle materiaalselt ellu viib ja kuidas toimub edasine suhtlemine K8s-iga.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/08a8d8dbcb35117a0eb3320589c6ff8d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Operaator on programm. See on s\u00fcndmustele orienteeritud. Operaator registreerib end Kubernetes API-s s\u00fcndmustele. Kubernetes API-s on sisenemispunkte, kus saab registreeruda s\u00fcndmustele. Ja kui K8s-is midagi muutub, siis saadab Kubernetes s\u00fcndmusi k\u00f5igile soovijatele, st kes on sellele API punktile registreeritud, need saavad teateid.<\/p>\n<p><\/p>\n<p>Operaator registreerib end s\u00fcndmustele ja peab tegema mingi reaktsiooni. Tema \u00fclesanne on reageerida tekkivatele s\u00fcndmustele. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f0664a4151e6e7f6f8575a3e54372e9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S\u00fcndmused genereeritakse teatud uuenduste kaudu. Meie YAML-fail, mis kirjeldab ClickHouseInstallation'i, j\u00f5uab kubectl apply kaudu etcd-sse. Seal tekib s\u00fcndmus, mille tulemusena see s\u00fcndmus j\u00f5uab ClickHouse-operaatorisse. Operaator saab selle kirjelduse. Ja ta peab midagi tegema. Kui ClickHouseInstallation objekti kohta on tulnud uuendus, siis tuleb uuendada klastrit. Ja operaatori \u00fclesanne on uuendada klastri. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0952bdd391a72aa15bf66af4ce69f4af.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mida ta teeb? Esiteks tuleb koostada tegevusplaan, mida me selle uuendusega teeme. Uuendused v\u00f5ivad olla v\u00e4ga v\u00e4ikesed, st v\u00e4ikestes YAML-esitustes, kuid need v\u00f5ivad tuua kaasa v\u00e4ga suuri muudatusi klastris. Seet\u00f5ttu koostab operaator plaani ja seej\u00e4rel j\u00e4rgib seda.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/79caaa43b6fd9f3e2eb1afe44ecb2df9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ta hakkab selle plaani kohaselt ehitama struktuuri sisse, et materialiseerida pod'id, teenuseid, st teha seda, mis on tema p\u00f5hieesm\u00e4rk. See on nagu ClickHouse'i klastrite ehitamine Kuberneteses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e91576a26d6b758a68ae0b35cbe01897.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd puudutame huvitavat teemat. See on vastutuse jagamine Kubernetes'i ja operaatori vahel, st mida teeb Kubernetes, mida teeb operaator ja kuidas nad omavahel suhtlevad. <\/p>\n<p><\/p>\n<p>Kubernetes vastutab s\u00fcsteemsete asjade eest, st aluste objektide p\u00f5hikomplekti eest, mida saab t\u00f5lgendada kui s\u00fcsteemi ulatust. Kubernetes teab, kuidas k\u00e4ivitada pod'e, kuidas konteinerit taastada, kuidas mountida mahtu, kuidas t\u00f6\u00f6tada ConfigMap'i'ga, st k\u00f5ike, mida saab nimetada s\u00fcsteemiks. <\/p>\n<p><\/p>\n<p>Operaatorid t\u00f6\u00f6tavad spetsiifilistes valdkondades. Iga operaator on loodud oma spetsialiseeritud valdkonna jaoks. Meie oleme loonud ClickHouse'i jaoks.<\/p>\n<p><\/p>\n<p>Ja operaator suhtleb konkreetselt selliste valdkonna termineid kasutades, nagu repliigi lisamine, skeemi loomine, j\u00e4lgimise seadistamine. Nii toimub selle vastutuse jagamine.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9dc07d9c29d5dfd538343aadb751e4c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadakem praktilist n\u00e4idet, kuidas see vastutuse jagamine toimub, kui me teeme tegevuse repliigi lisamiseks. <\/p>\n<p><\/p>\n<p>Operaatorile tuleb \u00fclesanne \u2013 lisada replik. Mida operaator teeb? Operaator arvutab, et on vaja luua uus StatefulSet, milles tuleb kirjeldada sellised mallid, mahtude n\u00f5uded. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7a31f2f76a3bdda87e4bccf0e04fe4a8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ta on k\u00f5ik selle ette valmistanud ja edastab edasi K8s'ile. Ta \u00fctleb, et tal on vaja ConfigMap'i, StatefulSet'i, mahtu. Kubernetes t\u00f6\u00f6tab v\u00e4lja. Ta materialiseerib p\u00f5hiejed, millega ta opereerib. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2be6892234cc12b056962265c13dba07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja siis astub taas m\u00e4ngu ClickHouse-operator. Tal on juba f\u00fc\u00fcsiline pod, mille peal saab juba midagi teha. Ja ClickHouse-operator t\u00f6\u00f6tab taas oma valdkonna terminoloogias. St, et ClickHouse'i puhul, et lisada replik klastrisse, tuleb k\u00f5igepealt seadistada andmeskeem, mis klastris on. Ja teiseks tuleb see replik lisada j\u00e4lgimise alla, et see oleks h\u00e4sti j\u00e4lgitav. Operaator seadistab selle. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/790616342b98b347fa67e0100754c8b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja alles sellest hakkab t\u00f6\u00f6le ClickHouse, st veel \u00fcks k\u00f5rgem tasandi entiteet. See on juba andmebaas. Tal on oma instance, konfigureeritud replikatsioon, mis on valmis klastrisse liituma.<\/p>\n<p><\/p>\n<p>Nii et replikatsiooni lisamise protsess ja vastutuse jagamine on piisavalt pikk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ec79cfa2b45fadbe25f4d9fe8d2ec5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e4tkame meie praktilisi \u00fclesandeid. Kui klaster on juba olemas, siis saab teostada konfiguratsiooni migreerimist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a52aee0d4350b8da00cdb4b525df80ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oleme teinud nii, et olemasolevasse xml-faili, mille ClickHouse m\u00f5istab, saab l\u00e4bip\u00e4\u00e4su luua.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/91abb1d3b0a14f2118361403a74e14c1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>ClickHouse'i saab t\u00e4psustada. Just zoned deployment \u2013 see on see, millest r\u00e4\u00e4kisin hostPath'i ja kohalikku salvestusse seletades. See on \u00f5ige viis zoned deployment'i teostamiseks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/fde502f30223e04a918f4fd598c3dd9f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e4rgmine praktiline \u00fclesanne on j\u00e4lgimine.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4e685fba7883075105c0164a778c51e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui meie klaster muutub, tuleb j\u00e4lgimist perioodiliselt seadistada. <\/p>\n<p><\/p>\n<p>Vaadakem skeemi. Oleme siin juba arutanud rohelisi nooli. N\u00fc\u00fcd vaatame punaseid nooli. See on see, kuidas tahame oma klastrit j\u00e4lgida. Kuidas m\u00f5\u00f5dud ClickHouse'i klastri kaudu saavad Prometheusesse, seej\u00e4rel Grafanasse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1210c1423f99d48a20e06e855bf48a72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis on j\u00e4lgimise keerukus? Miks see esitatakse kui mingisugune saavutus? Keerukus seisneb d\u00fcnaamikas. Kui meil on klaster, mis on staatiline, siis v\u00f5ib j\u00e4lgimise seadistada \u00fcks kord ja unustada selle.<\/p>\n<p><\/p>\n<p>Aga kui meil on palju klustreid v\u00f5i pidevalt midagi muutub, siis on protsess d\u00fcnaamiline. Ja pidev j\u00e4lgimise seadistamine on ressursi- ja aegan\u00f5udev, st isegi lihtsalt t\u00fc\u00fctav. See tuleb automatiseerida. Keerukus seisneb protsessi d\u00fcnaamikas. Ja operaator automatiseerib seda v\u00e4ga h\u00e4sti. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48a7264f1228671e0c483c8211a71eb3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas meie klaster arenes? Alguses oli see selline.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8a8c7b6cd5562deb315368e1e8e1c976.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siis oli see selline.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1a3e915fbadf3aa5f3b33d337f36e76e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00f5ppkokkuv\u00f5ttes sai see selliseks. <\/p>\n<p><\/p>\n<p>Ja j\u00e4lgimine toimub automaatselt operaatori kaudu. \u00dcks sisenemiskoht. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e079e65bf8deff43a81d8ffde938a709.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja me vaatame lihtsalt v\u00e4ljundis Grafana juhtpaneeli, kuidas meie klastris elu pulbitseb. <\/p>\n<p><\/p>\n<p>Muide, Grafana juhtpaneel jagatakse ka meie operaatoriga otse l\u00e4htekoodis. Seda saab \u00fchendada ja kasutada. See ekraanipilt anti mulle meie DevOps'ilt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ad1c2899dd845d0ba4185bdf758468c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuhu tahaksime edasi liikuda? See on:<\/p>\n<p><\/p>\n<ul>\n<li>Arendada automatiseeritud testimist. Peamine \u00fclesanne on automatiseeritud testimine uute versioonide jaoks. <\/li>\n<li>Soovime samuti automatiseerida integratsiooni ZooKeeperiga. Plaanis on integreeruda ZooKeeper-operatoriga. See t\u00e4hendab, et ZooKeeperi jaoks on kirjutatud operaator ja oleks m\u00f5istlik, et kaks operaatorit hakkavad integreeruma, et luua mugavamat lahendust. <\/li>\n<li>Soovime teha keerukamaid eluj\u00f5udluse kontrollimisi. <\/li>\n<li>Roheline on see, mida me l\u00e4heneme, Templatesi p\u00e4rimise \u2013 VALMIS, st j\u00e4rgmise operaatori versiooniga on meil juba \u0161ablonite p\u00e4rimine. See on v\u00f5imas t\u00f6\u00f6riist, mis v\u00f5imaldab luua keerulisi konfiguratsioone t\u00fckkidest. <\/li>\n<li>Ja me soovime keeruliste \u00fclesannete automatiseerimist. \u00dcks peamine sellest on Re-sharding. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f232c0aab389be5069e5c7886e265c01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teeme vahekokkuv\u00f5tte. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/62f7814994af0441ba5a82de4e9780d7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mida me saadame v\u00e4lja? Kas tasub sellega tegeleda v\u00f5i mitte? Kas on m\u00f5tet proovida andmebaasi tuua Kubernetesesse ja rakendada operaatorit \u00fcldiselt ning Alitnity-operatorit konkreetselt.<\/p>\n<p><\/p>\n<p>Saame v\u00e4lja j\u00e4rgmise:<\/p>\n<p><\/p>\n<ul>\n<li>Oluline lihtsustamine ja automatiseerimine konfigureerimisest, juurutamisest ning ka tugitegevusest. <\/li>\n<li>Vahetu sisseehitatud j\u00e4lgimine. <\/li>\n<li>Ja valmis kasutamiseks kodeeritud \u0161ablonid keeruliste olukordade jaoks. N\u00e4iteks ei pea enam k\u00e4sitsi tegema toimingut nagu replikatsiooni lisamine. Selle teeb operaator. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/aebccd7a2dc55f14645f79f89f7b7458.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On j\u00e4\u00e4nud vaid viimane k\u00fcsimus. Meil on juba andmebaas Kuberneteses, virtualiseerimine. Kuidas on sel lahendusel j\u00f5udlusega, eriti arvestades, et ClickHouse on j\u00f5udluse poolest optimeeritud?<\/p>\n<p><\/p>\n<p>Vastus \u2013 k\u00f5ik on korras! Ma ei hakka seda \u00fcksikasjalikult lahti kirjutama, see on eraldi ettekande teema. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/ffc230941f0ae24926186db4d8d68ade.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid on projekt nimega TSBS. Mis on selle peamine \u00fclesanne? See on andmebaaside j\u00f5udlustest. See on katse v\u00f5rrelda sooja sooja, pehmet pehme vastu. <\/p>\n<p><\/p>\n<p>Kuidas see t\u00f6\u00f6tab? Genereeritakse \u00fcks andmebaas. Siis seda andmestikku katsetatakse sama testikomplekti abil erinevates andmebaasides. Iga andmebaas lahendab \u00fche \u00fclesande selle oskuste kohaselt. Ja siis saab tulemusi v\u00f5rrelda. <\/p>\n<p><\/p>\n<p>See toetab juba palju andmebaase. Olen esile t\u00f5stnud kolm peamist. Need on:<\/p>\n<p><\/p>\n<ul>\n<li>TimescaleDB.<\/li>\n<li>InfluxDB.<\/li>\n<li>ClickHouse.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5b4733534a4e6e36fb7788127adc6e86.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Samuti on tehtud v\u00f5rdlus teise sarnase lahendusega. V\u00f5rdlus RedShiftiga. V\u00f5rdlus tehti Amazonis. ClickHouse \u00fcletab ka k\u00f5ik selles k\u00fcsimuses h\u00e4sti. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/44cc8dedc07a02fe1ed5aad3e17a579c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Milliseid j\u00e4reldusi saab teha sellest, mida ma r\u00e4\u00e4kisin?<\/p>\n<p><\/p>\n<ul>\n<li>Andmebaasi kasutamine Kuberneteses on v\u00f5imalik. Kindlasti saab kasutada erinevaid andmebaase, kuid \u00fcldiselt tundub, et see on teostatav. ClickHouse on kindlasti v\u00f5imalik Kuberneteses meie operaatoriga. <\/li>\n<li>Operaator aitab protsesside automatiseerimisel ja lihtsustab elu.<\/li>\n<li>J\u00f5udlus on normaalne.<\/li>\n<li>Ja me arvame, et seda saaks ja peaks kasutama. <\/li>\n<\/ul>\n<p><\/p>\n<p>Avaallikas \u2013 liituge!<\/p>\n<p><\/p>\n<p>Nagu juba \u00fctlesin, on operaator t\u00e4ielikult avaallika toode, seega oleks v\u00e4ga tore, kui v\u00f5imalikult palju inimesi seda kasutaks. Liituge! Ootame teid k\u00f5iki!<\/p>\n<p><\/p>\n<p>Ait\u00e4h k\u00f5igile!<\/p>\n<p><\/p>\n<p>K\u00fcsimused<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaasihalduskliendiks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4afe8b10c4f103c2a9a295511e4eb69a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ait\u00e4h ettekande eest! Minu nimi on Anton. Olen ettev\u00f5ttest SEMrush. Mind huvitab logimise teema. J\u00e4lgimisest on kuulda, kuid logimise kohta ei ole midagi, kui r\u00e4\u00e4kida terve klastrist. Meie puhul on n\u00e4iteks klaster loodud raudvaral. Ja me kasutame tsentraliseeritud logimist, kogume standardsete vahenditega kokku. Ja siis t\u00f5mbame sealt v\u00e4lja huvitavad andmed.<\/em> <\/p>\n<p><\/p>\n<p>Hea k\u00fcsimus, st. logimine on meie to-do nimekirjas. Meie operaator ei automatiseeri seda veel. Ta on endiselt arengus, projekt on veel piisavalt noor. Me m\u00f5istame, et logimine on vajalik. See on samuti v\u00e4ga t\u00e4htis teema. Ja see on ilmselt v\u00e4hemalt sama oluline kui j\u00e4lgimine. Kuid esimene teema, mida ellu viia, oli j\u00e4lgimine. Logimine tuleb. Loomulikult p\u00fc\u00fcame automatiseerida k\u00f5ik klastrite elutegevuse aspektid. Seega on vastus \u2013 praegu operaator kahjuks ei oska seda teha, kuid see on plaanis, me seda teeme. Kui soovite liituda, palun esitage pull request.<\/p>\n<p><\/p>\n<p><em>Tere! Ait\u00e4h ettekande eest! Mul on standardk\u00fcsimus, mis on seotud p\u00fcsivate mahtudega. Kui me loome selle operaatoriga konfiguratsiooni, siis kuidas operaator m\u00e4\u00e4rab, millisel s\u00f5lmel meil on mountitud disk v\u00f5i kaust? Kas me peaksime talle eelnevalt selgitama, et palun paigaldage meie ClickHouse just nendele s\u00f5lmedele, kus on disk?<\/em><\/p>\n<p><\/p>\n<p>Nii palju kui ma aru saan, on see k\u00fcsimus seotud kohaliku salvestusega, eriti selle hostPath-i osaga. See on nagu selgitada kogu s\u00fcsteemile, et pod peab olema k\u00e4ivitatud just sellel s\u00f5lmel, kuhu meil on f\u00fc\u00fcsiliselt \u00fchendatud disk, mis on monteeritud sellisel teel. See on terve sektsioon, mille ma k\u00e4sitlesin v\u00e4ga pinnapealselt, kuna sealne vastus on k\u00fcllalt mahukas. <\/p>\n<p><\/p>\n<p>L\u00fchidalt \u00f6eldes n\u00e4eb see v\u00e4lja nii. Me peame loomulikult nende mahtude provisioni tegema. Praegusel hetkel ei ole kohalikes salvestustes d\u00fcnaamilist provisioni, seega peavad DevOps omaette kettad l\u00f5ikama, need mahud. Ja nad peavad selgitama Kubernetes'e provisionile, et sul on teatud klassi P\u00fcsiv maht, mis asub teatud s\u00f5lmedel. Siis tuleb selgitada Kubernetes'ele, et pod'id, mis vajavad teatud klassi kohalikke salvestusi, tuleb sildistada ainult teatud s\u00f5lmedele. Nende eesm\u00e4rkide saavutamiseks on operaatoril v\u00f5imalus m\u00e4\u00e4rata teatud sildid ja \u00fche hosti eksemplar. Tulemuseks on see, et pod'id marsrutatakse Kubernetes'e poolt ainult sellistele s\u00f5lmedele, mis vastavad n\u00f5uetele, sildid, r\u00e4\u00e4gides lihtsalt. Administratiivtaust m\u00e4\u00e4rab sildid, teeb kettade provisioni k\u00e4sitsi. Ja siis see skaleerub.<\/p>\n<p><\/p>\n<p>Ja just kolmas variant kohaliku salvestuse osas aitab seda veidi kergendada. Nagu ma juba r\u00f5hutasin, on see p\u00f5hjalik seadistust\u00f6\u00f6, mis aitab l\u00f5ppkokkuv\u00f5ttes saavutada maksimaalset j\u00f5udlust.<\/p>\n<p><\/p>\n<p><em>Mul on selle osas teine k\u00fcsimus. Kubernetes on \u00fcles ehitatud nii, et meil ei ole vahet, kas me kaotame s\u00f5lme v\u00f5i mitte. Mida me siis teeme, kui me kaotasime s\u00f5lme, kus meil oli \u0161ard?<\/em><\/p>\n<p><\/p>\n<p>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\u00f5rvale heita. Ja Kubernetes'e areng liigub sinna suunas, et sellele ei saa t\u00e4ielikult filosoofiliselt l\u00e4heneda nagu t\u00e4ielikult \u00e4ra visatud ressurssidele.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd praktiline k\u00fcsimus. Mida teha, kui sul on kadunud s\u00f5lm, millel oli ketas? Siin lahendatakse probleem juba k\u00f5rgemal tasemel. ClickHouse'i korral on meil koopiad, mis t\u00f6\u00f6tavad k\u00f5rgemal tasemel, st ClickHouse'i tasemel.<\/p>\n<p><\/p>\n<p>Milline on olukord siis? DevOps vastutab selle eest, et andmed ei kaoks. Ta peab \u00f5igeaegselt seadistama replikatsiooni ja j\u00e4lgima, et replikatsioon toimuks. ClickHouse'i tasemel peavad koopiad olema andmeid dubleeritud. See ei ole \u00fclesanne, millega operaator tegeleb. Ja see ei ole \u00fclesanne, millega Kubernetes iseenesest tegeleb. See on ClickHouse'i tasemel.<\/p>\n<p><\/p>\n<p>Mida teha, kui teil on rauanode, mis on v\u00e4lja kukkunud? Tundub, et peate seadma teise, \u00f5igesti m\u00e4\u00e4rama ketta, rakendama silte. Ja p\u00e4rast seda vastab see n\u00f5uetele, et Kubernetes saab sellel k\u00e4ivitada pod'i instantsi. Kubernetes k\u00e4ivitab selle. Teil ei ole ju pod'ide arvu, mis vastaks m\u00e4\u00e4ratud n\u00f5uetele. See l\u00e4bib ringi, mida ma n\u00e4itasin. Ja k\u00f5rgeimal tasemel m\u00f5istab ClickHouse, et meil on tulnud repliik, see on veel t\u00fchi ja sinna tuleb hakata andmeid vedama. Teisis\u00f5nu, see protsess on veel halvasti automatiseeritud. <\/p>\n<p><\/p>\n<p><em>Ait\u00e4h ettekande eest! Kui juhtub igasuguseid halbu asju, kukub operaator ja restardib, ja sel ajal saabub s\u00fcndmusi, kas te t\u00f6\u00f6tate neid kuidagi \u00fcles?<\/em><\/p>\n<p><\/p>\n<p>Mis juhtub, kui operaator kukub ja restardib, eks? <\/p>\n<p><\/p>\n<p><em>Jah. Ja sel ajal saabusid s\u00fcndmused.<\/em> <\/p>\n<p><\/p>\n<p>\u00dclesanne, mida sel juhul teha, jaguneb osaliselt operaatori ja Kubernetes'i vahel. Kubernetes'il on v\u00f5imalus juhtuda s\u00fcndmus uuesti m\u00e4ngida. Ta m\u00e4ngib selle uuesti. Ja operaatori \u00fclesanne on veenduda, et kui s\u00fcndmuste logi uuesti m\u00e4ngitakse, oleksid need s\u00fcndmused idempotentsed. Ja et sama s\u00fcndmuse korduv toimumine ei kahjustaks meie s\u00fcsteemi. Ja meie operaator tegeleb selle \u00fclesandega. <\/p>\n<p><\/p>\n<p><em>Tere! Ait\u00e4h ettekande eest! Dmitri Zavyalov, ettev\u00f5te<\/em> <em>Smedova. Kas plaanitakse operaatorisse lisada v\u00f5imalust seadistada haproxy? Huvitavad miski muu koormuse jaotaja peale standardse, et ta oleks intelligentne ja m\u00f5istaks, et seal on tegelikult ClickHouse.<\/em> <\/p>\n<p><\/p>\n<p>Kas r\u00e4\u00e4gite Ingress'ist?<\/p>\n<p><\/p>\n<p><em>Jah, vahetage Ingress haproxy vastu. Haproxy's saab m\u00e4\u00e4rata klastri topoloogia, kus on repliigid.<\/em><\/p>\n<p><\/p>\n<p>Kuni praeguseni ei ole me selle peale m\u00f5elnud. Kui see on vajalik ja saate selgitada, miks see vajalik on, siis saame selle rakendada, eriti kui soovite osaleda. Vastus on l\u00fchidalt - ei, praegu meil sellist funktsionaalsust ei ole. Ait\u00e4h vihje eest, vaatame selle peale. Ja kui te seletate ka kasutusjuhtumi ja miks see praktikas vajalik on, n\u00e4iteks loote GitHub'is probleemid, siis oleks see suurep\u00e4rane.<\/p>\n<p><\/p>\n<p><em>See on juba olemas.<\/em><\/p>\n<p><\/p>\n<p>Hea. Oleme avatud igasugustele ettepanekutele. Ja haproxy lisatakse to-do nimekirja. To-do nimekiri kasvab, mitte ei v\u00e4heneks. Aga see on hea, see t\u00e4hendab, et toode on n\u00f5utud.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/523378\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u043a\u043b\u0430\u0434 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 Kubernetes, \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 Kubernetes \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d; \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438; \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442, \u0430 \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0414\u0430\u043b\u0435\u0435, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96966,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96965","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 Kubernetes \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0411\u0414. \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u041a\u043b\u0438\u043c\u0435\u043d\u043a\u043e (Altinity, 2019) | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-15T12:42:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-15T12:42:53+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kubernetesi operaator andmebaasi klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 Kubernetes \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0411\u0414. \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u041a\u043b\u0438\u043c\u0435\u043d\u043a\u043e (Altinity, 2019) | ProHoster","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-15T12:42:53+00:00","article:modified_time":"2020-10-15T12:42:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96965","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:29:25","updated":"2022-09-30 17:40:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/96965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=96965"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/96965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/96966"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=96965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=96965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=96965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}