{"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 andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/56e002c7408c4708e39ece867f84171e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aruanne keskendub Kubernetes'i operaatori arendamise praktilistele k\u00fcsimustele, selle arhitektuuri projekteerimisele ja p\u00f5hifunktsioonide toimimisele.<\/p>\n<p><\/p>\n<p>Aruande esimeses osas vaatleme:<\/p>\n<p><\/p>\n<ul>\n<li>mis on operaator Kubernetes'is ja miks see on vajalik;<\/li>\n<li>kuidas operaator lihtsustab keeruliste s\u00fcsteemide haldamist;<\/li>\n<li>mida operaator suudab, ja mida operaator ei suuda.<\/li>\n<\/ul>\n<p><\/p>\n<p>Seej\u00e4rel liigume operaatori sisemiste struktuuride arutamise juurde. Vaatleme operaatori arhitektuuri ja toimimist samm-sammult. \u00dcksikasjalikult k\u00e4sitleme:<\/p>\n<p><\/p>\n<ul>\n<li>operaatori ja Kubernetes'i omavaheline suhtlus;<\/li>\n<li>milliseid funktsioone operaator enda peale v\u00f5tab ja mida delegatsiooniks Kubernetes'i j\u00e4tab.<\/li>\n<\/ul>\n<p><\/p>\n<p>Vaatleme andmebaasi shardi ja repliikide haldamist Kubernetes'is.<br \/>\nEdasi arutame andmete salvestamise k\u00fcsimusi:<\/p>\n<p><\/p>\n<ul>\n<li>kuidas t\u00f6\u00f6tada Persistent Storage'iga operaatori vaatenurgast;<\/li>\n<li>kohalikku salvestust kasutamise p\u00f6\u00f6rdeid.<\/li>\n<\/ul>\n<p><\/p>\n<p>Aruande l\u00f5pposas vaatame praktilisi n\u00e4iteid rakendamise kohta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">clickhouse-operator<\/a><\/noindex> Amazoniga v\u00f5i Google Cloud Service'iga. Aruanne p\u00f5hineb ClickHouse'i operaatori arendamise ja kasutuskogemuste n\u00e4itel.<\/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=\"Vaata 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. T\u00e4na tahaksin r\u00e4\u00e4kida meie kogemustest spetsialiseeritud andmebaasiklusterite halduri arendamise ja opereerimise valdkonnas. Kasutame n\u00e4itena <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">ClickHouse-operatorit<\/a><\/noindex> ClickHouse'i klastrite haldamiseks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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>Me tegeleme ClickHouse'i toe ja arendamisega. <\/li>\n<li>Praegu \u00fcritame j\u00e4rk-j\u00e4rgult panustada ClickHouse'i arendamisse. Oleme Yandexi j\u00e4rel suuruselt teised muudatuste tegemise osas ClickHouse'is. <\/li>\n<li>P\u00fc\u00fcame luua t\u00e4iendavaid projekte ClickHouse'i \u00f6kos\u00fcsteemile. <\/li>\n<\/ul>\n<p><\/p>\n<p>\u00dcks selline projekt, millest tahaksin r\u00e4\u00e4kida, on ClickHouse-operator Kubernetes'e jaoks. <\/p>\n<p><\/p>\n<p>Oma ettekandes tahaksin k\u00e4sitleda kahte teemat: <\/p>\n<p><\/p>\n<ul>\n<li>Esimene teema on see, kuidas meie ClickHouse'i andmebaaside haldur t\u00f6\u00f6tab Kubernetes'es. <\/li>\n<li>Teine teema on see, kuidas t\u00f6\u00f6tab iga operaator, st kuidas see suhtleb Kubernetes'ega. <\/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 andmebaaside klastrite haldamiseks. 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 olla huvitav kuulata, mida ma \u00fcritan r\u00e4\u00e4kida?<\/p>\n<p><\/p>\n<ul>\n<li>Eriti huvitav on see neile, kes haldavad operaatorite. <\/li>\n<li>V\u00f5i nende jaoks, kes soovivad luua oma, et m\u00f5ista, kuidas see sees t\u00f6\u00f6tab, kuidas operaator Kubernetesega suhtleb ja millised takistused v\u00f5ivad esineda. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 me t\u00e4na arutame, oleks hea teada, kuidas Kubernetes t\u00f6\u00f6tab ja omada p\u00f5hiteadmisi pilvetehnoloogiatest. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 veergude andmebaas, mis on suunatud anal\u00fc\u00fctiliste p\u00e4ringute reaalajas t\u00f6\u00f6tlemisele. Ja see on t\u00e4ielikult avatud l\u00e4htekoodiga. <\/p>\n<p><\/p>\n<p>Ja meil on oluline teada ainult kahte asja. Tuleb tead, et see on andmebaas, seega on see, mida ma r\u00e4\u00e4gin, praktikas kohaldatav peaaegu igasuguste andmebaaside suhtes. Ja et andmehaldur ClickHouse on v\u00e4ga h\u00e4sti skaleeritav, pakkudes praktiliselt lineaarset skaleeritavust. Seega on klastriseisund ClickHouse'i jaoks loomulik seisund. Meid huvitab k\u00f5ige rohkem arutada, kuidas hooldada ClickHouse'i klastrit Kuberneteses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 me ei saa j\u00e4tkata selle iseseisvat kasutamist? Vastused on osaliselt tehnilised ja osaliselt organisatsioonilised. <\/p>\n<p><\/p>\n<ul>\n<li>Praktikas seisame \u00fcha sagedamini silmitsi olukorraga, kus suurtes ettev\u00f5tetes on peaaegu k\u00f5ik komponendid juba Kuberneteses. J\u00e4rele on j\u00e4\u00e4nud vaid andmebaasid. <\/li>\n<li>Ja \u00fcha sagedamini k\u00fcsitakse: \"Kas seda saab ka sinna viia?\" Seet\u00f5ttu p\u00fc\u00fcavad suured ettev\u00f5tted v\u00f5imalikult palju oma andmehalduse kohandamisega unifitseerida, et nad saaksid kiiresti oma andmehoidlaid hallata. <\/li>\n<li>See on eriti oluline, kui on vajalik maksimaalne korduvus uues kohas, st maksimaalne \u00fclekantavus.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 koondub Kubernetesega seotud halduskompleksus, ent lisandub ClickHouse\u2019i spetsiifika. Ja tulemuseks on selline aggregeerimine. <\/p>\n<p><\/p>\n<p>K\u00f5ik see kokku annab \u00fcsna suure tehnoloogiate komplekti, mille haldamine muutub juba piisavalt keeruliseks, kuna Kubernetes toob endaga igap\u00e4evaseid ekspluateerimise k\u00fcsimusi, samas kui ClickHouse toob oma igap\u00e4evased tegevusprobleemid. Eriti, kui meil on mitmeid ClickHouse\u2019i instantsi ja me peame nendega pidevalt midagi ette v\u00f5tma. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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'i d\u00fcnaamilise konfigureerimise korral on palju k\u00fcsimusi, mis loovad pidevat koormust DevOps'ile:<\/p>\n<p><\/p>\n<ul>\n<li>Kui soovime ClickHouse'is midagi muuta, n\u00e4iteks lisada replika v\u00f5i shard, peame tegema konfigureerimise haldust. <\/li>\n<li>Siis tuleb muuta andmeskeemi, kuna ClickHouse'il on spetsiifiline shardimise meetod. Seal tuleb andmeskeem ja konfigureerimised \u00f5igesti paika panna. <\/li>\n<li>Peab seadma \u00fcles j\u00e4lgimise. <\/li>\n<li>Logide kogumine uute shardide ja uute replikate jaoks. <\/li>\n<li>Tuleb tegeleda taastamisega.<\/li>\n<li>Ja taask\u00e4ivitamisega. <\/li>\n<\/ul>\n<p><\/p>\n<p>Need on rutiinsed t\u00f6\u00f6d, mida oleks v\u00e4ga soovitav tegevuse osas kergendada.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 tegevuse osas h\u00e4sti, kuid baass\u00fcsteemide k\u00fcsimustes. <\/p>\n<p><\/p>\n<p>Kubernetes h\u00f5lbustab ja automatiseerib selliseid asju nagu:<\/p>\n<p><\/p>\n<ul>\n<li>Taastamine.<\/li>\n<li>Taask\u00e4ivitamine. <\/li>\n<li>Salvestuss\u00fcsteemi haldamine.<\/li>\n<\/ul>\n<p><\/p>\n<p>See on hea, see on \u00f5ige suund, kuid tal pole \u00fcldse aimu, kuidas andmebaasi klastrit kasutada. <\/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 andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6564e9f29d5d518925c8593bca978345.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tahad midagi nagu suur punane nupp, millele vajutades saate \u00fcles seadmiseks ja kogu eluts\u00fckli jooksul toetamiseks klastrit, mis k\u00e4sitleb igap\u00e4evaseid \u00fclesandeid, mida tuleb lahendada. ClickHouse klaster Kubernetes'es.<\/p>\n<p><\/p>\n<p>Me oleme p\u00fc\u00fcdnud v\u00e4lja t\u00f6\u00f6tada lahenduse, mis aitaks t\u00f6\u00f6d lihtsustada. See on ClickHouse-operaator Kubernetes'e jaoks ettev\u00f5ttelt Altinity.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ff80c6fc59069ec900d545096ad978d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Operaator on programm, mille peamine \u00fclesanne on hallata teisi programme, st see on juhtimisseade. <\/p>\n<p><\/p>\n<p>Ja see sisaldab k\u00e4itumismustreid. Seda v\u00f5ib nimetada kodeeritud teadmiseks ainealasest. <\/p>\n<p><\/p>\n<p>Ja tema peamine \u00fclesanne on lihtsustada DevOpsi elu ja v\u00e4hendada mikromenetlemist, et ta (DevOps) m\u00f5tleks k\u00f5rgtasemel, st et ta (DevOps) ei tegeleks mikromenetlemisega ega seadistaks k\u00f5iki detaile k\u00e4sitsi. <\/p>\n<p><\/p>\n<p>Ja operaator on justkui robotabi, mis v\u00f5itleb mikrot\u00f6\u00f6dega ja aitab DevOps'i.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 operaator vajalik? Ta n\u00e4itab end eriti h\u00e4sti kahes k\u00fcsimuses:<\/p>\n<p><\/p>\n<ul>\n<li>Kui ClickHouse'i haldumise spetsialistil puudub piisav kogemus, kuid ClickHouse'i kasutamine on juba vajalik, teeb operaator haldamise lihtsamaks ja v\u00f5imaldab t\u00f6\u00f6tada ClickHouse'i klastriga, millel on \u00fcsna keeruline konfiguratsioon, samas mitte s\u00fcvenedes detailidesse, kuidas see k\u00f5ik seestpoolt t\u00f6\u00f6tab. Lihtsalt antakse talle k\u00f5rgtasemel \u00fclesanded ja see toimib. <\/li>\n<li>Teine valdkond, kus ta end k\u00f5ige paremini t\u00f5estab, on olukord, kus tuleb automatiseerida suur hulk t\u00fc\u00fcpilisi \u00fclesandeid. Ta vabastab s\u00fcsteemiadministraatoreid mikroulesannetest. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f1cb11156d57f560d0b6c82700ac6ff8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seda on k\u00f5ige rohkem vaja kas neile, kes alles alustavad oma teed, v\u00f5i neile, kes peavad palju automatiseerimisega tegelema. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 siis eristab operaatorip\u00f5hist l\u00e4henemist teistest s\u00fcsteemidest? On ju olemas Helm. See aitab samuti ClickHouse'i paigaldada, v\u00f5ib joonistada helm chart'e, mis isegi paigaldavad terve ClickHouse'i klastr. Mis siis eristab operaatorit n\u00e4iteks Helm'ist?<\/p>\n<p><\/p>\n<p>Peamine p\u00f5hierinevus on see, et Helm on paketihaldus, samas kui operaator astub edasi. See h\u00f5lmab kogu eluts\u00fcklit. See ei ole ainult installimine, vaid igap\u00e4evased \u00fclesanded, mis sisaldavad skaleerimist, shardimist ja k\u00f5ike, mida on vaja eluts\u00fckli jooksul teha (vajadusel ka kustutamine) \u2013 selle eest hoolitseb operaator. Ta p\u00fc\u00fcab automatiseerida ja hallata kogu tarkvara eluts\u00fcklit. See on tema p\u00f5hierinevus teiste lahenduste seas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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, n\u00fc\u00fcd liigume edasi. <\/p>\n<p><\/p>\n<p>Kuidas me ehitame oma operaatori? P\u00fc\u00fcame l\u00e4heneda k\u00fcsimusele, et hallata ClickHouse klastrit kui \u00fchte ressurssi. <\/p>\n<p><\/p>\n<p>Siin on meil pildi vasakus osas sisendid. See on YAML, millel on klastrite spesifikatsioon, mis traditsiooniliselt edastatakse Kubernetesesse l\u00e4bi kubectl. Seal operaator haarab selle, teeb oma maagia ja v\u00e4ljundiks on meil selline skeem. See on ClickHouse\u2019i rakendamine Kuberneteses.<\/p>\n<p><\/p>\n<p>Ja j\u00e4tkame aeglaselt vaatamist, kuidas operaator t\u00f6\u00f6tab ja milliseid t\u00fc\u00fcpilisi \u00fclesandeid saab lahendada. K\u00e4sitleme ainult t\u00fc\u00fcpilisi \u00fclesandeid, kuna meil on piiratud aeg. Ja me ei r\u00e4\u00e4gi k\u00f5igest, mida operaator suudab lahendada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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\u00e4htuvalt. Meie projekt on t\u00e4iesti avatud l\u00e4htekoodiga, seega saab GitHub'is n\u00e4ha, kuidas see t\u00f6\u00f6tab. Ja v\u00f5ime l\u00e4htuda sellest, et kui soovite lihtsalt alustada, siis Quick Start Guide'iga saab hakata.<\/p>\n<p><\/p>\n<p>Kui soovite \u00fcksikasjalikult s\u00fcveneda, siis p\u00fc\u00fcame hoida dokumentatsiooni enam-v\u00e4hem korralikus seisus. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 \u00fclesanne, millega k\u00f5ik tahame alustada, on k\u00e4ivitada esimene n\u00e4ide. Kuidas operaatori abil ClickHouse'i k\u00e4ivitada, isegi kui me ei tea t\u00e4pselt, kuidas see t\u00f6\u00f6tab? Kirjutame manifesti, kuna kogu suhtlus k8s-iga k\u00e4ib manifestide kaudu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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. See, mis on punasega t\u00e4histatud, on see, millele tuleb keskenduda. Palume operaatoril luua kluster nimega demo.<\/p>\n<p><\/p>\n<p>Siiani on p\u00f5hin\u00e4idised. Storage'i kohta veel teavet ei leia, kuid naaseme selle juurde hiljem. Hetkel j\u00e4lgime klastrite arengut d\u00fcnaamikas.<\/p>\n<p><\/p>\n<p>Loomisime selle manifesti. Toimime seda meie operaatorile. Ta t\u00f6\u00f6tas selle l\u00e4bi ja tegi oma maagia.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/502e64fbe6ed7d04b2aecb7d51abc7f9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadata konsoli. Huvi pakuvad kolm komponenti \u2013 see on Pod, kaks teenust ja StatefulSet.<\/p>\n<p><\/p>\n<p>Operaator t\u00f6\u00f6tas ja n\u00fc\u00fcd saame vaadata, mida ta t\u00e4pselt l\u00f5i. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 umbes sellise skeemi. Meil on StatefulSet, Pod, iga repliika jaoks ConfigMap ja kogu klastrile ConfigMap. Teenused on kindlasti vajalikud kui sisenemispunktid klastrisse. <\/p>\n<p><\/p>\n<p>Teenused on keskne Load Balancer Service ja samuti v\u00f5ib olla iga repliika jaoks, iga shardi jaoks. <\/p>\n<p><\/p>\n<p>Meie baasklastri v\u00e4limus on umbes selline. See koosneb \u00fchest ainus nodist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f235ada45ee58b517c0e041f795ae122.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Liikuge edasi, hakkame keerukamaks minema. Klastrit tuleb shardida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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, d\u00fcnaamika algab. Soovime lisada shardi. J\u00e4lgime arengu k\u00e4iku. Muudame meie spetsifikatsiooni. N\u00e4itame, et soovime kahte shardi. <\/p>\n<p><\/p>\n<p>See on sama fail, mis d\u00fcnaamiliselt areneb s\u00fcsteemi kasvades. Storage'i ei ole, storage'i arutame hiljem, see on eraldi teema.<\/p>\n<p><\/p>\n<p>Toimime YAML-teenuse ja vaatame, mis v\u00e4lja tuleb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 Service'i ja, ootamatult, kaks StatefulSet'i. Miks kaks StatefulSet'i?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 selline \u2013 see on meie algolek, kui meil oli ainult \u00fcks pod.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 on see selline. Hetkel on k\u00f5ik lihtne, see on kopeeritud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 on StatefulSet kaks? Siin tuleb k\u00f5rvale juhtida ja arutada, kuidas Kuberneteses toimub Pod'ide haldus.<\/p>\n<p><\/p>\n<p>On olemas selline objekt nagu StatefulSet, mis v\u00f5imaldab luua Pod'e mallist. Siin on v\u00f5tmekoht \u2013 see on Mall. \u00dches StatefulSet'is saab k\u00e4itada palju Pod'e sama malliga. Ja siin on v\u00f5tmefraas \"sama malliga palju Pod'e\".<\/p>\n<p><\/p>\n<p>Ja oli suur kiusatus teha kogu klaster, pakkides k\u00f5ik \u00fchte StatefulSet'i. See t\u00f6\u00f6taks, selles pole probleemi. Kuid on \u00fcks n\u00fcanss. Kui me tahame kokku panna heterogeense klastrit, st mitmest ClickHouse'i versioonist, siis tulevad meil k\u00fcsimused. Jah, StatefulSet v\u00f5ib teha j\u00e4rkj\u00e4rgulisi uuendusi, jah, seal saab paigaldada uue versiooni ja selgitada, et ei tohiks proovida rohkem kui nii palju node'e korraga.<\/p>\n<p><\/p>\n<p>Kuid kui ekstrapoleerida \u00fclesannet ja \u00f6elda, et soovime luua t\u00e4ielikult heterogeense klastri ning soovime mitte vanalt versioonilt uuele \u00fcle minna rolling update'i abil, vaid lihtsalt luua heterogeenne klaster nii erinevate ClickHouse versioonide kui ka erinevate salvestuslahendustega. Soovime n\u00e4iteks luua m\u00f5ned repliigid eraldi ketastele, aeglastele ketastele, siis ehitada t\u00e4iesti heterogeense klastri. Ja kuna StatefulSet loob \u00fchest mallist standardiseeritud lahenduse, pole selle saavutamine v\u00f5imalik. <\/p>\n<p><\/p>\n<p>M\u00f5tlemise j\u00e4rel tehti otsus, et tegutseme nii. Iga replikal on oma StatefulSet. Sellel lahendusel on m\u00f5ned puudused, kuid praktikas sisaldab see k\u00f5ik, mida rakendaja vajab. Ja on palju eeliseid. Saame luua t\u00e4pselt sellise klastri, nagu soovime, n\u00e4iteks t\u00e4iesti heterogeense. Seega klastris, kus on kaks shard'i kummagi replikaga, on meil 2 StatefulSet\u2019i ja 2 Pod\u2019i just seet\u00f5ttu, et valisime sellise l\u00e4henemise, et v\u00f5imaldada heterogeense klastri \u00fclesehitamist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b7ae92a545f9bb6cc5f0136df87207f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Naasume praktilistele \u00fclesannetele. Meie klastris tuleb seadistada kasutajaid, st tuleb teha mingit konfigureerimist ClickHouse'is Kuberneteses. Operaatoreid selleks pakuvad k\u00f5ik vajalikud v\u00f5imalused. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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-is kirjutada, mida me tahame. K\u00f5ik konfigureerimise valikud mapitakse otse sellest YAML-ist ClickHouse'i konfigureerimisse, mis siis jaotatakse kogu klastrisse.<\/p>\n<p><\/p>\n<p>Saame ka niimoodi kirjutada. See on n\u00e4idisena. Parooli saab \u0161ifreerida. K\u00f5ik ClickHouse'i konfigureerimise valikud on t\u00e4ielikult toetatud. Siin on vaid n\u00e4idis. <\/p>\n<p><\/p>\n<p>Klastri konfigureerimine laieneb nagu ConfigMap. Praktikas ConfigMap'i uuendamine ei toimu koheselt, seega kui klaster on suur, siis konfigureerimise viimise protsess v\u00f5tab aega. Kuid see on k\u00f5ik v\u00e4ga mugav kasutamiseks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2e42d19d7a558e3b8d4bbb51fe5bd08b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kompleksitame \u00fclesande. Klaster areneb. Soovime andmeid replikeerida. St meil on juba kaks shard'i, kus kummaski on \u00fcks replikatsioon, kasutajad on seadistatud. Meie kasvame ja soovime tegelema replikeerimisega.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 me vajame replikeerimiseks? <\/p>\n<p><\/p>\n<p>ZooKeeper on vajalik. ClickHouse'is on replikatsioon \u00fcles ehitatud ZooKeeperi abil. ZooKeeper on vajalik, et erinevad ClickHouse'i koopiad saaksid konsensusele, millised andmeplokid on millises ClickHouse'is. <\/p>\n<p><\/p>\n<p>V\u00f5id kasutada \u00fcksk\u00f5ik millisest ZooKeeper'i. Kui ettev\u00f5ttel on v\u00e4line ZooKeeper, siis seda saab kasutada. Kui ei, siis saame kasutada meie repozitooriumi ZooKeeper'i. Seal on paigaldust\u00f6\u00f6riist, mis lihtsustab kogu seda protsessi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 suhtlemine n\u00e4eb v\u00e4lja selline. Meil on Kubernetes platvormina. Selle peal t\u00f6\u00f6tab ClickHouse'i operaator. ZooKeeper on siin kujutatud. Ja operaator suhtleb nii ClickHouse'i kui ka ZooKeeper'iga. See t\u00e4hendab, et toimub omavaheline suhtlemine. <\/p>\n<p><\/p>\n<p>Ja see on vajalik, et ClickHouse suudaks andmeid k8s-esse t\u00f5husalt replikatsioonida.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 ja seda, milline n\u00e4eb v\u00e4lja replikatsiooni manifest.<\/p>\n<p><\/p>\n<p>Lisame meie manifestile kaks sektsiooni. Esimene \u2013 kust saada ZooKeeper, mis v\u00f5ib olla nii Kuberneteses sees kui ka v\u00e4line. See on lihtsalt kirjeldus. Ja tellime koopiad. See t\u00e4hendab, et soovime kahte koopiat. Seega peaks meil kokku olema 4 pod'i. Storage'i me m\u00e4letame, see tuleb hiljem tagasi. Storage on eriline teema. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 nii.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 on see nii. Lisatakse replikaid. Neljas ei mahtunud, usume, et neid v\u00f5ib olla palju. Ja k\u00fcljele lisatakse ZooKeeper. Skeemid muutuvad keerukamaks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c33b37fc7fc72f51276e5e98b9ec2134.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd on aeg lisada j\u00e4rgmine \u00fclesanne. Alustame Persistent Storage'i lisamist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f28d14901a713eca413a52ec6ea21ac5.jpeg\" style=\"display:block;margin: 0 auto;\" \/>Persistent Storage'i osas on meil erinevad teostusv\u00f5imalused.<\/p>\n<p><\/p>\n<p>Kui me t\u00f6\u00f6tame pilvepakkujas, n\u00e4iteks kasutades Amazonit v\u00f5i Google'it, on suur kiusatus kasutada pilve salvestust. See on v\u00e4ga mugav ja hea. <\/p>\n<p><\/p>\n<p>Ja on teine variant. See on lokaalse salvestuse jaoks, kui meil on kohalikud kettad igas s\u00f5lmes. See variant on oluliselt keerulisem teostada, kuid samas on see t\u00f5husam. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/483ee5c08b62e987620bf54fd32a44b4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadakem, mis meil pilves salvestuse osas on.<\/p>\n<p><\/p>\n<p>On eeliseid. Seda on v\u00e4ga lihtne konfigureerida. Me lihtsalt tellime pilvepakkujalt, et anna meile, palun, sellise mahtuvuse ja klassiga salvestus. Klassid on pakkujate poolt iseseisvalt m\u00e4\u00e4ratud. <\/p>\n<p><\/p>\n<p>Ja on puudus. M\u00f5nele ei ole see kriitiline puudus. Loomulikult on seal mingid j\u00f5udlusprobleemid. See on t\u00f6\u00f6s v\u00e4ga mugav ja usaldusv\u00e4\u00e4rne, kuid on potentsiaalsed j\u00f5udluse langevad punktid.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 t\u00f5hususele, v\u00f5ib \u00f6elda, et see pigistab v\u00e4lja k\u00f5ik, mis v\u00f5imalik, seega p\u00fc\u00fcavad paljud kliendid saada maksimaalset j\u00f5udlust.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8638fe37b848a98ce8326218d368baa3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Selle maksimaalse saavutamiseks vajame local storage'i.<\/p>\n<p><\/p>\n<p>Kubernetes pakub kolme abstraktsiooni local storage'i kasutamiseks. Need on: <\/p>\n<p><\/p>\n<ul>\n<li>EmptyDir<\/li>\n<li>HostPath.<\/li>\n<li>Lokaalne<\/li>\n<\/ul>\n<p><\/p>\n<p>Vaadake, millised on nende erinevused ja sarnasused. <\/p>\n<p><\/p>\n<p>Esiteks, k\u00f5ikides kolmes l\u00e4henemisviisis on storage \u2013 lokaalsed kettad, mis asuvad samal f\u00fc\u00fcsilisel k8s node'il. Kuid neil on m\u00f5ned erinevused.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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-st. Mis see praktikas t\u00e4hendab? Me palume oma spetsifikatsioonis konteinerite s\u00fcsteemil (enamasti on see Docker) anda meile juurdep\u00e4\u00e4s kaustale lokaalsel kettal.<\/p>\n<p><\/p>\n<p>Tavaselt loob Docker kusagil oma teedel ajutise kausta, nimetab selle pikaks hash'iks ja pakub p\u00e4\u00e4sumehhanismi sellele. <\/p>\n<p><\/p>\n<p>Kuidas see j\u00f5udluses t\u00f6\u00f6tab? See t\u00f6\u00f6tab lokaalse ketta kiirusel, st see on t\u00e4ies ulatuses juurdep\u00e4\u00e4s oma draivile. <\/p>\n<p><\/p>\n<p>Kuid sellel meetodil on oma puudus. Persistent on selles osas piisavalt kahtlane. Vahetult Dockeriga konteinerite liikumisel kaob Persistent \u00e4ra. Kui Kubernetes mingil p\u00f5hjusel soovib selle Pod'i teisaldada teisele kettale, siis andmed kaovad. <\/p>\n<p><\/p>\n<p>Selline l\u00e4henemine sobib h\u00e4sti katsetamiseks, kuna see n\u00e4itab normaalset kiirusnat, kuid t\u00f5siste \u00fclesannete jaoks ei sobi see variant. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0b60f80fc9ea0e2c1820021bcd9e1382.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seet\u00f5ttu on olemas teine l\u00e4henemine. See on hostPath. Kui vaadata eelmist slaidi ja seda, siis v\u00f5ib n\u00e4ha ainult \u00fchte erinevust. Meie kaust on v\u00e4lja viidud Dockerist otse Kubernetes'i s\u00f5lme. Siin on natuke lihtsam. Me m\u00e4\u00e4rame otse kohaliku failis\u00fcsteemi tee, kus soovime andmeid hoida. <\/p>\n<p><\/p>\n<p>Selle meetodi eelised on olemas. See on juba t\u00f5eline Persistent, ja traditsiooniline. Meie kettale salvestatakse andmed kindlasse aadressi. <\/p>\n<p><\/p>\n<p>Kuna ka puudusi. \u00dcks neist on haldamise keerukus. Meie Kubernetes v\u00f5ib soovida liigutada Pod'i teisele f\u00fc\u00fcsilisele s\u00f5lmele. Siin tuleb m\u00e4ngu DevOps, kes peab \u00f5igesti seletama kogu s\u00fcsteemile, et neid pod'e tohib liigutada ainult sellistele s\u00f5lmedele, kus sul on nende teede kaudu midagi \u00fchendatud, ja mitte rohkem kui \u00fchte s\u00f5lme korraga. See on piisavalt keeruline. <\/p>\n<p><\/p>\n<p>Just nende eesm\u00e4rkide tarbeks oleme meie operaatoris loonud mallid, et kogu see keerukus peita. Nii saab lihtsalt \u00f6elda: \u201eMa tahan, et mul oleks iga f\u00fc\u00fcsilise s\u00f5lme kohta \u00fcks ClickHouse'i instance ja sellisel teel.\u201d <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f64c19bccc8b187d6af112eda896b25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid see vajadus on vajalik mitte ainult meile, mist\u00f5ttu Kubernetes'i h\u00e4rrased m\u00f5istavad ka, et inimestele meeldib juurdep\u00e4\u00e4s f\u00fc\u00fcsilistele kettale, ja pakuvad seet\u00f5ttu kolmandat taset.<\/p>\n<p><\/p>\n<p>See nimetatakse local. Erinevused eelmisest slaidist on praktiliselt olematud. Ainult et varem pidime k\u00e4sitsi vasestama, et me ei saa neid pod\u2019e \u00fchest s\u00f5lmedest teise viia, sest nad peavad olema seotud sellise tee kaudu kohaliku f\u00fc\u00fcsilise kettaga. N\u00fc\u00fcd on kogu see teadmine kapseldatud Kubernetesesse. See muudab konfigureerimise palju lihtsamaks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 taas meie praktilise \u00fclesande juurde. Naaseme YAML mallide juurde. Siin on meil t\u00f5eline storage. Oleme tagasi selle juurde. M\u00e4\u00e4rame klassikalise VolumeClaim malli nagu k8s-is. Ja kirjeldame, millist storage'i soovime.<\/p>\n<p><\/p>\n<p>P\u00e4rast seda k\u00fcsib k8s storage'i. Eraldab sellele meie StatefulSetis. Ja l\u00f5puks saab see ClickHouse'i k\u00e4sutusse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 vihjas, et see tuleks teha. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 klastrite skeem k8s-is t\u00e4ielikult l\u00f5pule viidud. Meil on shard'id, koopiad, ZooKeeper, on olemas t\u00f5eline Persistent, mis on ellu viidud eri viisidel. Skeem on juba t\u00e4ielikult t\u00f6\u00f6tav. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 elame edasi. Meie klaster areneb. Ja Aleksei pingutab, et v\u00e4lja anda uus versioon ClickHouse'ist.<\/p>\n<p><\/p>\n<p>T\u00f5useb praktiline \u00fclesanne \u2013 testida uue ClickHouse'i versiooni meie klastris. Loomulikult ei taha me seda kogu aeg uuendada, vaid soovime uue versiooni kuskil kauges nurgas \u00fchte replit panna, v\u00f5ib-olla isegi mitte \u00fchte uut versiooni, vaid kohe kahte, sest need v\u00e4ljuvad \u00fcsna tihti. <\/p>\n<p><\/p>\n<p>Mida me selle kohta \u00f6elda saame?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48ed52d393d977d0cfaa9320bd02ed1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siinkohal on meil just selline v\u00f5imalus. Need on pod'i mallid. Saame v\u00e4lja kirjutada, meie operaator v\u00f5imaldab t\u00e4ielikult ehitada heterogeense klastrite. See t\u00e4hendab, et me saame konfigureerida alates k\u00f5igist replitest hunnikus, l\u00f5petades igasuguste isiklike replititega selle kohta, millist versiooni me soovime ClickHouse'ist ja millist versiooni me soovime salvestamisest. Me saame t\u00e4ielikult konfigureerida klastrit selliseks konfiguratsiooniks, nagu me soovime. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 juba s\u00fcgavamale. Varem r\u00e4\u00e4kisime sellest, kuidas ClickHouse-operator t\u00f6\u00f6tab ClickHouse'i spetsiifika suhtes.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd tahaksin \u00f6elda paar s\u00f5na selle kohta, kuidas toimib igasugune operaator, samuti sellest, kuidas see suhtleb K8s-iga.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ca9c2a23c54b2a81ac0a8bba88d5e65.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaadakem alustuseks suhet K8s-iga. Mis juhtub, kui teeme kubectl apply? Meie objektid ilmuvad l\u00e4bi API etcd-sse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 baikeskonnad: pod, StatefulSet, teenus ja nii edasi. <\/p>\n<p><\/p>\n<p>Samuti ei juhtu veel midagi f\u00fc\u00fcsilist. Need objektid tuleb klastrisse materialiseerida. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 eriline komponent k8s, mis oskab neid kirjelduse alusel materialiseerida. Ta teab, kuidas ja mida teha f\u00fc\u00fcsiliselt. Ta teab, kuidas konteinerid k\u00e4ivitada, mida on vajalik serveri t\u00f6\u00f6lepanekuks seadistada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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.<\/p>\n<p><\/p>\n<p>Kuid me ei soovi opereerida vaid pod'ide ja StatefulSet'idega, me tahame luua ClickHouseInstallation, st ClickHouse t\u00fc\u00fcpi objekti, et hallata seda kui \u00fchtset tervikut. Praegu sellist v\u00f5imalust ei ole. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1594921ac5dd9384ce81ceae92f5cda9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid K8s-l on j\u00e4rgmine meeldiv asi. Me soovime, et meil oleks kuskil selline keeruline entiteet, mis koosneks pod'idest ja StatefulSet'ist meie klastrist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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, astub lavale Custom Resource Definition. Mis see on? See on K8s jaoks kirjeldus, et sul on veel \u00fcks andmet\u00fc\u00fcp, et me soovime pod'ile, StatefulSet'ile lisada kohandatud ressurssi, mis oleks keeruline sees. See on andmestruktuuri kirjeldus. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f02ae12ef3ab5db974234b14e38792ac.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me saadame selle ka kubectl apply kaudu sinna. Kubernetes on selle r\u00f5\u00f5muga vastu v\u00f5tnud. <\/p>\n<p><\/p>\n<p>Ja n\u00fc\u00fcd on meil salvestuses, objekti etcd juures v\u00f5imalus registreerida kohandatud ressurssi nimega ClickHouseInstallation.<\/p>\n<p><\/p>\n<p>Aga praegu ei juhtu midagi enamat. See t\u00e4hendab, et kui me praegu loome YAML-faili, mida oleme vaadanud shardide, replikate kirjeldamiseks ja \u00fctleme 'kubectl apply', siis Kubernetes v\u00f5tab selle vastu, paneb etcd-sse ja \u00fctleb: 'Suurep\u00e4rane, aga mida sellega teha, ma ei tea. Kuidas ClickHouseInstallation teenindada, ma ei tea.' <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 on meil vaja kedagi, kes aitab Kubernetesel uue andmet\u00fc\u00fcbi teenindamisel. Vasakul on meil Raudtee Kubernetesi kontroller, mis t\u00f6\u00f6tab standardsete andmet\u00fc\u00fcpidega. Paremal peab ilmuma kohandatud kontroller, mis oskab t\u00f6\u00f6tada kohandatud andmet\u00fc\u00fcpidega. <\/p>\n<p><\/p>\n<p>Ja teistmoodi nimetatakse seda operaatoriks. Olen selle siin spetsiaalselt v\u00e4lja t\u00f5stnud, sest see v\u00f5ib t\u00f6\u00f6tada ka v\u00e4ljaspool K8s. Enamasti t\u00f6\u00f6tavad k\u00f5ik operaatorid muidugi Kuberneteses, aga miski ei takista tal seista v\u00e4ljas, seet\u00f5ttu on see siin spetsiaalselt v\u00e4lja t\u00f5stetud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7aa3a1b67d0def5ba752dff56baeebbf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja seej\u00e4rel suhtleb kohandatud kontroller, samuti operaator, Kubernetesega API kaudu. Ta oskab juba suhelda APIga. Ja ta teab, kuidas kohandatud ressursist materialiseerida keeruline skeem, mida soovime luua. Selle tegevusega operaator tegelebki. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 paremale poole, et teada saada, kuidas ta seda teeb. Saame teada, kuidas operaator k\u00f5ik selle materialiseerib ja kuidas toimub edasine suhtlemine K8s-iga.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 kaudu s\u00fcndmuste osas. Kubernetes API-s on sissep\u00e4\u00e4supunktid, kuhu saab registreeruda s\u00fcndmuste jaoks. Ja kui K8s-is midagi muutub, siis saadab Kubernetes s\u00fcndmused igale soovijale, st see, kes on selle API punkti tellinud, saab teateid.<\/p>\n<p><\/p>\n<p>Operaator registreerib end s\u00fcndmuste osas ja peab tegema mingi reageeringu. Tema \u00fclesanne on reageerida tekkivatele s\u00fcndmustele. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 koos ClickHouseInstallationi kirjeldusega saadetakse kubectl apply kaudu etcd-sse. Seal toimub s\u00fcndmus, mis j\u00f5uab ClickHouse-i operaatorini. Operaator saab selle kirjelduse k\u00e4tte ja tema \u00fclesanne on midagi teha. Kui ClickHouseInstallationi objektile on tulnud uuendus, tuleb klastrit uuendada. Operaatori \u00fclesanne on klastrit uuendada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 peab ta koostama tegevusplaani, mida me selle uuendusega teeme. Uuendused v\u00f5ivad olla v\u00e4ga v\u00e4ikesed, st YAML-implementatsioonis v\u00e4ikesed, kuid need v\u00f5ivad kutsuda esile suurde klastrisse suuri muudatusi. Seet\u00f5ttu koostab operaator plaani ja j\u00e4rgib seda edasi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 vastavalt sellele plaanile vajalikku struktuuri loobuma, et materialiseerida pod'e, teenuseid, st teha seda, mis on tema peamine \u00fclesanne. See on nagu ClickHouse klastrite ehitamine Kuberneteses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 sellist 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 p\u00f5hikomplekti objektide eest, mida saab t\u00f5lgendada s\u00fcsteemi ulatusena. Kubernetes teab, kuidas k\u00e4ivitada pod'e, kuidas konteinerit restartida, kuidas mountida mahtusid, kuidas t\u00f6\u00f6tada ConfigMap'iga \u2014 k\u00f5ik, mida v\u00f5ib nimetada s\u00fcsteemiks. <\/p>\n<p><\/p>\n<p>Operaatorid t\u00f6\u00f6tavad valdkondades. Iga operaator on loodud oma valdkonna jaoks. Me valmistasime selle ClickHouse'i jaoks.<\/p>\n<p><\/p>\n<p>Ja operaator suhtleb just sellistes valdkonna m\u00f5istetes nagu uue repliibi lisamine, skeemi loomine, j\u00e4lgimise seadistamine. Tekib selline jaotus.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9dc07d9c29d5dfd538343aadb751e4c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vaatame praktilise n\u00e4ite kaudu, kuidas see vastutuse jaotus toimub, kui teeme tegevuse, et lisada repliik. <\/p>\n<p><\/p>\n<p>Operaator saab \u00fclesande \u2014 lisada repliik. Mida operaator teeb? Operaator arvutab v\u00e4lja, et on vaja teha uus StatefulSet, kus tuleb kirjeldada teatud mallid, mahtude n\u00f5udmine. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 valmistab selle k\u00f5ik ette ja edastab edasi K8s. \u00dctleb, et tal on vaja ConfigMap'i, StatefulSet'i ja mahtu. Kubernetes t\u00f6\u00f6tab v\u00e4lja. Ta materialiseerib p\u00f5hielemendid, millega ta opereerib. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 j\u00e4tkab ClickHouse-operator, kellel on juba f\u00fc\u00fcsiline pod, millega midagi teha. ClickHouse-operator t\u00f6\u00f6tab taas domeeni m\u00f5istetega. See t\u00e4hendab, et ClickHouse'i puhul tuleb repliika klastrisse lisamiseks k\u00f5igepealt seadistada andmeskeem, mis on selles klastris olemas. Teiseks tuleb see repliika integreerida j\u00e4lgimise, et see oleks h\u00e4sti j\u00e4lgitav. Selle seadistab juba operaator. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 siis astub m\u00e4ngu ClickHouse, st veel \u00fcks k\u00f5rgem taseme element. See on juba andmebaas, millel on oma instants, uus konfigureeritud repliika, mis on valmis klastrisse astuma.<\/p>\n<p><\/p>\n<p>Tekib piisavalt pikk tegevuste ahela ja vastutuse jaotuse skeem repliika lisamisel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 oma praktiliste \u00fclesannetega. Kui klaster on juba olemas, saab teostada konfiguratsiooni migreerimist. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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-i, mida ClickHouse m\u00f5istab, saab andmeid suunata otse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 v\u00f5ib t\u00e4iendavalt h\u00e4\u00e4lestada. Zonaalne kaasamine on just see, millest r\u00e4\u00e4kisin selgitades hostPathi ja lokaalset salvestust. See on \u00f5ige viis zonaalse kaasamise tegemiseks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 andmebaaside klastrite haldamiseks. 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 aeg-ajalt seadistada. <\/p>\n<p><\/p>\n<p>Vaadakem skeemi. Oleme juba k\u00e4sitlenud rohelisi nooli. N\u00fc\u00fcd uurime punaseid nooli. See on see, kuidas me tahame oma klastrit j\u00e4lgida. Kuidas ClickHouse' klastrist p\u00e4rit m\u00f5\u00f5dikud l\u00e4hevad Prometheusesse ja seej\u00e4rel Grafanasse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1210c1423f99d48a20e06e855bf48a72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kus on t\u00f5rge j\u00e4lgimises? Miks see tuuakse esile kui mingi saavutus? Probleem seisneb d\u00fcnaamikas. Kui meil on \u00fcks klaster ja see on staatiline, saab j\u00e4lgimise seadistada \u00fcks kord ja rohkem ei pea muretsema.<\/p>\n<p><\/p>\n<p>Aga kui meil on palju klasse v\u00f5i pidevalt midagi muutub, on protsess d\u00fcnaamiline. Ja pidev j\u00e4lgimise seadistamine on ressursi ja aja raiskamine, see on lihtsalt laiskus. See tuleb automatiseerida. Probleem on 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 andmebaaside klastrite haldamiseks. 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 andmebaaside klastrite haldamiseks. 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 andmebaaside klastrite haldamiseks. 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\u00f5puks sai see selliseks. <\/p>\n<p><\/p>\n<p>Ja j\u00e4lgimist tehakse operaatori poolt automaatselt. \u00dcksne sisenemiskoht. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 j\u00e4lgime ainult Grafana juhtpaneelil, kuidas meie klastri elu sees toimub. <\/p>\n<p><\/p>\n<p>Muide, Grafana juhtpaneel levib samuti meie operaatoriga otse allikakoodis. Seda saab \u00fchendada ja kasutada. Selle ekraanipildi andsid mulle meie DevOps.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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? Need on:<\/p>\n<p><\/p>\n<ul>\n<li>Arendada testimise automatiseerimist. Peamine \u00fclesanne on uute versioonide automatiseeritud testimine. <\/li>\n<li>Samuti soovime tugevalt automatiseerida integreerimist ZooKeeperiga. Plaanis on integreeruda ZooKeeper-operatoriga. St. ZooKeeperi jaoks on kirjutatud operaator ja oleks loogiline, et kaks operaatorit hakkaksid integreeruma mugavama lahenduse loomiseks. <\/li>\n<li>Tahame teha keerulisemaid t\u00f6\u00f6kindluse kontrolle. <\/li>\n<li>Rohelisega m\u00e4rkisin, et meil on tulemas mallide p\u00e4rimise funktsioon \u2013 VALMIS, st j\u00e4rgmise operaatori versiooniga on meil juba mallide p\u00e4rimine. See on v\u00f5imas t\u00f6\u00f6riist, mis v\u00f5imaldab koostada keerulisi konfiguratsioone t\u00fckkidest. <\/li>\n<li>Ja tahame keeruliste \u00fclesannete automatiseerimist. Peamine neist on Re-sharding. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 andmebaaside klastrite haldamiseks. 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 l\u00f5puks saame? Kas peaksime sellega tegelema v\u00f5i mitte? Kas on \u00fcldse m\u00f5tet viia andmebaas Kubernetesesse ja rakendada operaatorit laiemalt ning Alitnity operaatorit konkreetselt?<\/p>\n<p><\/p>\n<p>L\u00f5puks saame:<\/p>\n<p><\/p>\n<ul>\n<li>Oluliselt lihtsustatud ja automatiseeritud seadistamise, juurutamise ja hooldamise. <\/li>\n<li>Koheselt sisse ehitatud j\u00e4lgimine. <\/li>\n<li>Ja valmis kasutamiseks kooditud mallid keeruliste olukordade jaoks. N\u00e4iteks pole enam vaja k\u00e4sitsi lisada koopiat. Selle teeb operaator. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/aebccd7a2dc55f14645f79f89f7b7458.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e4\u00e4nud on vaid viimane k\u00fcsimus. Meil on juba andmebaas Kuberneteses, virtualiseerimine. Kuidas on sellise lahenduse j\u00f5udlust, eriti arvestades seda, et ClickHouse on optimeeritud j\u00f5udluse jaoks?<\/p>\n<p><\/p>\n<p>Vastus \u2013 k\u00f5ik on korras! Ma ei hakka detailidesse laskuma, see on eraldi ettekande teema. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/ffc230941f0ae24926186db4d8d68ade.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aga on selline projekt nagu TSBS. Mis on selle peamine eesm\u00e4rk? Andmebaaside j\u00f5udluse testimine. See on katse v\u00f5rrelda sooja sooja, pehmet pehme. <\/p>\n<p><\/p>\n<p>Kuidas see t\u00f6\u00f6tab? Generatakse \u00fcks andmekogum. Siis k\u00e4ib see andmekogum erinevatel andmebaasidel sama testkomplekti peal. Iga andmebaas lahendab \u00fclesande nii, nagu oskab. Ja siis saab tulemusi v\u00f5rrelda. <\/p>\n<p><\/p>\n<p>See toetab juba suurt hulka andmebaase. Olen v\u00e4lja toonud 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 andmebaaside klastrite haldamiseks. 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. See tehti Amazonis. ClickHouse \u00fcletab ka selles osas k\u00f5ik teised. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes&#039;i operaator andmebaaside klastrite haldamiseks. 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 selle p\u00f5hjal, mida ma r\u00e4\u00e4kisin?<\/p>\n<p><\/p>\n<ul>\n<li>Andmebaasid Kuberneteses on v\u00f5imalikud. T\u00f5en\u00e4oliselt saab igasuguseid, aga \u00fcldiselt tundub, et see on v\u00f5imalik. ClickHouse Kuberneteses on kindlasti v\u00f5imalik meie operaatori abiga. <\/li>\n<li>Operaator aitab automatiseerida protsesse ja lihtsustab t\u00f5eliselt elu.<\/li>\n<li>Toimev\u00f5ime on normaalne.<\/li>\n<li>Ja me arvame, et seda saab ja tuleb kasutada. <\/li>\n<\/ul>\n<p><\/p>\n<p>Avatud l\u00e4htekood \u2013 liituge!<\/p>\n<p><\/p>\n<p>Nagu ma juba \u00fctlesin, on operaator t\u00e4ielikult avatud l\u00e4htekoodiga toode, seega oleks v\u00e4ga hea, 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 andmebaaside klastrite haldamiseks. 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 esitlust! Mina olen Anton. Ma olen ettev\u00f5ttest SEMrush. Mind huvitab, mis logimisega toimub. Jutt on kuulda j\u00e4lgimisest, aga logimisest ei ole midagi, kui r\u00e4\u00e4kida klastrist tervikuna. N\u00e4iteks meil on \u00fcles seatud klaster riistvaral. Ja me kasutame tsentraliseeritud logimist, standardsete vahenditega kogume k\u00f5ik koos. Ja siis sealt v\u00f5tame v\u00e4lja huvitavad andmed.<\/em> <\/p>\n<p><\/p>\n<p>Hea k\u00fcsimus, st logimine on todo nimekirjas. Meie operaator ei automatiseeri seda veel. Ta veel areneb, projekt on ikka veel piisavalt noor. Me m\u00f5istame logimise vajadust. See on samuti v\u00e4ga oluline teema. Ja see pole t\u00f5en\u00e4oliselt v\u00e4hem oluline kui j\u00e4lgimine. Kuid esimene teema elluviimiseks oli j\u00e4lgimine. Logimine tuleb. Me p\u00fc\u00fcame loomulikult automatiseerida k\u00f5ik klastriga seotud tegevused. Seet\u00f5ttu on vastus - hetkel operaator, kahjuks, ei oska seda veel teha, kuid see on plaanis ja me teeme seda. Kui on soov liituda, siis palun tee pull request.<\/p>\n<p><\/p>\n<p><em>Tere! Ait\u00e4h ettekande eest! Mul on tavaline k\u00fcsimus, mis on seotud Persistent Volumes'iga. Kui me loome selle operaatori kaudu konfigureerimise, kuidas operaator m\u00e4\u00e4rab, millisel node'il on meil m\u00f5ni ketas v\u00f5i kaust primountitud? Kas me peame talle eelnevalt selgitama, et palun paigalda meie ClickHouse just nendele node'idele, kus on ketas?<\/em><\/p>\n<p><\/p>\n<p>Nii palju, kui ma aru saan, on see k\u00fcsimus kohaliku salvestuse j\u00e4tk, eriti selle osa kohta hostPath. See on nagu kogu s\u00fcsteemile selgitamine, et pod peab t\u00f6\u00f6tama just kindlal node'il, kus meil on f\u00fc\u00fcsiliselt \u00fchendatud ketas, mis on mountitud teatud teele. See on terve sektsioon, mida ma katsusin v\u00e4ga pinnapealselt, sest vastus on piisavalt ulatuslik. <\/p>\n<p><\/p>\n<p>L\u00fchidalt \u00f6eldes n\u00e4eb see v\u00e4lja j\u00e4rgmiselt. Loomulikult peame nende mahtude provisionimise \u00e4ra tegema. Hetkel puudub kohaliku salvestuse d\u00fcnaamiline provisionimine, seega peavad DevOps ise kettad l\u00f5ikama, need mahud. Samuti peavad nad Kubernetes'ile selgitama, et sul on teatud klassi Persistent volumes, mis asuvad teatud s\u00f5lmedes. Seej\u00e4rel tuleb Kubernetes'ile selgitada, et pod'id, mis n\u00f5uavad sellist klassi kohaliku salvestuse, tuleb labelite j\u00e4rgi graafikule v\u00f5tta ainult teatud s\u00f5lmedes. Selleks on operaatoris v\u00f5imalus m\u00e4\u00e4rata teatud label ja one per host instance. Nii et pod'id marsrutiseeritakse Kubernetes'i poolt k\u00e4ivitamiseks ainult nendel s\u00f5lmedel, mis vastavad n\u00f5uetele, lihtsustades seda \u00f6eldes. S\u00fcsteemiadministraatorid m\u00e4\u00e4ravad labelid ja teevad kettaste provisionimise k\u00e4sitsi. Siis saab s\u00fcsteem skaleeruda.<\/p>\n<p><\/p>\n<p>Ja just kolmas variant kohaliku salvestuse abil aitab seda veidi lihtsustada. Nagu ma juba r\u00f5hutasin, on see p\u00f5hjalik seadistust\u00f6\u00f6, mis aitab saavutada maksimaalset j\u00f5udlust.<\/p>\n<p><\/p>\n<p><em>Mul on selle teemaga seoses teine k\u00fcsimus. Kubernetes on m\u00f5eldud nii, et me ei pea muretsema, kas me kaotame s\u00f5lme v\u00f5i mitte. Mida me peaksime tegema, kui me kaotasime s\u00f5lme, kus on meie shard?<\/em><\/p>\n<p><\/p>\n<p>Jah, Kubernetes on algselt positsioneeritud nii, et meie suhted meie pod\u2018idega on nagu kariloomadega, aga n\u00fc\u00fcd on iga ketas midagi nagu lemmikloom. On probleem, et me ei saa neid lihtsalt \u00e4ra visata. Kubernetes'e areng viib selleni, et ei ole v\u00f5imalik t\u00e4ielikult suhtuda sellesse filosoofiliselt nagu t\u00e4ielikult \u00e4ra visatavate ressurssidena.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd praktiline k\u00fcsimus. Mida teha, kui sul on kaduma l\u00e4inud s\u00f5lm, kus ketas oli? Siin lahendatakse probleem k\u00f5rgemal tasemel. ClickHouse'i puhul on meil replikad, mis t\u00f6\u00f6tavad k\u00f5rgemal tasemel, st ClickHouse tasemel.<\/p>\n<p><\/p>\n<p>Milline on olukord? Andmete kadumise eest vastutab DevOps. Ta peab korralikult seadistama replikatsiooni ja j\u00e4lgima, et replikatsioon toimiks. ClickHouse tasemel peavad andmed olema replikas dubleeritud. See ei ole \u00fclesanne, mida lahendab operaator. Ja see ei ole \u00fclesanne, mida lahendab Kubernetes. See on ClickHouse tasemel.<\/p>\n<p><\/p>\n<p>Mis teha, kui teie serveri nodi kukkus? Tundub, et peate seadma teise, \u00f5igesti paigaldama kettad ja m\u00e4rkima sildid. P\u00e4rast seda peab see vastama n\u00f5uetele, et Kubernetes saab sellel k\u00e4ivitada pod'i koopia. Kubernetes k\u00e4ivitab selle. Teil on ju pod'ide arv allapoole seatud. See l\u00e4bib ts\u00fcklit, mida ma n\u00e4itasin. Ja k\u00f5ige k\u00f5rgemal tasemel m\u00f5istab ClickHouse, et meil on sisse tulnud replikatsioon, see on veel t\u00fchi ja sellele tuleb hakata andmeid \u00fcle kandma. See protsess on veel halvasti automatiseeritud. <\/p>\n<p><\/p>\n<p><em>Ait\u00e4h ettekande eest! Kui midagi hullu juhtub, langeb operaator ja ta taask\u00e4ivitub, samal ajal kui toimub s\u00fcndmuste vastuv\u00f5tt, kas te t\u00f6\u00f6deldes seda kuidagi teete?<\/em><\/p>\n<p><\/p>\n<p>Mis juhtub, kui operaator kukkus ja ta taask\u00e4ivitub, eks? <\/p>\n<p><\/p>\n<p><em>Jah. Ja sel hetkel toimusid s\u00fcndmused.<\/em> <\/p>\n<p><\/p>\n<p>\u00dclesanne, mida selles olukorras teha, jaguneb osaliselt operaatori ja Kubernetes'i vahel. Kubernetes'il on v\u00f5imalus juhtunud s\u00fcndmust uuesti taasesitada. Ta taasesitab selle. Operaatori \u00fclesanne on aga tagada, et kui s\u00fcndmuste logi taasesitatakse, oleksid need s\u00fcndmused idempotentsed. Ja et sama s\u00fcndmuse korduv esinemine ei rikuks meie s\u00fcsteemi. Meie operaator suudab sellega toime tulla. <\/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? Olen huvitatud millestki muust koormustasakaalustajast peale standardse, mis oleks nutikas ja m\u00f5istaks, mis seal tegelikult ClickHouse'is toimub.<\/em> <\/p>\n<p><\/p>\n<p>Kas te r\u00e4\u00e4gite Ingress'ist?<\/p>\n<p><\/p>\n<p><em>Jah, asendame Ingress'i haproxy'ga. Haproxy's saab m\u00e4\u00e4rata klooster topoloogia, kus tal on replikad.<\/em><\/p>\n<p><\/p>\n<p>Praegu ei ole me selle peale m\u00f5elnud. Kui see on teile vajalik ja oskate selgitada, miks see vajalik on, siis on v\u00f5imalik see ellu viia, eriti kui soovite osaleda. Me hindame hea meelega seda varianti. L\u00fchike vastus \u2013 ei, meil ei ole sellist funktsionaalsust hetkel. Ait\u00e4h vihje eest, vaatame selle asja \u00fcle. Ja kui saaksid veel selgitada kasutusjuhtu ja miks see praktikas vajalik on, n\u00e4iteks luua GitHubis teemasid, siis oleks see suurep\u00e4rane.<\/p>\n<p><\/p>\n<p><em>Juba olemas.<\/em><\/p>\n<p><\/p>\n<p>Hea. Oleme avatud igasugustele ettepanekutele. Ja haproxy antakse to-do nimekirja. To-do nimekiri kasvab, mitte ei v\u00e4hene praegu. Aga see on hea, see t\u00e4hendab, et toode on n\u00f5udlik.<\/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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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) 4.9.10\" \/>\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:description\" content=\"\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\" \/>\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":"Ettekanne k\u00e4sitleb praktilisi k\u00fcsimusi Kubernetes'i operaatori arendamisel, selle arhitektuuri projekteerimist ja p\u00f5hifunktsioonide toimimist. Ettekanne koosneb kahest osast: k\u00f5igepealt vaatame, mis on operaator Kubernetes'is ja miks see vajalik on; kuidas operaator h\u00f5lbustab keerukate s\u00fcsteemide haldamist; mida operaator suudab ja mida mitte. Seej\u00e4rel liigume operaatori sisemise struktuuri arutamise juurde. Uurime selle arhitektuuri ja toimimist.","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:description":"\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","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"},"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}]}}