{"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\/sk\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019","title":{"rendered":"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/56e002c7408c4708e39ece867f84171e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Spr\u00e1va je venovan\u00e1 praktick\u00fdm ot\u00e1zkam v\u00fdvoja oper\u00e1tora v Kubernetes, n\u00e1vrhu jeho architekt\u00fary a z\u00e1kladn\u00fdm princ\u00edpom fungovania.<\/p>\n<p><\/p>\n<p>V prvej \u010dasti spr\u00e1vy sa pozrieme na:<\/p>\n<p><\/p>\n<ul>\n<li>\u010do je oper\u00e1tor v Kubernetes a na \u010do je potrebn\u00fd;<\/li>\n<li>ako oper\u00e1tor u\u013eah\u010duje spr\u00e1vu zlo\u017eit\u00fdch syst\u00e9mov;<\/li>\n<li>\u010do oper\u00e1tor m\u00f4\u017ee a \u010do nem\u00f4\u017ee.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u010ealej sa posunieme k diskusii o vn\u00fatornom usporiadan\u00ed oper\u00e1tora. Presk\u00famame architekt\u00faru a fungovanie oper\u00e1tora krok za krokom. Podrobne sa zaober\u00e1me:<\/p>\n<p><\/p>\n<ul>\n<li>interakciou medzi oper\u00e1torom a Kubernetes;<\/li>\n<li>ak\u00e9 funkcie si oper\u00e1tor preber\u00e1, a \u010do deleguje v Kubernetes.<\/li>\n<\/ul>\n<p><\/p>\n<p>Presk\u00famame spr\u00e1vu shardov a replik DB v Kubernetes.<br \/>\n\u010ealej sa budeme zaobera\u0165 ot\u00e1zkami ukladania d\u00e1t:<\/p>\n<p><\/p>\n<ul>\n<li>ako pracova\u0165 s Persistent Storage z poh\u013eadu oper\u00e1tora;<\/li>\n<li>\u00faskalia pou\u017eit\u00ed Local Storage.<\/li>\n<\/ul>\n<p><\/p>\n<p>V z\u00e1vere\u010dnej \u010dasti spr\u00e1vy si predstav\u00edme praktick\u00e9 pr\u00edklady aplik\u00e1cie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">clickhouse-operator<\/a><\/noindex> s Amazonom alebo Google Cloud Service. Spr\u00e1va je postaven\u00e1 na pr\u00edklade v\u00fdvoja a sk\u00fasenostiach s prev\u00e1dzkou oper\u00e1tora pre ClickHouse.<\/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=\"Prehrajte video\" 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>Vol\u00e1m sa Vladislav Klimenko. Dnes by som chcel hovori\u0165 o na\u0161ich sk\u00fasenostiach s v\u00fdvojom a prev\u00e1dzkou oper\u00e1tora, pri\u010dom ide o \u0161pecializovan\u00e9ho oper\u00e1tora na spr\u00e1vu klastrov datab\u00e1z. Na pr\u00edklade <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">ClickHouse-operator<\/a><\/noindex> na spr\u00e1vu klustra ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/cc297a3edb3b2a5e30d0dc2725de4011.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pre\u010do m\u00e1me mo\u017enos\u0165 hovori\u0165 o oper\u00e1torovi a ClickHouse?<\/p>\n<p><\/p>\n<ul>\n<li>Zaober\u00e1me sa podporou a rozvojom ClickHouse. <\/li>\n<li>V s\u00fa\u010dasnosti sa sna\u017e\u00edme postupne prispie\u0165 svoj\u00edm dielom k v\u00fdvoju ClickHouse. A sme druh\u00ed po Yandexe z h\u013eadiska objemu vykonan\u00fdch zmien v ClickHouse. <\/li>\n<li>Sna\u017e\u00edme sa robi\u0165 \u010fal\u0161ie projekty pre ekosyst\u00e9m ClickHouse. <\/li>\n<\/ul>\n<p><\/p>\n<p>O jednom z tak\u00fdchto projektov by som chcel hovori\u0165. Ide o ClickHouse-operator pre Kubernetes. <\/p>\n<p><\/p>\n<p>Vo svojej spr\u00e1ve by som chcel na\u010drtn\u00fa\u0165 dve t\u00e9my: <\/p>\n<p><\/p>\n<ul>\n<li>Prv\u00e1 t\u00e9ma \u2013 ako funguje n\u00e1\u0161 oper\u00e1tor na spr\u00e1vu datab\u00e1z ClickHouse v Kubernetes. <\/li>\n<li>Druh\u00e1 t\u00e9ma \u2013 ako funguje ak\u00fdko\u013evek oper\u00e1tor, t. j. ako interaguje s Kubernetes. <\/li>\n<\/ul>\n<p><\/p>\n<p>Tieto dve ot\u00e1zky sa bud\u00fa po\u010das celej mojej spr\u00e1vy prekr\u00fdva\u0165. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4cc9790e18e70ae1ccde2cf39ef4ef00.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Komu by mohlo by\u0165 zauj\u00edmav\u00e9 po\u010du\u0165 to, \u010do sa sna\u017e\u00edm poveda\u0165?<\/p>\n<p><\/p>\n<ul>\n<li>Nieko\u013eko zauj\u00edma zrejme t\u00fdch, ktor\u00ed prev\u00e1dzkuj\u00fa oper\u00e1tory. <\/li>\n<li>Alebo t\u00fdch, ktor\u00ed chc\u00fa vytvori\u0165 svoj, aby rozumeli, ako to funguje zvn\u00fatra, ako interaguje oper\u00e1tor s Kubernetes a ak\u00e9 \u00faskalia sa m\u00f4\u017eu objavi\u0165. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/07545f7a0171b610697c519d4aa9cd43.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aby sme lep\u0161ie porozumeli tomu, o \u010dom budeme dnes diskutova\u0165, bolo by dobr\u00e9 vedie\u0165, ako Kubernetes funguje a ma\u0165 z\u00e1kladn\u00e9 znalosti o cloudov\u00fdch technol\u00f3gi\u00e1ch. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/eff56cc3e83fde3d3e64d73d41b07417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co je ClickHouse? Je to st\u013apcov\u00e1 datab\u00e1za zameran\u00e1 na online spracovanie analytick\u00fdch dotazov. A je to \u00faplne open source. <\/p>\n<p><\/p>\n<p>D\u00f4le\u017eit\u00e9 je vedie\u0165 len dve veci. Mus\u00edme si uvedomi\u0165, \u017ee ide o datab\u00e1zu, tak\u017ee to, \u010do budem rozpr\u00e1va\u0165, sa bude da\u0165 aplikova\u0165 takmer na ka\u017ed\u00fa datab\u00e1zu. A \u017ee Syst\u00e9m riadenia datab\u00e1z ClickHouse sa ve\u013emi dobre \u0161k\u00e1luje, poskytuje v podstate line\u00e1rnu \u0161k\u00e1lovate\u013enos\u0165. Preto je stav klastrov pre ClickHouse prirodzen\u00fd. Najviac n\u00e1s zauj\u00edma diskusia o tom, ako spravova\u0165 klaster ClickHouse v Kubernetes.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5eb1ff5026c492117bf2467b10de7053.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pre\u010do je potrebn\u00e9 ho tam ma\u0165? Pre\u010do nem\u00f4\u017eeme na\u010falej prev\u00e1dzkova\u0165 samo? Odpovede s\u00fa \u010diasto\u010dne technick\u00e9, \u010diasto\u010dne organiza\u010dn\u00e9. <\/p>\n<p><\/p>\n<ul>\n<li>V praxi sa \u010doraz \u010dastej\u0161ie stret\u00e1vame so situ\u00e1ciou, kedy vo ve\u013ek\u00fdch firm\u00e1ch s\u00fa u\u017e prakticky v\u0161etky komponenty v Kubernetes. Datab\u00e1zy zost\u00e1vaj\u00fa mimo. <\/li>\n<li>A \u010doraz \u010dastej\u0161ie sa p\u00fdtaj\u00fa: \u201eM\u00f4\u017ee sa to dostato\u010dne integrova\u0165?\u201c. Ve\u013ek\u00e9 firmy sa sna\u017eia dosiahnu\u0165 maxim\u00e1lnu unifik\u00e1ciu spr\u00e1vy, aby mohli r\u00fdchlo spravova\u0165 svoje \u00falo\u017eisk\u00e1 d\u00e1t. <\/li>\n<li>To najm\u00e4 pom\u00e1ha, ak potrebujeme maxim\u00e1lnu schopnos\u0165 zopakova\u0165 to ist\u00e9 na novom mieste, teda maxim\u00e1lnu prenosnos\u0165.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/99312e74bd7ed4031128c7ec872f6a68.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ako jednoduch\u00e9 alebo zlo\u017eit\u00e9 je to? Samozrejme, d\u00e1 sa to robi\u0165 manu\u00e1lne. Ale nie je to a\u017e tak jednoduch\u00e9, preto\u017ee sa stret\u00e1vame so zlo\u017eit\u00fdm riaden\u00edm samotn\u00e9ho Kubernetes, pri\u010dom sa prid\u00e1va aj \u0161pecifickos\u0165 ClickHouse. A dostaneme agreg\u00e1ciu. <\/p>\n<p><\/p>\n<p>A to v\u0161etko spolu poskytuje dos\u0165 ve\u013ek\u00fd s\u00fabor technol\u00f3gi\u00ed, ktor\u00fdmi je u\u017e dos\u0165 \u0165a\u017ek\u00e9 spravova\u0165, preto\u017ee Kubernetes prin\u00e1\u0161a svoje ka\u017edodenn\u00e9 ot\u00e1zky prev\u00e1dzky, zatia\u013e \u010do ClickHouse prin\u00e1\u0161a svoje ot\u00e1zky dennej prev\u00e1dzky. Najm\u00e4 ak m\u00e1me viacero ClickHouse, a mus\u00edme s nimi neust\u00e1le nie\u010do robi\u0165. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. 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 s dynamickou konfigur\u00e1ciou m\u00e1 dos\u0165 ve\u013ea ot\u00e1zok, ktor\u00e9 vytv\u00e1raj\u00fa neust\u00e1lu z\u00e1\u0165a\u017e na DevOps:<\/p>\n<p><\/p>\n<ul>\n<li>Ke\u010f chceme nie\u010do zmeni\u0165 v ClickHouse, napr\u00edklad prida\u0165 replik\u00e1ciu alebo shard, mus\u00edme spravova\u0165 konfigur\u00e1ciu. <\/li>\n<li>N\u00e1sledne je potrebn\u00e9 zmeni\u0165 sch\u00e9mu \u00fadajov, preto\u017ee ClickHouse m\u00e1 \u0161pecifick\u00fd sp\u00f4sob shardovania. Je potrebn\u00e9 rozdeli\u0165 sch\u00e9mu \u00fadajov a usporiada\u0165 konfigur\u00e1cie. <\/li>\n<li>Je potrebn\u00e9 nastavi\u0165 monitorovanie. <\/li>\n<li>Zber logov pre nov\u00e9 shardy a nov\u00e9 repliky. <\/li>\n<li>Postara\u0165 sa o obnovu.<\/li>\n<li>A re\u0161tart. <\/li>\n<\/ul>\n<p><\/p>\n<p>S\u00fa to rutinn\u00e9 \u00falohy, ktor\u00e9 by sme chceli u\u013eah\u010di\u0165 v prev\u00e1dzke.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2461e861ca1d2f2344ead9decf85a97e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S\u00e1m Kubernetes naozaj pom\u00e1ha v prev\u00e1dzke, ale pri z\u00e1kladn\u00fdch syst\u00e9mov\u00fdch veciach. <\/p>\n<p><\/p>\n<p>Kubernetes dobre u\u013eah\u010duje a automatizuje tak\u00e9 veci ako:<\/p>\n<p><\/p>\n<ul>\n<li>Obnovu.<\/li>\n<li>Re\u0161tart. <\/li>\n<li>Spr\u00e1vu \u00falo\u017en\u00e9ho syst\u00e9mu.<\/li>\n<\/ul>\n<p><\/p>\n<p>To je dobr\u00e9, to je spr\u00e1vny smer, ale \u00faplne nerozumie tomu, ako prev\u00e1dzkova\u0165 datab\u00e1zov\u00fd klaster. <\/p>\n<p><\/p>\n<p>Chceme viac, chceme, aby cel\u00e1 datab\u00e1za fungovala v Kubernetes.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6564e9f29d5d518925c8593bca978345.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Chceli by sme z\u00edska\u0165 nie\u010do ako ve\u013ek\u00e9 magick\u00e9 \u010derven\u00e9 tla\u010didlo, na ktor\u00e9 stla\u010d\u00edte a rozvinie sa a udr\u017euje sa po\u010das cel\u00e9ho \u017eivotn\u00e9ho cyklu klaster s ka\u017edodenn\u00fdmi \u00falohami, ktor\u00e9 je potrebn\u00e9 rie\u0161i\u0165. Klaster ClickHouse v Kubernetes.<\/p>\n<p><\/p>\n<p>Sna\u017eili sme sa vytvori\u0165 tak\u00e9 rie\u0161enie, ktor\u00e9 by u\u013eah\u010dilo pr\u00e1cu. Je to ClickHouse-operator pre Kubernetes od spolo\u010dnosti Altinity.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ff80c6fc59069ec900d545096ad978d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oper\u00e1tor je program, ktor\u00e9ho hlavnou \u00falohou je spravova\u0165 in\u00e9 programy, teda je to mana\u017e\u00e9r. <\/p>\n<p><\/p>\n<p>Obsahuje \u0161abl\u00f3ny spr\u00e1vania. M\u00f4\u017eeme to nazva\u0165 kodifikovan\u00e9 znalosti o predmetovej oblasti. <\/p>\n<p><\/p>\n<p>A jeho hlavn\u00e1 \u00faloha je u\u013eah\u010di\u0165 \u017eivot DevOps a zn\u00ed\u017ei\u0165 mikromana\u017ement, aby on (DevOps) myslel vo vysok\u00fdch pojmoch, teda aby sa (DevOps) nezaoberal mikromana\u017ementom, aby nemusel ru\u010dne nastavova\u0165 v\u0161etky detaily. <\/p>\n<p><\/p>\n<p>A pr\u00e1ve oper\u00e1tor je robotick\u00fd asistent, ktor\u00fd bojuje s mikrozadaniami a pom\u00e1ha DevOps.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0824a1fa710e8c4f45406aa7f596b977.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na\u010do je potrebn\u00fd oper\u00e1tor? Osobitne dobre sa ukazuje v dvoch ot\u00e1zkach:<\/p>\n<p><\/p>\n<ul>\n<li>Ke\u010f m\u00e1 \u0161pecialista, ktor\u00fd sa zaober\u00e1 ClickHouse, nedostatok sk\u00fasenost\u00ed, ale prev\u00e1dzku ClickHouse je u\u017e potrebn\u00e9 uskuto\u010dni\u0165, oper\u00e1tor u\u013eah\u010duje prev\u00e1dzku a umo\u017e\u0148uje prev\u00e1dzkova\u0165 klaster ClickHouse s dos\u0165 zlo\u017eitou konfigur\u00e1ciou, pri\u010dom nie je potrebn\u00e9 ve\u013emi sa zaobera\u0165 detailami o tom, ako to v\u0161etko funguje. Sta\u010d\u00ed mu da\u0165 \u00falohy na vysokej \u00farovni a to funguje. <\/li>\n<li>A druh\u00e1 \u00faloha, v ktorej sa najlep\u0161ie prejavuje, je, ke\u010f je potrebn\u00e9 automatizova\u0165 ve\u013ek\u00e9 mno\u017estvo typick\u00fdch \u00faloh. Odstr\u00e1ni mikroz\u00e1\u0165a\u017e pre syst\u00e9mov\u00fdch administr\u00e1torov. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f1cb11156d57f560d0b6c82700ac6ff8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toto je najviac potrebn\u00e9 bu\u010f pre t\u00fdch, ktor\u00ed pr\u00e1ve za\u010d\u00ednaj\u00fa svoju cestu, alebo pre t\u00fdch, ktor\u00ed sa musia venova\u0165 rozsiahlej automatiz\u00e1cii. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/128e7d9ff1ce0c535f98be66aedb1060.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V \u010dom sa teda pr\u00edstup zalo\u017een\u00fd na oper\u00e1toroch l\u00ed\u0161i od in\u00fdch syst\u00e9mov? Predsa len je tu Helm. Ten tie\u017e pom\u00e1ha nain\u0161talova\u0165 ClickHouse, m\u00f4\u017eeme nakresli\u0165 helm chart, ktor\u00e9 dokonca nain\u0161taluj\u00fa cel\u00fd klaster ClickHouse. Ak\u00fd je potom rozdiel medzi oper\u00e1torom a napr\u00edklad Helm?<\/p>\n<p><\/p>\n<p>Hlavn\u00fd fundament\u00e1lny rozdiel spo\u010d\u00edva v tom, \u017ee Helm je spr\u00e1va bal\u00ed\u010dkov, zatia\u013e \u010do oper\u00e1tor ide \u010falej. Zabezpe\u010duje cel\u00fd \u017eivotn\u00fd cyklus. Nielen in\u0161tal\u00e1ciu, ale aj ka\u017edodenn\u00e9 \u00falohy, ktor\u00e9 zah\u0155\u0148aj\u00fa \u0161k\u00e1lovanie, shardovanie, t. j. v\u0161etko, \u010do je potrebn\u00e9 vykon\u00e1va\u0165 v priebehu \u017eivotn\u00e9ho cyklu (ak je potrebn\u00e9, tak aj vymaz\u00e1vanie) \u2013 to v\u0161etko rie\u0161i oper\u00e1tor. Sna\u017e\u00ed sa automatizova\u0165 a spravova\u0165 cel\u00fd \u017eivotn\u00fd cyklus softv\u00e9ru. V tom spo\u010d\u00edva jeho fundament\u00e1lny rozdiel od ostatn\u00fdch dostupn\u00fdch rie\u0161en\u00ed. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e26b57c8caf8437f683d7afbfa127ebd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toto bola \u00favodn\u00e1 \u010das\u0165, po\u010fme \u010falej. <\/p>\n<p><\/p>\n<p>Ako budujeme svoj oper\u00e1tor? Sna\u017e\u00edme sa pristupova\u0165 k ot\u00e1zke, aby sme spravovali klaster ClickHouse ako jeden zdroj. <\/p>\n<p><\/p>\n<p>Na \u013eavej strane obr\u00e1zku m\u00e1me vstupn\u00e9 d\u00e1ta. Je to YAML so \u0161pecifik\u00e1ciou klastru, ktor\u00fd je klasicky pren\u00e1\u0161an\u00fd cez kubectl do Kubernetes. Tam oper\u00e1tor zachyt\u00ed d\u00e1ta, vykon\u00e1 svoju m\u00e1giu. A na v\u00fdstupe dostaneme tak\u00fato sch\u00e9mu. Toto je implement\u00e1cia ClickHouse v Kubernetes.<\/p>\n<p><\/p>\n<p>A \u010falej budeme pomaly pozera\u0165, ako presne oper\u00e1tor funguje, ak\u00e9 typick\u00e9 \u00falohy sa daj\u00fa rie\u0161i\u0165. Pozrieme sa iba na typick\u00e9 \u00falohy, preto\u017ee m\u00e1me obmedzen\u00fd \u010das. A nebude sa rozpr\u00e1va\u0165 o v\u0161etkom, \u010do oper\u00e1tor dok\u00e1\u017ee vyrie\u0161i\u0165. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/b40401931b58988058419d4495dbb1bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po\u010fme vych\u00e1dza\u0165 z praxe. N\u00e1\u0161 projekt je \u00faplne open source, tak\u017ee si m\u00f4\u017eete pozrie\u0165 na GitHub, ako funguje. A je mo\u017en\u00e9 vych\u00e1dza\u0165 z \u00favah, ak chcete jednoducho spusti\u0165, tak s Quick Start Guide m\u00f4\u017eete za\u010d\u00edna\u0165.<\/p>\n<p><\/p>\n<p>Ak sa chcete podrobnej\u0161ie zaobera\u0165, sna\u017e\u00edme sa udr\u017eiava\u0165 dokument\u00e1ciu v relat\u00edvne slu\u0161nom stave. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9414d7c3aa94b6ad999e150f0ac25a97.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po\u010fme za\u010da\u0165 s praktickou \u00falohou. Prv\u00e1 \u00faloha, ktor\u00fa v\u0161etci chceme za\u010da\u0165, je spusti\u0165 prv\u00fd pr\u00edklad nejak\u00fdm sp\u00f4sobom. Ako spusti\u0165 ClickHouse pomocou oper\u00e1tora, aj ke\u010f ve\u013emi nevieme, ako funguje? P\u00ed\u0161eme manifest, preto\u017ee v\u0161etka komunik\u00e1cia s k8s je cez manifesty.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/3e97cd235827460693ed95fb3598d31d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tu je tak\u00fd zlo\u017eit\u00fd manifest. To, \u010do m\u00e1me zv\u00fdraznen\u00e9 \u010dervenou, je to, na \u010dom si treba da\u0165 pozor. Pros\u00edme oper\u00e1tora, aby vytvoril klaster s n\u00e1zvom demo.<\/p>\n<p><\/p>\n<p>Toto s\u00fa zatia\u013e z\u00e1kladn\u00e9 pr\u00edklady. Storage e\u0161te nie je pop\u00edsan\u00fd, ale k storage sa vr\u00e1time o chv\u00ed\u013eu. Zatia\u013e budeme pozorova\u0165 v\u00fdvoj klastru v dynamike.<\/p>\n<p><\/p>\n<p>Vytvorili sme tento manifest. Pod\u00e1vame ho n\u00e1\u0161mu oper\u00e1torovi. On na tom pracoval, spravil m\u00e1giu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/502e64fbe6ed7d04b2aecb7d51abc7f9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pozrieme sa do konzoly. Zauj\u00edmav\u00e9 s\u00fa tri komponenty \u2013 Pod, dva slu\u017eby a StatefulSet.<\/p>\n<p><\/p>\n<p>Oper\u00e1tor vykonal svoju pr\u00e1cu a m\u00f4\u017eeme si pozrie\u0165, \u010do konkr\u00e9tne vytvoril. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/67faf120e21e5113680ccff9c71b00f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vytv\u00e1ra pribli\u017ene tak\u00fato sch\u00e9mu. M\u00e1me StatefulSet, Pod, ConfigMap pre ka\u017ed\u00fa replik\u00e1ciu, ConfigMap pre cel\u00fd klaster. Ur\u010dite aj slu\u017eby ako vstupn\u00e9 body do klastru. <\/p>\n<p><\/p>\n<p>Slu\u017eby s\u00fa centr\u00e1lny Load Balancer Service a m\u00f4\u017eeme ma\u0165 aj pre ka\u017ed\u00fa replik\u00e1ciu, pre ka\u017ed\u00fd shard. <\/p>\n<p><\/p>\n<p>Takto vyzer\u00e1 n\u00e1\u0161 z\u00e1kladn\u00fd klaster. Je z jednej jedinej nody. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f235ada45ee58b517c0e041f795ae122.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ideme \u010falej, budeme to zlo\u017eitova\u0165. Mus\u00edme shardova\u0165 klaster.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/992836a00434c64fb4616c1c4cc4df97.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na\u0161e \u00falohy rast\u00fa, za\u010d\u00edna dynamika. Chceme prida\u0165 shard. Sledujeme v\u00fdvoj. Men\u00edme na\u0161u \u0161pecifik\u00e1ciu. Uv\u00e1dzame, \u017ee chceme dva shardy. <\/p>\n<p><\/p>\n<p>Toto je ten ist\u00fd s\u00fabor, ktor\u00fd sa dynamicky vyv\u00edja s rastom syst\u00e9mu. Storage nie je, storage bude \u010falej rozobrat\u00fd, to je samostatn\u00e1 t\u00e9ma.<\/p>\n<p><\/p>\n<p>Pod\u00e1vame YAML oper\u00e1torovi a sledujeme, \u010do sa deje. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8ddb5845cae160098470208f51b5da7c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oper\u00e1tor sa zamyslel a vytvoril nasleduj\u00face entity. U\u017e m\u00e1me dva Pod, tri slu\u017eby a, ne\u010dakane, 2 StatefulSety. Pre\u010do 2 StatefulSety?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/26eb734ff1a195de2ceaab842b472ee4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na sch\u00e9me to vyzeralo takto \u2013 to je na\u0161e po\u010diato\u010dn\u00e9 \u0161t\u00e1dium, ke\u010f bol iba jeden pod.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/657838b0d378121fdd66ad3ff8168600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Stalo sa to takto. Zatia\u013e je v\u0161etko jednoduch\u00e9, duplicovalo sa to. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f039a7046f1c56fbdad6b5a26a519b10.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pre\u010do sa StatefulSet stal dvomi? Tu je potrebn\u00e9 odvr\u00e1ti\u0165 sa a prediskutova\u0165 ot\u00e1zku, ako sa v Kubernetes spravuj\u00fa Pod-y.<\/p>\n<p><\/p>\n<p>Existuje tak\u00fd objekt pod n\u00e1zvom StatefulSet, ktor\u00fd umo\u017e\u0148uje vytvori\u0165 s\u00fabor Pod-ov z \u0161abl\u00f3ny. K\u013e\u00fa\u010dov\u00fd faktor je Template. A v jednom StatefulSet je mo\u017en\u00e9 spusti\u0165 ve\u013ea Pod-ov z jedn\u00e9ho \u0161abl\u00f3nu. K\u013e\u00fa\u010dovou fr\u00e1zou je tu 'z jedn\u00e9ho \u0161abl\u00f3nu ve\u013ea Pod-ov'.<\/p>\n<p><\/p>\n<p>A ve\u013ek\u00fdm poku\u0161en\u00edm bolo cel\u00fd klaster zrealizova\u0165 zabalen\u00fd do jedn\u00e9ho StatefulSet. To bude fungova\u0165, v tom nie s\u00fa \u017eiadne probl\u00e9my. Ale je tu jeden detail. Ak chceme zostavi\u0165 heterog\u00e9nny klaster, t. j. z nieko\u013ek\u00fdch verzi\u00ed ClickHouse, za\u010d\u00ednaj\u00fa sa objavova\u0165 ot\u00e1zky. \u00c1no, StatefulSet m\u00f4\u017ee vykona\u0165 rolling update, \u00e1no, m\u00f4\u017eete aplikova\u0165 nov\u00fa verziu, vysvetli\u0165, \u017ee je potrebn\u00e9 vysk\u00fa\u0161a\u0165 maxim\u00e1lne to\u013eko uzlov naraz.<\/p>\n<p><\/p>\n<p>Ale ak extrapolujeme \u00falohu a povieme, \u017ee chceme vytvori\u0165 \u00faplne heterog\u00e9nny klaster a nechceme prejs\u0165 zo starej verzie na nov\u00fa prostredn\u00edctvom rolling update, ale jednoducho chceme vytvori\u0165 heterog\u00e9nny klaster, \u010do sa t\u00fdka r\u00f4znych verzi\u00ed ClickHouse, ako aj r\u00f4znych storage. Chceme, napr\u00edklad, niektor\u00e9 repliky umiestni\u0165 na samostatn\u00e9 disky, na pomal\u00e9 disky, celkovo chceme \u00faplne postavi\u0165 heterog\u00e9nny klaster. A kv\u00f4li tomu, \u017ee StatefulSet vytv\u00e1ra z jedn\u00e9ho \u0161abl\u00f3nov\u00e9ho \u0161tandardizovan\u00e9ho rie\u0161enia, nie je mo\u017en\u00e9 to dosiahnu\u0165. <\/p>\n<p><\/p>\n<p>Po ur\u010ditom zva\u017eovan\u00ed sme sa rozhodli, \u017ee to urob\u00edme takto. Ka\u017ed\u00e1 replika je vo svojom StatefulSet. Toto rie\u0161enie m\u00e1 niektor\u00e9 nedostatky, ale v praxi v\u0161etko plne inkapsuluje oper\u00e1tor. A m\u00e1 to mno\u017estvo v\u00fdhod. M\u00f4\u017eeme postavi\u0165 presne tak\u00fd klaster, ak\u00fd chceme, napr\u00edklad \u00faplne heterog\u00e9nny. Preto v klastri, kde m\u00e1me dva shard-y s jednou replikou, budeme ma\u0165 2 StatefulSet-y a 2 Pod-y pr\u00e1ve preto, \u017ee sme si zvolili tento pr\u00edstup kv\u00f4li predch\u00e1dzaj\u00facim d\u00f4vodom na mo\u017enos\u0165 postavi\u0165 heterog\u00e9nny klaster. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b7ae92a545f9bb6cc5f0136df87207f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vr\u00e1\u0165me sa k praktick\u00fdm \u00faloh\u00e1m. V na\u0161om klastri je potrebn\u00e9 nastavi\u0165 pou\u017e\u00edvate\u013eov, t. j. je potrebn\u00e9 vykon\u00e1va\u0165 nejak\u00e9 konfigurovanie ClickHouse v Kubernetes. Oper\u00e1tor poskytuje v\u0161etky mo\u017enosti na to. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6a65aa78293c0b40230cf24efc58e55a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00f4\u017eete priamo v YAML nap\u00edsa\u0165 to, \u010do chceme. V\u0161etky konfigura\u010dn\u00e9 mo\u017enosti sa priamo mapuj\u00fa z tohto YAML do konfigur\u00e1ci\u00ed ClickHouse, ktor\u00e9 sa potom rozlo\u017e\u00ed po celom klastri.<\/p>\n<p><\/p>\n<p>M\u00f4\u017eete to nap\u00edsa\u0165 aj takto. Toto je iba pr\u00edklad. Heslo m\u00f4\u017ee by\u0165 za\u0161ifrovan\u00e9. Podporuj\u00fa sa \u00faplne v\u0161etky konfigura\u010dn\u00e9 mo\u017enosti ClickHouse. Tu je iba pr\u00edklad. <\/p>\n<p><\/p>\n<p>Konfigur\u00e1cia v klastri sa roz\u0161iruje ako ConfigMap. V praxi sa aktualiz\u00e1cia ConfigMap neuskuto\u010d\u0148uje okam\u017eite, preto ak je klaster ve\u013ek\u00fd, proces pos\u00favania konfigur\u00e1cie trv\u00e1 nejak\u00fd \u010das. Ale v\u0161etko to je ve\u013emi pohodln\u00e9 na prev\u00e1dzku.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2e42d19d7a558e3b8d4bbb51fe5bd08b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zlo\u017e\u00edme \u00falohu. Klaster sa rozv\u00edja. Chceme replikova\u0165 d\u00e1ta. To znamen\u00e1, \u017ee u\u017e m\u00e1me dva shard-y, po jednej replik\u00e1cii, nastaven\u00ed pou\u017e\u00edvate\u013eov. Rasteme a chceme sa zaobera\u0165 replik\u00e1ciou.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4c97e5e6ca9cb66d3a94fb8cfe610186.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co potrebujeme na replik\u00e1ciu? <\/p>\n<p><\/p>\n<p>Potrebujeme ZooKeeper. V ClickHouse je replik\u00e1cia postaven\u00e1 s pou\u017eit\u00edm ZooKeeper. ZooKeeper je potrebn\u00fd na to, aby r\u00f4zne repliky ClickHouse mali konsenzus o tom, ak\u00e9 bloky d\u00e1t s\u00fa na ktorom ClickHouse. <\/p>\n<p><\/p>\n<p>M\u00f4\u017eeme pou\u017ei\u0165 ak\u00fdko\u013evek ZooKeeper. Ak m\u00e1 podnik extern\u00fd ZooKeeper, m\u00f4\u017ee sa pou\u017ei\u0165. Ak nie, m\u00f4\u017eeme si ho nain\u0161talova\u0165 z n\u00e1\u0161ho repozit\u00e1ra. Existuje in\u0161tal\u00e1tor, ktor\u00fd to v\u0161etko zjednodu\u0161uje. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6cc40951a19b982abf578836edf569d3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A sch\u00e9ma interakcie cel\u00e9ho syst\u00e9mu je tak\u00e1to. M\u00e1me Kubernetes ako platformu. Na \u0148om be\u017e\u00ed oper\u00e1tor ClickHouse. ZooKeeper som zn\u00e1zornil tu. A oper\u00e1tor interaguje s ClickHouse aj so ZooKeeper. Teda doch\u00e1dza k interakcii. <\/p>\n<p><\/p>\n<p>A v\u0161etko toto je potrebn\u00e9 na to, aby ClickHouse \u00faspe\u0161ne replikoval d\u00e1ta v k8s.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4fc37aee850acd20517fa3d7562f0165.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po\u010fme sa teraz pozrie\u0165 na samotn\u00fa \u00falohu, na to, ako bude vyzera\u0165 manifest pre replik\u00e1ciu.<\/p>\n<p><\/p>\n<p>K n\u00e1\u0161mu manifestu prid\u00e1vame dve sekcie. Prv\u00e1 \u2013 to, kde z\u00edskava\u0165 ZooKeeper, ktor\u00fd m\u00f4\u017ee by\u0165 bu\u010f vn\u00fatri Kubernetes, alebo extern\u00fd. Je to jednoduch\u00fd popis. A objedn\u00e1vame repliky. T. j. chceme dve repliky. Nakoniec by malo by\u0165 na v\u00fdstupe 4 pod-y. O \u00falo\u017eisku vieme, vr\u00e1ti sa to nesk\u00f4r. \u00dalo\u017eisko \u2013 to je samostatn\u00e1 piese\u0148. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/afb8c974d0587a4ad87d6ba36bbe5e3b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bolo to takto.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/909ffd258dbce718ddf529a1a753de6f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>St\u00e1va sa to takto. Prid\u00e1vaj\u00fa sa repliky. 4. sa nezmestilo, ver\u00edme, \u017ee ich m\u00f4\u017ee by\u0165 ve\u013ea. A po boku sa prid\u00e1va ZooKeeper. Sch\u00e9my sa zlo\u017euj\u00fa. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c33b37fc7fc72f51276e5e98b9ec2134.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nastal \u010das prida\u0165 \u010fal\u0161iu \u00falohu. Budeme prid\u00e1va\u0165 trval\u00e9 \u00falo\u017eisko. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f28d14901a713eca413a52ec6ea21ac5.jpeg\" style=\"display:block;margin: 0 auto;\" \/>K trval\u00e9mu \u00falo\u017eisku m\u00e1me r\u00f4zne mo\u017enosti realiz\u00e1cie.<\/p>\n<p><\/p>\n<p>V pr\u00edpade, \u017ee sa realizujeme v cloudovom poskytovate\u013eovi, ako je Amazon alebo Google, je ve\u013ek\u00e9 poku\u0161enie vyu\u017ei\u0165 cloudov\u00e9 \u00falo\u017eisko. Je to ve\u013emi pohodln\u00e9, je to dobr\u00e9. <\/p>\n<p><\/p>\n<p>A je tu druh\u00e1 mo\u017enos\u0165. To je pre lok\u00e1lne \u00falo\u017eisko, ke\u010f m\u00e1me lok\u00e1lne disky na ka\u017edej n\u00f3d\u011b. T\u00e1to mo\u017enos\u0165 je ove\u013ea zlo\u017eitej\u0161ia na realiz\u00e1ciu, ale je v\u00fdkonnej\u0161ia. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/483ee5c08b62e987620bf54fd32a44b4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po\u010fme sa pozrie\u0165, \u010do m\u00e1me oh\u013eadom cloudov\u00e9ho \u00falo\u017eiska.<\/p>\n<p><\/p>\n<p>Existuj\u00fa v\u00fdhody. Je to ve\u013emi jednoduch\u00e9 na konfigur\u00e1ciu. Jednoducho objedn\u00e1vame od cloudov\u00e9ho poskytovate\u013ea, aby n\u00e1m poskytol \u00falo\u017eisko takej kapacity, tak\u00e9ho typu. Typy s\u00fa definovan\u00e9 poskytovate\u013emi samostatne. <\/p>\n<p><\/p>\n<p>Existuje v\u0161ak nev\u00fdhoda. Pre niekoho je to problematick\u00e9, in\u00e9ho by to nemalo ve\u013emi tr\u00e1pi\u0165. Samozrejme, ur\u010dit\u00e9 v\u00fdkonnostn\u00e9 \u00faskalia sa tam vyskytn\u00fa. Je to ve\u013emi pohodln\u00e9 na pr\u00e1cu a spo\u013eahliv\u00e9, ale m\u00f4\u017eu sa objavi\u0165 potenci\u00e1lne poklesy v\u00fdkonnosti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8e82430b64477f91640078ff4eacb47e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A ke\u010f\u017ee sa ClickHouse zameriava pr\u00e1ve na v\u00fdkonnos\u0165, d\u00e1 sa poveda\u0165, \u017ee vyu\u017e\u00edva v\u0161etko, \u010do je mo\u017en\u00e9, a preto sa mnoh\u00ed klienti sna\u017eia dosiahnu\u0165 maxim\u00e1lnu v\u00fdkonnos\u0165.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8638fe37b848a98ce8326218d368baa3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A aby sme dosiahli maximum, potrebujeme lok\u00e1lne \u00falo\u017eisko.<\/p>\n<p><\/p>\n<p>Kubernetes poskytuje tri abstrakcie pre vyu\u017eitie lok\u00e1lneho \u00falo\u017eiska v Kubernetes. Tieto s\u00fa: <\/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>Pozrime sa na to, \u010d\u00edm sa l\u00ed\u0161ia a \u010d\u00edm s\u00fa si podobn\u00e9. <\/p>\n<p><\/p>\n<p>Po prv\u00e9, vo v\u0161etk\u00fdch troch pr\u00edstupoch m\u00e1me \u00falo\u017eisko \u2013 s\u00fa to lok\u00e1lne disky, ktor\u00e9 sa nach\u00e1dzaj\u00fa na tej istej fyzickej uzle k8s. Ale medzi nimi existuj\u00fa ur\u010dit\u00e9 rozdiely.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/79afb620a0c9a1552b47240b405fedc9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za\u010dneme s najjednoduch\u0161\u00edm, teda s emptyDir. \u010co to vlastne znamen\u00e1 v praxi? Po\u017eiadame na\u0161u \u0161pecifik\u00e1ciu, aby n\u00e1m syst\u00e9m kontajneriz\u00e1cie (\u010dasto je to Docker) poskytol pr\u00edstup k prie\u010dinku na lok\u00e1lnom disku.<\/p>\n<p><\/p>\n<p>V praxi Docker niekde vo svojich vlastn\u00fdch cest\u00e1ch vytv\u00e1ra do\u010dasn\u00fd prie\u010dinok, naz\u00fdva ho dlh\u00fdm hashom a poskytuje rozhranie pre pr\u00edstup k nemu. <\/p>\n<p><\/p>\n<p>Ako to bude fungova\u0165 z h\u013eadiska v\u00fdkonnosti? Fungova\u0165 to bude r\u00fdchlos\u0165ou lok\u00e1lneho disku, teda m\u00e1te \u00fapln\u00fd pr\u00edstup k svojmu disku. <\/p>\n<p><\/p>\n<p>Ale t\u00e1to met\u00f3da m\u00e1 svoju nev\u00fdhodu. Persistentn\u00e9 \u00falo\u017eisko v tomto pr\u00edpade je dos\u0165 problematick\u00e9. Pri prvom pohybe Dockera s kontajnermi sa persistentn\u00e9 \u00fadaje stratia. Ak by Kubernetes chcel z nejak\u00e9ho d\u00f4vodu premiestni\u0165 tento Pod na in\u00fd disk, \u00fadaje sa strat\u00ed. <\/p>\n<p><\/p>\n<p>Tento pr\u00edstup je dobr\u00fd pre testovanie, preto\u017ee r\u00fdchlos\u0165 u\u017e ukazuje slu\u0161n\u00e9 hodnoty, ale na nie\u010do v\u00e1\u017enej\u0161ie tento variant nevyhovuje. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0b60f80fc9ea0e2c1820021bcd9e1382.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Preto existuje druh\u00fd pr\u00edstup. T\u00fdm je hostPath. Ak sa pozrieme na predch\u00e1dzaj\u00faci sn\u00edmok a tento, uvid\u00edme jedin\u00e9 rozl\u00ed\u0161enie. N\u00e1\u0161 prie\u010dinok sa presunul z Dockera priamo na uzol Kubernetes. Tu je to jednoduch\u0161ie. Priamo zad\u00e1vame cestu v lok\u00e1lnom s\u00faborovom syst\u00e9me, kde chceme ulo\u017ei\u0165 svoje d\u00e1ta. <\/p>\n<p><\/p>\n<p>Tento sp\u00f4sob m\u00e1 svoje v\u00fdhody. Je to u\u017e skuto\u010dn\u00e9 persistentn\u00e9 \u00falo\u017eisko, a to klasick\u00e9. \u00dadaje bud\u00fa na disku ulo\u017een\u00e9 na ur\u010ditej adrese. <\/p>\n<p><\/p>\n<p>Existuj\u00fa aj nev\u00fdhody. Je to zlo\u017eitost spr\u00e1vy. N\u00e1\u0161 Kubernetes m\u00f4\u017ee chcie\u0165 presun\u00fa\u0165 Pod na in\u00fa fyzick\u00fa uzol. A tu u\u017e vstupuje do hry DevOps. Ten mus\u00ed celej s\u00fastave spr\u00e1vne vysvetli\u0165, \u017ee tieto pod\u2019 y m\u00f4\u017eeme pres\u00fava\u0165 iba na tak\u00e9 uzly, na ktor\u00fdch m\u00e1\u0161 na t\u00fdchto cest\u00e1ch nie\u010do pripojen\u00e9, a nie viac ako jeden uzol naraz. To je dos\u0165 zlo\u017eit\u00e9. <\/p>\n<p><\/p>\n<p>\u0160peci\u00e1lne na tieto \u00fa\u010dely sme u n\u00e1s v oper\u00e1tora vytvorili \u0161abl\u00f3ny, aby sme cel\u00fa t\u00fato zlo\u017eitos\u0165 skryli. A mohli by sme jednoducho poveda\u0165: \"Chcem, aby som mal jeden instance ClickHouse na ka\u017ed\u00fa fyzick\u00fa uzol a na takejto ceste.\" <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f64c19bccc8b187d6af112eda896b25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ale t\u00e1to potreba je potrebn\u00e1 nielen n\u00e1m, preto\u017ee p\u00e1ni z Kubernetes tie\u017e ch\u00e1pu, \u017ee \u013eudia chc\u00fa ma\u0165 pr\u00edstup k fyzick\u00fdm diskom, a preto poskytuj\u00fa tret\u00ed \u00farove\u0148.<\/p>\n<p><\/p>\n<p>Naz\u00fdva sa local. Rozdiel od predch\u00e1dzaj\u00faceho sn\u00edmku prakticky nie je. Iba predt\u00fdm sme museli ru\u010dne realizova\u0165, \u017ee tieto pod\u2019 y nemo\u017eno pren\u00e1\u0161a\u0165 z uzla na uzol, preto\u017ee musia by\u0165 pripojen\u00e9 na takejto ceste k lok\u00e1lnemu fyzick\u00e9mu disku, a teraz sa v\u0161etky tieto vedomosti inkapsuluj\u00fa do samotn\u00e9ho Kubernetes. A konfigur\u00e1cia sa st\u00e1va ove\u013ea jednoduch\u0161ou.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/140c43be34dd7015c0bf4cfd0a0bb384.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vr\u00e1\u0165me sa k na\u0161ej praktickej \u00falohe. Vr\u00e1\u0165me sa k YAML \u0161abl\u00f3ne. Tu m\u00e1me skuto\u010dn\u00fd storage. Vr\u00e1tili sme sa k tomu. Definujeme klasick\u00fa VolumeClaim \u0161abl\u00f3nu ako v k8s. A popisujeme, ak\u00fd storage chceme.<\/p>\n<p><\/p>\n<p>Potom k8s po\u017eiada o storage. Pride\u013euje n\u00e1m ho v StatefulSet. A nakoniec to bude k dispoz\u00edcii ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/960e666486ed09cebd83235d43f83970.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mali sme tak\u00fato sch\u00e9mu. N\u00e1\u0161 Persistent Storage bol \u010derven\u00fd, \u010do akoby nazna\u010dovalo, \u017ee by sa mal realizova\u0165. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a989df489e3a9fef6a4fbf7b93c489a6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A st\u00e1va sa zelen\u00fdm. Teraz je sch\u00e9ma clustera ClickHouse na k8s \u00faplne finalizovan\u00e1. M\u00e1me shard, repliky, ZooKeeper, m\u00e1me skuto\u010dn\u00fd Persistent, ktor\u00fd bol implementovan\u00fd tak\u00fdm alebo onak\u00fdm sp\u00f4sobom. Sch\u00e9ma je u\u017e plne funk\u010dn\u00e1. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c409ee5da6309a67904394d968ed4906.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokra\u010dujeme \u010falej. Na\u0161a klaster sa rozv\u00edja. A Alexej sa sna\u017e\u00ed a vyd\u00e1va nov\u00fa verziu ClickHouse.<\/p>\n<p><\/p>\n<p>Vznik\u00e1 praktick\u00e1 \u00faloha - otestova\u0165 nov\u00fa verziu ClickHouse na na\u0161om klastri. A samozrejme, nechceme ho nasadi\u0165 cel\u00fd, chceme niekde v zadnom rohu nain\u0161talova\u0165 nov\u00fa verziu na jednu replik\u00e1ciu, a mo\u017eno nie jednu nov\u00fa verziu, ale rovno dve, preto\u017ee vych\u00e1dzaj\u00fa celkom \u010dasto. <\/p>\n<p><\/p>\n<p>\u010co m\u00f4\u017eeme poveda\u0165 o tomto?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48ed52d393d977d0cfaa9320bd02ed1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tu m\u00e1me presne tak\u00fato mo\u017enos\u0165. Ide o \u0161abl\u00f3ny podov. M\u00f4\u017eeme si ich prisp\u00f4sobi\u0165, n\u00e1\u0161 oper\u00e1tor \u00faplne umo\u017e\u0148uje vytvori\u0165 heterog\u00e9nny kluster. T.j. konfigurova\u0165, za\u010d\u00ednaj\u00fac od v\u0161etk\u00fdch repl\u00edk v skupine, kon\u010diac s ka\u017edou osobnou replikou t\u00fdm, ak\u00fa verziu chceme pre ClickHouse, ak\u00fa verziu chceme pre \u00falo\u017eisko. M\u00f4\u017eeme \u00faplne nakonfigurova\u0165 kluster s takou konfigur\u00e1ciou, ak\u00fa potrebujeme. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4949ecd8119cb4ec0f4bad9bf27fa74e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tro\u0161ku sa budeme hlb\u0161ie zaobera\u0165 touto problematikou. Predt\u00fdm sme hovorili o tom, ako funguje ClickHouse-operator vo vz\u0165ahu k \u0161pecifik\u00e1m ClickHouse.<\/p>\n<p><\/p>\n<p>Teraz by som chcel poveda\u0165 p\u00e1r slov o tom, ako funguje vlastne ak\u00fdko\u013evek oper\u00e1tor a ako interaguje s K8s.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ca9c2a23c54b2a81ac0a8bba88d5e65.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Najprv si pozrime interakciu s K8s. \u010co sa deje, ke\u010f vykon\u00e1me kubectl apply? Na\u0161e objekty sa objavia cez API v etcd. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b9eaedeb0f34d10398ba0187f09fef9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Napr\u00edklad z\u00e1kladn\u00e9 objekty Kubernetes: pod, StatefulSet, slu\u017eba a tak \u010falej v zozname. <\/p>\n<p><\/p>\n<p>Pri tom sa e\u0161te ni\u010d fyzick\u00e9ho nedeje. Tieto objekty je potrebn\u00e9 materializova\u0165 v klastri. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/3c49dc1b0067347d5fc415ef9b87642d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na to sa objavuje kontrol\u00e9r. Kontrol\u00e9r je \u0161peci\u00e1lna komponenta k8s, ktor\u00e1 vie materializova\u0165 tieto popisy. Vie, ako a \u010do treba urobi\u0165 fyzicky. Vie, ako spusti\u0165 kontajnery, \u010do je potrebn\u00e9 nastavi\u0165, aby server fungoval. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/d951eb0f7bacf519566b0ef6cf9bc100.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A on materializuje na\u0161e objekty v K8s.<\/p>\n<p><\/p>\n<p>Ale chceme operova\u0165 nielen s podmi, StatefulSetmi, chceme vytvori\u0165 ClickHouseInstallation, t.j. objekt typu ClickHouse, aby sme s n\u00edm mohli operova\u0165 ako s celkom. Zatia\u013e tak\u00e1 mo\u017enos\u0165 nie je. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1594921ac5dd9384ce81ceae92f5cda9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ale K8s m\u00e1 \u010fal\u0161iu pr\u00edjemn\u00fa funkciu. Chceme, aby sa n\u00e1m objavila niekde tak\u00e1to zlo\u017eit\u00e1 entita, ktor\u00e1 by bola zostaven\u00e1 z podov a StatefulSet n\u00e1\u0161ho klastra. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/04f86706f506fa91e365d45537dd9def.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A \u010do je potrebn\u00e9 urobi\u0165? Po prv\u00e9, na sc\u00e9nu vstupuje Custom Resource Definition. \u010co to vlastne je? Je to popis pre K8s, \u017ee bude ma\u0165 e\u0161te jeden typ d\u00e1t, \u017ee chceme k podu, StatefulSet prida\u0165 vlastn\u00fd zdroj, ktor\u00fd bude zlo\u017eit\u00fd vo vn\u00fatri. Je to popis \u0161trukt\u00fary d\u00e1t. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f02ae12ef3ab5db974234b14e38792ac.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tento popis tie\u017e posielame cez kubectl apply. Kubernetes ho s rados\u0165ou prijal. <\/p>\n<p><\/p>\n<p>A teraz m\u00e1me v \u00falo\u017eisku, pri objekte v etcd mo\u017enos\u0165 zap\u00edsa\u0165 vlastn\u00fd zdroj s n\u00e1zvom ClickHouseInstallation.<\/p>\n<p><\/p>\n<p>Ale zatia\u013e sa ni\u010d \u010falej nestane. T.j. ak teraz vytvor\u00edme YAML s\u00fabor, ktor\u00fd sme posudzovali so z\u00e1znamom shardov, replik a povieme 'kubectl apply', tak Kubernetes ho prijme, ulo\u017e\u00ed do etcd a povie: 'Skvel\u00e9, ale neviem, \u010do s t\u00fdm robi\u0165. Ako spravova\u0165 ClickHouseInstallation neviem'. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7c2f9f3f81b83c987a3bd72a881d0d91.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Potrebujeme teda niekoho, kto pom\u00f4\u017ee Kubernetes spravova\u0165 nov\u00fd typ d\u00e1t. Na\u013eavo m\u00e1me \u0161tandardn\u00fd kontrol\u00e9r Kubernetes, ktor\u00fd pracuje s be\u017en\u00fdmi typmi d\u00e1t. A napravo by sa mal objavi\u0165 vlastn\u00fd kontrol\u00e9r, ktor\u00fd vie pracova\u0165 s vlastn\u00fdmi typmi d\u00e1t. <\/p>\n<p><\/p>\n<p>A in\u00e1\u010d sa naz\u00fdva oper\u00e1tor. \u0160peci\u00e1lne som ho vy\u010dlenil mimo Kubernetes, preto\u017ee m\u00f4\u017ee be\u017ea\u0165 aj mimo K8s. Naj\u010dastej\u0161ie samozrejme v\u0161etky oper\u00e1tory be\u017eia v Kubernetes, ale ni\u010d nebr\u00e1ni tomu, aby bol vonku, preto je tu \u0161peci\u00e1lne vy\u010dlenen\u00fd von. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7aa3a1b67d0def5ba752dff56baeebbf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A u\u017e vlastn\u00fd kontrol\u00e9r, teda oper\u00e1tor, interaguje s Kubernetes cez API. U\u017e\u00edva interakciu s API. A u\u017e vie, ako z vlastn\u00e9ho zdroja vytvori\u0165 zlo\u017eit\u00fa sch\u00e9mu, ktor\u00fa chceme vytvori\u0165. T\u00fdmto sa zaober\u00e1 oper\u00e1tor. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a5f773ddc3663f24d5379955da9c3037.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ako funguje oper\u00e1tor? Pozrime sa na prav\u00fa \u010das\u0165, aby sme zistili, ako to rob\u00ed. Zist\u00edme, ako oper\u00e1tor v\u0161etko to materializuje a ak\u00e9 je \u010fal\u0161ie prepojenie s K8s.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/08a8d8dbcb35117a0eb3320589c6ff8d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oper\u00e1tor je program. Je orientovan\u00fd na udalosti. Oper\u00e1tor sa pomocou Kubernetes API prihl\u00e1si na udalosti. V Kubernetes API s\u00fa vstupn\u00e9 body, kde sa m\u00f4\u017eete prihl\u00e1si\u0165 na udalosti. A ak sa nie\u010do v K8s zmen\u00ed, Kubernetes posiela udalosti v\u0161etk\u00fdm, ktor\u00ed maj\u00fa z\u00e1ujem, t.j. kto sa prihl\u00e1sil na tento bod API, ten dostane upozornenia.<\/p>\n<p><\/p>\n<p>Oper\u00e1tor sa prihlasuje na udalosti a mus\u00ed na ne nejak reagova\u0165. Jeho \u00falohou je reagova\u0165 na vznikaj\u00face udalosti. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f0664a4151e6e7f6f8575a3e54372e9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Udalosti sa generuj\u00fa niektor\u00fdmi aktualiz\u00e1ciami. Prich\u00e1dza n\u00e1\u0161 YAML s\u00fabor s popisom ClickHouseInstallation. Pomocou kubectl apply sa dostal do etcd. Tam nastala udalos\u0165, ktor\u00e1 sa dostala do ClickHouse-operatora. Oper\u00e1tor dostal tento popis a mus\u00ed nie\u010do robi\u0165. Ak pri\u0161la aktualiz\u00e1cia na objekt ClickHouseInstallation, je potrebn\u00e9 aktualizova\u0165 klaster. A \u00falohou oper\u00e1tora je aktualizova\u0165 klaster. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0952bdd391a72aa15bf66af4ce69f4af.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co rob\u00ed? Po prv\u00e9, je potrebn\u00e9 zostavi\u0165 pl\u00e1n akci\u00ed, \u010do pl\u00e1nujeme urobi\u0165 s t\u00fdmto aktualiz\u00e1ciou. Aktualiz\u00e1cie m\u00f4\u017eu by\u0165 ve\u013emi mal\u00e9, t.j. mal\u00e9 v YAML vykonan\u00ed, ale m\u00f4\u017eu ma\u0165 za n\u00e1sledok ve\u013emi ve\u013ek\u00e9 zmeny v klastre. Preto oper\u00e1tor vytv\u00e1ra pl\u00e1n a potom sa ho dr\u017e\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/79caaa43b6fd9f3e2eb1afe44ecb2df9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za\u010d\u00edna pod\u013ea tohto pl\u00e1nu vytv\u00e1ra\u0165 t\u00fato \u0161trukt\u00faru dovn\u00fatra, aby materializoval pod'y, slu\u017eby, t.j. robi\u0165 to, \u010do je jeho hlavnou \u00falohou. Je to ako budova\u0165 klaster ClickHouse v Kubernetes.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e91576a26d6b758a68ae0b35cbe01897.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teraz sa pozrime na tak\u00fa zauj\u00edmav\u00fa vec. Je to rozdelenie zodpovednosti medzi Kubernetes a oper\u00e1torom, t.j. \u010do rob\u00ed Kubernetes, \u010do rob\u00ed oper\u00e1tor a ako spolu interaguj\u00fa. <\/p>\n<p><\/p>\n<p>Kubernetes zodpoved\u00e1 za syst\u00e9mov\u00e9 veci, t.j. za z\u00e1kladn\u00fd s\u00fabor objektov, ktor\u00fd sa d\u00e1 interpretova\u0165 ako system-scope. Kubernetes vie, ako spusti\u0165 pod'y, ako re\u0161tartova\u0165 kontajnery, ako robi\u0165 mount volumes, ako pracova\u0165 s ConfigMap, t.j. v\u0161etko, \u010do sa d\u00e1 nazva\u0165 syst\u00e9mom. <\/p>\n<p><\/p>\n<p>Oper\u00e1tori operuj\u00fa v predmetn\u00fdch oblastiach. Ka\u017ed\u00fd oper\u00e1tor je vytvoren\u00fd pre svoju predmetn\u00fa oblas\u0165. My sme vytvorili pre ClickHouse.<\/p>\n<p><\/p>\n<p>A oper\u00e1tor interaguje presne vo v\u00fdrazoch predmetnej oblasti ako prida\u0165 replik\u00e1ciu, vytvori\u0165 sch\u00e9mu, nastavi\u0165 monitorovanie. Vznik\u00e1 tak\u00e9to rozdelenie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9dc07d9c29d5dfd538343aadb751e4c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pozrime sa na praktick\u00fd pr\u00edklad, ako toto rozdelenie zodpovednosti prebieha, ke\u010f vykon\u00e1vame akciu prida\u0165 replik\u00e1ciu. <\/p>\n<p><\/p>\n<p>K oper\u00e1torovi prich\u00e1dza \u00faloha - prida\u0165 replik\u00e1ciu. \u010co oper\u00e1tor rob\u00ed? Oper\u00e1tor vypo\u010d\u00edta, \u017ee je potrebn\u00e9 vytvori\u0165 nov\u00fd StatefulSet, v ktorom treba op\u00edsa\u0165 tak\u00e9to \u0161abl\u00f3ny, volume claim. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7a31f2f76a3bdda87e4bccf0e04fe4a8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u0161etko to priprav\u00ed a \u010falej to odovzd\u00e1 do K8s. Hovor\u00ed, \u017ee potrebuje ConfigMap, StatefulSet, Volume. Kubernetes to spracov\u00e1va. Materializuje z\u00e1kladn\u00e9 jednotky, ktor\u00fdmi operuje. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2be6892234cc12b056962265c13dba07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A \u010falej sa op\u00e4\u0165 anga\u017euje ClickHouse-operator. U\u017e m\u00e1 fyzick\u00fd pod, na ktorom sa d\u00e1 nie\u010do robi\u0165. A ClickHouse-operator op\u00e4\u0165 pracuje vo v\u00fdrazoch predmetnej oblasti. T.j. konkr\u00e9tne ClickHouse, aby zapol replik\u00e1ciu v klastri, treba najprv nastavi\u0165 sch\u00e9mu d\u00e1t, ktor\u00e1 v tomto klastri existuje. A po druh\u00e9, t\u00fato replik\u00e1ciu treba zapoji\u0165 do monitorovania, aby bola dobre sledovate\u013en\u00e1. U\u017e to nastavuje oper\u00e1tor. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/790616342b98b347fa67e0100754c8b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A\u017e potom do procesu vstupuje samotn\u00fd ClickHouse, teda \u010fal\u0161ia vy\u0161\u0161ia entita. Toto je u\u017e datab\u00e1za. M\u00e1 svoj instance, \u010fal\u0161iu nakonfigurovan\u00fa replik\u00e1ciu, ktor\u00e1 je pripraven\u00e1 vst\u00fapi\u0165 do clustra.<\/p>\n<p><\/p>\n<p>Vytv\u00e1ra sa teda dlh\u00fd re\u0165azec vykon\u00e1vania a rozdelenia zodpovednosti pri prid\u00e1van\u00ed repliky.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ec79cfa2b45fadbe25f4d9fe8d2ec5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokra\u010dujeme v na\u0161ich praktick\u00fdch \u00faloh\u00e1ch. Ak u\u017e existuje cluster, m\u00f4\u017eeme vykona\u0165 migr\u00e1ciu konfigur\u00e1cie. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a52aee0d4350b8da00cdb4b525df80ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Urobili sme to tak, \u017ee do existuj\u00faceho xml, ktor\u00e9mu ClickHouse rozumie, m\u00f4\u017eeme prech\u00e1dza\u0165 bez prek\u00e1\u017eok.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/91abb1d3b0a14f2118361403a74e14c1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u00f4\u017eeme vykona\u0165 jemn\u00e9 nastavenie ClickHouse. Pr\u00e1ve zoned deployment \u2013 to je to, o \u010dom som hovoril pri vysvetlen\u00ed hostPath, lok\u00e1lneho \u00falo\u017eiska. To, ako spr\u00e1vne uskuto\u010dni\u0165 zoned deployment.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/fde502f30223e04a918f4fd598c3dd9f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010eal\u0161ou praktickou \u00falohou je monitoring.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4e685fba7883075105c0164a778c51e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ak sa n\u00e1\u0161 cluster men\u00ed, mus\u00edme pravidelne nastavova\u0165 monitoring. <\/p>\n<p><\/p>\n<p>Pozrime sa na sch\u00e9mu. Zelen\u00e9 \u0161\u00edpky sme u\u017e presk\u00famali. Teraz si pozrime \u010derven\u00e9 \u0161\u00edpky. To je to, ako chceme monitorova\u0165 n\u00e1\u0161 cluster. Ako metriky z clustra ClickHouse prech\u00e1dzaj\u00fa do Prometheus a n\u00e1sledne do Grafana.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1210c1423f99d48a20e06e855bf48a72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A ak\u00fd je probl\u00e9m s monitoringom? Pre\u010do je to pova\u017eovan\u00e9 za nejak\u00fd \u00faspech? Probl\u00e9m spo\u010d\u00edva pr\u00e1ve v dynamike. Ke\u010f m\u00e1me jedin\u00fd statick\u00fd cluster, m\u00f4\u017eeme nastavi\u0165 monitoring raz a viac sa t\u00fdm nezaobera\u0165.<\/p>\n<p><\/p>\n<p>Ale ak m\u00e1me ve\u013ea clusterov, alebo sa neust\u00e1le nie\u010do men\u00ed, proces je dynamick\u00fd. Neust\u00e1le prekonfigurovanie monitoringu je strata zdrojov a \u010dasu, teda aj proste len lenivos\u0165. Mus\u00ed sa to automatizova\u0165. Probl\u00e9m spo\u010d\u00edva pr\u00e1ve v dynamike procesu. A oper\u00e1tor to ve\u013emi dobre automatizuje. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48a7264f1228671e0c483c8211a71eb3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ako sa n\u00e1\u0161 cluster vyv\u00edjal? Na za\u010diatku bol tak\u00fdto.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8a8c7b6cd5562deb315368e1e8e1c976.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Potom bol tak\u00fdto.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1a3e915fbadf3aa5f3b33d337f36e76e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Eventu\u00e1lne sa stal tak\u00fdmto. <\/p>\n<p><\/p>\n<p>A monitoring sa automaticky vykon\u00e1va oper\u00e1torom. Jedin\u00fd bod vstupu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e079e65bf8deff43a81d8ffde938a709.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A my sa len na v\u00fdstupe pozer\u00e1me na Grafana dashboard, ako tam vn\u00fatorn\u00fd \u017eivot n\u00e1\u0161ho clustra prebieha. <\/p>\n<p><\/p>\n<p>Mimochodom, Grafana dashboard sa tie\u017e \u0161\u00edri s na\u0161\u00edm oper\u00e1torom priamo v zdrojov\u00fdch k\u00f3doch. M\u00f4\u017eete sa pripoji\u0165 a pou\u017e\u00edva\u0165. Tento screenshot mi dali na\u0161i DevOps.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ad1c2899dd845d0ba4185bdf758468c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kam by sme chceli \u00eds\u0165 \u010falej? Toto:<\/p>\n<p><\/p>\n<ul>\n<li>Rozv\u00edja\u0165 automatiz\u00e1ciu testovania. Hlavnou \u00falohou je automatizovan\u00e9 testovanie nov\u00fdch verzi\u00ed. <\/li>\n<li>Taktie\u017e ve\u013emi chceme automatizova\u0165 integr\u00e1ciu s ZooKeeperom. Pl\u00e1nujeme sa integrova\u0165 aj s ZooKeeper-operatorom. T.j. pre ZooKeeper je nap\u00edsan\u00fd oper\u00e1tor a je logick\u00e9, aby sa dva oper\u00e1tory za\u010dali integrova\u0165 za \u00fa\u010delom vybudovania pohodlnej\u0161ieho rie\u0161enia. <\/li>\n<li>Chceme vykona\u0165 zlo\u017eitej\u0161ie kontroly \u017eivotaschopnosti. <\/li>\n<li>Zelenou som zv\u00fdraznil, \u017ee m\u00e1me na dosah dedi\u010dstvo \u0161abl\u00f3n \u2013 HOTOVO, t. j. s \u010fal\u0161\u00edm vydan\u00edm oper\u00e1tora u\u017e budeme ma\u0165 dedi\u010dstvo \u0161abl\u00f3n. Je to mocn\u00fd n\u00e1stroj, ktor\u00fd umo\u017e\u0148uje budova\u0165 zlo\u017eit\u00e9 konfigur\u00e1cie z k\u00faskov. <\/li>\n<li>A chceme automatiz\u00e1ciu zlo\u017eit\u00fdch \u00faloh. Hlavnou z nich je Re-sharding. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f232c0aab389be5069e5c7886e265c01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po\u010fme urobi\u0165 medzi\u010dl\u00e1nky. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/62f7814994af0441ba5a82de4e9780d7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010co dost\u00e1vame na v\u00fdstupe? A stoj\u00ed za to sa t\u00fdm zaobera\u0165, alebo nie? Treba vobec sk\u00fa\u0161a\u0165 dosta\u0165 datab\u00e1zu do Kubernetes a aplikova\u0165 oper\u00e1tora celkovo a Alitnity-operator v osobitosti.<\/p>\n<p><\/p>\n<p>Na v\u00fdstupe dost\u00e1vame:<\/p>\n<p><\/p>\n<ul>\n<li>Podstatn\u00e9 zjednodu\u0161enie a automatiz\u00e1ciu konfigur\u00e1cie, nasadenia a tie\u017e spr\u00e1vy. <\/li>\n<li>Okam\u017eite zabudovan\u00fd monitoring. <\/li>\n<li>A pripraven\u00e9 na pou\u017eitie kodifikovan\u00e9 \u0161abl\u00f3ny pre zlo\u017eit\u00e9 situ\u00e1cie. U\u017e nie je potrebn\u00e9 vykon\u00e1va\u0165 \u00fakon ako pridanie repliky manu\u00e1lne. To rob\u00ed oper\u00e1tor. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/aebccd7a2dc55f14645f79f89f7b7458.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zostala len posledn\u00e1 ot\u00e1zka. M\u00e1me u\u017e datab\u00e1zu v Kubernetes, virtualiz\u00e1ciu. Ak\u00e1 je v\u00fdkonnos\u0165 tak\u00e9hoto rie\u0161enia, najm\u00e4 vzh\u013eadom na to, \u017ee ClickHouse je optimalizovan\u00fd na v\u00fdkon?<\/p>\n<p><\/p>\n<p>Odpove\u010f \u2013 v\u0161etko je v poriadku! Nebudem to podrobne rozobera\u0165, to je t\u00e9ma samostatnej predn\u00e1\u0161ky. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/ffc230941f0ae24926186db4d8d68ade.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ale existuje tak\u00fd projekt ako TSBS. Ak\u00fd je jeho hlavn\u00fd cie\u013e? Je to test datab\u00e1z na v\u00fdkon. Je to pokus porovna\u0165 tepl\u00e9 s tepl\u00fdm, m\u00e4kk\u00e9 s m\u00e4kk\u00fdm. <\/p>\n<p><\/p>\n<p>Ako to funguje? Generuje sa jeden s\u00fabor \u00fadajov. Potom sa tento s\u00fabor \u00fadajov na rovnakom s\u00fabore testov prev\u00e1dzkuje na r\u00f4znych datab\u00e1zach. A ka\u017ed\u00e1 datab\u00e1za rie\u0161i jednu \u00falohu tak, ako to dok\u00e1\u017ee. A potom je mo\u017en\u00e9 v\u00fdsledky porovn\u00e1va\u0165. <\/p>\n<p><\/p>\n<p>U\u017e podporuje mno\u017estvo datab\u00e1z. Vy\u010dlenil som tri hlavn\u00e9. To s\u00fa:<\/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=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5b4733534a4e6e36fb7788127adc6e86.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bolo tie\u017e vykonan\u00e9 porovnanie s in\u00fdm podobn\u00fdm rie\u0161en\u00edm. Porovnanie s RedShift. Porovnanie sa uskuto\u010dnilo na Amazone. ClickHouse taktie\u017e dobre prekon\u00e1va v\u0161etk\u00fdch v tejto ot\u00e1zke. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/44cc8dedc07a02fe1ed5aad3e17a579c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ak\u00e9 z\u00e1very m\u00f4\u017eeme urobi\u0165 z toho, \u010do som povedal?<\/p>\n<p><\/p>\n<ul>\n<li>DB v Kubernetes je mo\u017en\u00fd. Asi je mo\u017en\u00e9 ak\u00fdko\u013evek, ale zd\u00e1 sa, \u017ee je to mo\u017en\u00e9. ClickHouse v Kubernetes ur\u010dite mo\u017eno zavies\u0165 silami n\u00e1\u0161ho oper\u00e1tora. <\/li>\n<li>Oper\u00e1tor pom\u00e1ha automatizova\u0165 procesy a naozaj zjednodu\u0161uje \u017eivot.<\/li>\n<li>V\u00fdkon je norm\u00e1lny.<\/li>\n<li>A zd\u00e1 sa, \u017ee to m\u00f4\u017eeme a mali by sme vyu\u017ei\u0165. <\/li>\n<\/ul>\n<p><\/p>\n<p>Open source \u2013 pridajte sa k n\u00e1m!<\/p>\n<p><\/p>\n<p>Ako som u\u017e povedal, oper\u00e1tor je \u00faplne open source produkt, tak\u017ee by bolo ve\u013emi dobr\u00e9, keby ho vyu\u017e\u00edvalo \u010do najviac \u013eud\u00ed. Pridajte sa! \u010cak\u00e1me na v\u00e1s v\u0161etk\u00fdch!<\/p>\n<p><\/p>\n<p>V\u0161etk\u00fdm \u010fakujem!<\/p>\n<p><\/p>\n<p>Ot\u00e1zky<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. 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>\u010eakujem za predn\u00e1\u0161ku! Vol\u00e1m sa Anton, som z firmy SEMrush. Zauj\u00edma ma, \u010do je s logovan\u00edm. O monitorovan\u00ed sme po\u010duli, ale o logovan\u00ed ni\u010d, pokia\u013e ide o cel\u00fd klaster. U n\u00e1s je napr\u00edklad spusten\u00fd klaster na hardv\u00e9ri. A pou\u017e\u00edvame centralizovan\u00e9 logovanie, \u0161tandardn\u00fdmi prostriedkami zhroma\u017e\u010fujeme do spolo\u010dn\u00e9ho celku. A potom tam vy\u0165ahujeme pre n\u00e1s zauj\u00edmav\u00e9 \u00fadaje.<\/em> <\/p>\n<p><\/p>\n<p>Dobr\u00fd ot\u00e1zka, teda logovanie je na zozname \u00faloh. N\u00e1\u0161 oper\u00e1tor to zatia\u013e automatizuje. E\u0161te sa vyv\u00edja, projekt je e\u0161te dos\u0165 mlad\u00fd. Ch\u00e1peme potrebu logovania. To je tie\u017e ve\u013emi d\u00f4le\u017eit\u00e1 t\u00e9ma. A pravdepodobne je to ne menej d\u00f4le\u017eit\u00e9 ne\u017e monitorovanie. Ale prv\u00e9 v zozname na realiz\u00e1ciu bolo monitorovanie. Logovanie bude. Samozrejme sa sna\u017e\u00edme automatizova\u0165 v\u0161etky aspekty \u017eivotnosti klastera. Preto odpove\u010f znie \u2013 v s\u00fa\u010dasnosti to oper\u00e1tor, \u017eia\u013e, nevie, ale je to v pl\u00e1ne, budeme to robi\u0165. Ak m\u00e1te z\u00e1ujem pripoji\u0165 sa, tak pull request, pros\u00edm.<\/p>\n<p><\/p>\n<p><em>Dobr\u00fd de\u0148! \u010eakujem za predn\u00e1\u0161ku! M\u00e1m \u0161tandardn\u00fa ot\u00e1zku t\u00fdkaj\u00facu sa Persistent Volumes. Ke\u010f vytv\u00e1rame konfigur\u00e1ciu prostredn\u00edctvom tohto oper\u00e1tora, ako oper\u00e1tor ur\u010d\u00ed, na ktorej n\u00f3d m\u00e1 pripojen\u00fd nejak\u00fd disk, alebo prie\u010dinok? Mus\u00edme mu vopred vysvetli\u0165, \u017ee pros\u00edm umiestnite n\u00e1\u0161 ClickHouse pr\u00e1ve na t\u00fdch n\u00f3dach, na ktor\u00fdch je disk?<\/em><\/p>\n<p><\/p>\n<p>Ako ch\u00e1pem, t\u00e1to ot\u00e1zka je pokra\u010dovan\u00edm lok\u00e1lneho \u00falo\u017eiska, najm\u00e4 jeho \u010dasti t\u00fdkaj\u00facej sa hostPath. Je to ako vysvetli\u0165 celej syst\u00e9mu, \u017ee pod mus\u00ed by\u0165 spusten\u00fd pr\u00e1ve na takejto n\u00f3d, na ktor\u00fa m\u00e1me fyzicky pripojen\u00fd disk, ktor\u00fd je pripojen\u00fd na takomto mieste. To je cel\u00e1 sekcia, ktor\u00fa som sa dotkol ve\u013emi povrchne, preto\u017ee odpove\u010f je dos\u0165 rozsiahla. <\/p>\n<p><\/p>\n<p>Stru\u010dne povedan\u00e9, vyzer\u00e1 to takto. Samozrejme, mus\u00edme pripravi\u0165 provisioning t\u00fdchto objemov. V s\u00fa\u010dasnosti neexistuje dynamick\u00fd provisioning pre lok\u00e1lne \u00falo\u017eisko, tak\u017ee DevOps musia manu\u00e1lne rozdeli\u0165 disky, tieto objemy. A musia vysvetli\u0165 Kubernetes provisioning, \u017ee budete ma\u0165 Persistent volumes ur\u010ditej triedy, ktor\u00e1 sa nach\u00e1dza na ur\u010dit\u00fdch nod\u00e1ch. Potom bude potrebn\u00e9 vysvetli\u0165 Kubernetes, \u017ee pod\u2019y, ktor\u00e9 vy\u017eaduj\u00fa ur\u010dit\u00fa triedu lok\u00e1lneho \u00falo\u017eiska, by mali by\u0165 pl\u00e1novan\u00e9 iba na ur\u010dit\u00e9 nody pomocou \u0161t\u00edtkov. Na tento \u00fa\u010del v oper\u00e1tore existuje mo\u017enos\u0165 priradi\u0165 ur\u010dit\u00e9mu \u0161t\u00edtku a jeden za hostite\u013ea. A bude sa realizova\u0165, \u017ee pod\u2019y bud\u00fa smerovan\u00e9 Kubernetesom na spustenie iba na nod\u00e1ch, ktor\u00e9 splnia po\u017eiadavky, \u0161t\u00edtky, jednoducho povedan\u00e9. Administr\u00e1tori prira\u010fuj\u00fa \u0161t\u00edtky, robia provisioning diskov ru\u010dne. A potom sa to m\u00f4\u017ee \u0161k\u00e1lova\u0165.<\/p>\n<p><\/p>\n<p>Tretia mo\u017enos\u0165 lok\u00e1lneho \u00falo\u017eiska pom\u00e1ha trochu to u\u013eah\u010di\u0165. Ako som u\u017e zd\u00f4raznil, ide o d\u00f4kladn\u00fa pr\u00e1cu na nastaven\u00ed, ktor\u00e1 na v\u00fdstupe pom\u00e1ha dosiahnu\u0165 maxim\u00e1lny v\u00fdkon.<\/p>\n<p><\/p>\n<p><em>M\u00e1m druh\u00fa ot\u00e1zku, ktor\u00e1 s t\u00fdm s\u00favis\u00ed. Kubernetes bol navrhnut\u00fd tak, \u017ee n\u00e1m nez\u00e1le\u017e\u00ed na tom, \u010di strat\u00edme nodu alebo nie. \u010co by sme mali robi\u0165 v pr\u00edpade, \u017ee strat\u00edme nodu, na ktorej vis\u00ed shard?<\/em><\/p>\n<p><\/p>\n<p>\u00c1no, Kubernetes sa p\u00f4vodne nastavil tak, \u017ee na\u0161e vz\u0165ahy s na\u0161imi pod\u2019ami s\u00fa ako s dobytok, a v tomto pr\u00edpade ka\u017ed\u00fd disk sa st\u00e1va nie\u010d\u00edm ako dom\u00e1cim mazn\u00e1\u010dikom. M\u00e1me probl\u00e9m, \u017ee ich nem\u00f4\u017eeme len tak vyhodi\u0165. A rozvoj Kubernetes smeruje k tomu, \u017ee nie je mo\u017en\u00e9 \u00faplne na to filozoficky myslie\u0165 ako na plne vyhoden\u00e9 zdroje.<\/p>\n<p><\/p>\n<p>Teraz praktick\u00e1 ot\u00e1zka. \u010co robi\u0165, ak ste stratili nodu, na ktorej bol disk? Tu sa u\u017e \u00faloha rie\u0161i na vy\u0161\u0161ej \u00farovni. V pr\u00edpade ClickHouse m\u00e1me repliky, ktor\u00e9 funguj\u00fa na vy\u0161\u0161ej \u00farovni, teda na \u00farovni ClickHouse.<\/p>\n<p><\/p>\n<p>Ak\u00e1 je teda situ\u00e1cia? Za to, aby sa nestratili d\u00e1ta, zodpoved\u00e1 DevOps. Mus\u00ed spr\u00e1vne nastavi\u0165 replik\u00e1ciu a mus\u00ed sledova\u0165, aby sa replik\u00e1cia vykon\u00e1vala. Replika na \u00farovni ClickHouse mus\u00ed ma\u0165 \u00fadaje zdvojen\u00e9. To nie je \u00faloha, ktor\u00fa rie\u0161i oper\u00e1tor. A nie je to ani \u00faloha, ktor\u00fa rie\u0161i samotn\u00fd Kubernetes. Je to na \u00farovni ClickHouse.<\/p>\n<p><\/p>\n<p>\u010co robi\u0165, ak v\u00e1m padla \u017eelezn\u00e1 n\u00f3d? A zd\u00e1 sa, \u017ee treba nastavi\u0165 druh\u00fa, spr\u00e1vne zprovisionova\u0165 disk, aplikova\u0165 \u0161t\u00edtky. A potom sp\u013a\u0148a po\u017eiadavky, \u017ee Kubernetes na nej m\u00f4\u017ee spusti\u0165 in\u0161tanciu podu. Kubernetes to spust\u00ed. Ve\u010f v\u00e1m ch\u00fdba po\u010det podov na dan\u00e9 \u010d\u00edslo. Prejde cyklom, ktor\u00fd som ukazoval. A na najvy\u0161\u0161ej \u00farovni ClickHouse pochop\u00ed, \u017ee n\u00e1m pri\u0161la replik\u00e1cia, je e\u0161te pr\u00e1zdna a treba za\u010da\u0165 nalieva\u0165 na \u0148u d\u00e1ta. T.j. tento proces je e\u0161te zle automatizovan\u00fd. <\/p>\n<p><\/p>\n<p><em>\u010eakujem za predn\u00e1\u0161ku! Ke\u010f sa dej\u00fa r\u00f4zne nepr\u00edjemnosti, oper\u00e1tor spadne a re\u0161tartuje sa, a v tom momente prich\u00e1dzaj\u00fa udalosti, ak\u00fdm sp\u00f4sobom to spracov\u00e1vate?<\/em><\/p>\n<p><\/p>\n<p>\u010co sa stane, ak oper\u00e1tor spadol a re\u0161tartoval sa, \u00e1no? <\/p>\n<p><\/p>\n<p><em>\u00c1no. A v tom momente pri\u0161li udalosti.<\/em> <\/p>\n<p><\/p>\n<p>\u00daloha, \u010do robi\u0165 v tomto pr\u00edpade, sa \u010diasto\u010dne del\u00ed medzi oper\u00e1tora a Kubernetes. Kubernetes m\u00e1 mo\u017enos\u0165 prehra\u0165 udalos\u0165, ktor\u00e1 sa stala. Prehr\u00e1 ju. A \u00faloha oper\u00e1tora je zabezpe\u010di\u0165, aby, ke\u010f sa na \u0148om urob\u00ed replay logu udalost\u00ed, boli tieto udalosti idempotentn\u00e9. A aby opakovan\u00e9 spustenie tej istej udalosti nerozbilo na\u0161u syst\u00e9m. A n\u00e1\u0161 oper\u00e1tor sa s touto \u00falohou vyrovn\u00e1va. <\/p>\n<p><\/p>\n<p><em>Dobr\u00fd de\u0148! \u010eakujem za predn\u00e1\u0161ku! Dmitrij Zavyalov, spolo\u010dnos\u0165<\/em> <em>Smedova. Pl\u00e1nuje sa prida\u0165 do oper\u00e1tora mo\u017enos\u0165 nastavenia s haproxy? Zauj\u00edma ma nejak\u00fd in\u00fd vyva\u017eova\u010d okrem \u0161tandardn\u00e9ho, aby bol inteligentn\u00fd a ch\u00e1pal, \u017ee tam naozaj ClickHouse.<\/em> <\/p>\n<p><\/p>\n<p>Hovor\u00edte o Ingress?<\/p>\n<p><\/p>\n<p><em>\u00c1no, nahradi\u0165 Ingress za haproxy. V haproxy m\u00f4\u017eete uvies\u0165 topol\u00f3giu klastra, kde m\u00e1 repliky.<\/em><\/p>\n<p><\/p>\n<p>Zatia\u013e sme nad t\u00fdm nerozm\u00fd\u0161\u013eali. Ak to potrebujete a m\u00f4\u017eete vysvetli\u0165, pre\u010do to potrebujete, d\u00e1 sa to realizova\u0165, najm\u00e4 ak by ste chceli prispie\u0165. Radi zv\u00e1\u017eime t\u00fato mo\u017enos\u0165. Kr\u00e1tka odpove\u010f \u2013 nie, moment\u00e1lne tak\u00fa funk\u010dnos\u0165 nem\u00e1me. \u010eakujem za podnet, pozrieme sa na to. A ak e\u0161te vysvetl\u00edte use case a pre\u010do je to potrebn\u00e9 v praxi, napr\u00edklad vytvor\u00edte issues na GitHub, bude to skvel\u00e9.<\/p>\n<p><\/p>\n<p><em>U\u017e je.<\/em><\/p>\n<p><\/p>\n<p>Dobre. Sme otvoren\u00ed ak\u00fdmiko\u013evek n\u00e1vrhom. A haproxy sa prid\u00e1va do zoznamu \u00faloh. Zoznam \u00faloh rastie, nie zmen\u0161uje sa zatia\u013e. Ale to je dobr\u00e9, to znamen\u00e1, \u017ee produkt m\u00e1 z\u00e1ujem.<\/p>\n<p>Zdroj: <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.4 - 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\/sk\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47Operator v Kubernetes pre spr\u00e1vu datab\u00e1zov\u00fdch klastrov. Vladislav Klimenko (Altinity, 2019) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sk\/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":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/96965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=96965"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/96965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/96966"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=96965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=96965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=96965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}