{"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\/hu\/blog\/administrirovanie\/operator-v-kubernetes-dlya-upravleniya-klasterami-bd-vladislav-klimenko-altinity-2019","title":{"rendered":"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/56e002c7408c4708e39ece867f84171e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A jelent\u00e9s a Kubernetes-ben t\u00f6rt\u00e9n\u0151 oper\u00e1torfejleszt\u00e9s gyakorlati k\u00e9rd\u00e9seinek, architekt\u00far\u00e1j\u00e1nak megtervez\u00e9s\u00e9nek \u00e9s alapvet\u0151 m\u0171k\u00f6d\u00e9si elveinek szentelhet\u0151.<\/p>\n<p><\/p>\n<p>A besz\u00e1mol\u00f3 els\u0151 r\u00e9sz\u00e9ben a k\u00f6vetkez\u0151ket vizsg\u00e1ljuk:<\/p>\n<p><\/p>\n<ul>\n<li>mi az oper\u00e1tor a Kubernetes-ben \u00e9s mi\u00e9rt van r\u00e1 sz\u00fcks\u00e9g;<\/li>\n<li>hogyan egyszer\u0171s\u00edti az oper\u00e1tor a bonyolult rendszerek kezel\u00e9s\u00e9t;<\/li>\n<li>mit tud az oper\u00e1tor, \u00e9s mit nem tud az oper\u00e1tor.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ezt k\u00f6vet\u0151en \u00e1tt\u00e9r\u00fcnk az oper\u00e1tor bels\u0151 fel\u00e9p\u00edt\u00e9s\u00e9nek megvitat\u00e1s\u00e1ra. L\u00e9pcs\u0151zetesen megvizsg\u00e1ljuk az oper\u00e1tor architekt\u00far\u00e1j\u00e1t \u00e9s m\u0171k\u00f6d\u00e9s\u00e9t. R\u00e9szletesen elemezz\u00fck:<\/p>\n<p><\/p>\n<ul>\n<li>az oper\u00e1tor \u00e9s a Kubernetes k\u00f6z\u00f6tti interakci\u00f3t;<\/li>\n<li>milyen funkci\u00f3kat v\u00e1llal mag\u00e1ra az oper\u00e1tor, \u00e9s mi az, amit a Kubernetes-re deleg\u00e1l.<\/li>\n<\/ul>\n<p><\/p>\n<p>Megvizsg\u00e1ljuk a shardok \u00e9s DB replik\u00e1k kezel\u00e9s\u00e9t a Kubernetes-ben.<br \/>\nEzt k\u00f6vet\u0151en adatkezel\u00e9si k\u00e9rd\u00e9seket vitatunk meg:<\/p>\n<p><\/p>\n<ul>\n<li>hogyan kell Persistent Storage-t kezelni az oper\u00e1tor szemsz\u00f6g\u00e9b\u0151l;<\/li>\n<li>a helyi t\u00e1rol\u00e1s haszn\u00e1lat\u00e1nak buktat\u00f3i.<\/li>\n<\/ul>\n<p><\/p>\n<p>A besz\u00e1mol\u00f3 z\u00e1r\u00f3 r\u00e9sz\u00e9ben gyakorlati p\u00e9ld\u00e1kat fogunk megvizsg\u00e1lni a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">clickhouse-operator<\/a><\/noindex> Az Amazon vagy Google Cloud Service eset\u00e9ben. A besz\u00e1mol\u00f3 a ClickHouse oper\u00e1tor fejleszt\u00e9s\u00e9nek \u00e9s \u00fczemeltet\u00e9s\u00e9nek tapasztalatain alapul.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Vide\u00f3:<\/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=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" 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>A nevem Vlagyimir Klimenko. Ma szeretn\u00e9m megosztani a ClickHouse adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re specializ\u00e1l\u00f3dott oper\u00e1torunk fejleszt\u00e9s\u00e9r\u0151l \u00e9s \u00fczemeltet\u00e9s\u00e9r\u0151l szerzett tapasztalatainkat. A <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Altinity\/clickhouse-operator\">ClickHouse-operator<\/a><\/noindex> p\u00e9ld\u00e1j\u00e1n kereszt\u00fcl a ClickHouse klaszter kezel\u00e9s\u00e9re.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/cc297a3edb3b2a5e30d0dc2725de4011.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi\u00e9rt van lehet\u0151s\u00e9g\u00fcnk az oper\u00e1torr\u00f3l \u00e9s a ClickHouse-r\u00f3l besz\u00e9lni?<\/p>\n<p><\/p>\n<ul>\n<li>A ClickHouse t\u00e1mogat\u00e1s\u00e1val \u00e9s fejleszt\u00e9s\u00e9vel foglalkozunk. <\/li>\n<li>Jelenleg fokozatosan pr\u00f3b\u00e1lunk hozz\u00e1j\u00e1rulni a ClickHouse fejleszt\u00e9s\u00e9hez. A v\u00e1ltoztat\u00e1sok m\u00e9rt\u00e9k\u00e9t tekintve m\u00e1sodikak vagyunk a Yandex ut\u00e1n a ClickHouse-ban. <\/li>\n<li>T\u00f6reksz\u00fcnk tov\u00e1bbi projekteket l\u00e9trehozni a ClickHouse \u00f6kosziszt\u00e9m\u00e1hoz. <\/li>\n<\/ul>\n<p><\/p>\n<p>Egy ilyen projektr\u0151l szeretn\u00e9k besz\u00e1molni. Ez a Kubernetes sz\u00e1m\u00e1ra k\u00e9sz\u00fclt ClickHouse-operator. <\/p>\n<p><\/p>\n<p>A besz\u00e1mol\u00f3m sor\u00e1n k\u00e9t t\u00e9m\u00e1t szeretn\u00e9k \u00e9rinteni: <\/p>\n<p><\/p>\n<ul>\n<li>Az els\u0151 t\u00e9ma \u2013 az, hogy oper\u00e1torunk hogyan m\u0171k\u00f6dik a ClickHouse adatb\u00e1zisok kezel\u00e9s\u00e9ben a Kubernetes-ben. <\/li>\n<li>A m\u00e1sodik t\u00e9ma \u2013 a b\u00e1rmilyen oper\u00e1tor m\u0171k\u00f6d\u00e9se, azaz hogyan interakci\u00f3ba l\u00e9p a Kubernetes-szel. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ezek a k\u00e9t k\u00e9rd\u00e9s a teljes el\u0151ad\u00e1som sor\u00e1n keresztezik egym\u00e1st. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4cc9790e18e70ae1ccde2cf39ef4ef00.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kinek lehet \u00e9rdekes az, amit pr\u00f3b\u00e1lok elmondani?<\/p>\n<p><\/p>\n<ul>\n<li>Legink\u00e1bb azoknak lesz \u00e9rdekes, akik oper\u00e1torokat \u00fczemeltetnek. <\/li>\n<li>Vagy azoknak, akik saj\u00e1tot szeretn\u00e9nek k\u00e9sz\u00edteni, hogy meg\u00e9rts\u00e9k, hogyan m\u0171k\u00f6dik bel\u00fclr\u0151l, hogyan l\u00e9p k\u00f6lcs\u00f6nhat\u00e1sba az oper\u00e1tor a Kubernetes-szel \u00e9s milyen buktat\u00f3k mer\u00fclhetnek fel. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/07545f7a0171b610697c519d4aa9cd43.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahhoz, hogy jobban meg\u00e9rts\u00fck, amir\u0151l ma besz\u00e9lni fogunk, hasznos lenne tudni, hogyan m\u0171k\u00f6dik a Kubernetes, \u00e9s rendelkezni egy alapvet\u0151 felk\u00e9sz\u00fclts\u00e9ggel a felh\u0151technol\u00f3gi\u00e1k ter\u00e9n. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/eff56cc3e83fde3d3e64d73d41b07417.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi az a ClickHouse? Ez egy oszlop alap\u00fa adatb\u00e1zis, amely az analitikai lek\u00e9rdez\u00e9sek online feldolgoz\u00e1s\u00e1ra specializ\u00e1l\u00f3dott. R\u00e1ad\u00e1sul teljesen ny\u00edlt forr\u00e1sk\u00f3d\u00fa. <\/p>\n<p><\/p>\n<p>K\u00e9t dolgot kell tudnunk. El\u0151sz\u00f6r is, tudnunk kell, hogy ez egy adatb\u00e1zis, ez\u00e9rt az, amir\u0151l besz\u00e9lni fogok, gyakorlatilag b\u00e1rmely adatb\u00e1zisra alkalmazhat\u00f3. M\u00e1sodszor, a ClickHouse DBMS nagyon j\u00f3l sk\u00e1l\u00e1z\u00f3dik, szinte line\u00e1ris sk\u00e1l\u00e1zhat\u00f3s\u00e1got biztos\u00edt. \u00c9ppen ez\u00e9rt a klaszter \u00e1llapota a ClickHouse eset\u00e9ben term\u00e9szetes \u00e1llapot. A leg\u00e9rdekesebb a ClickHouse klaszter Kubernetes alatti karbantart\u00e1sa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5eb1ff5026c492117bf2467b10de7053.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi\u00e9rt van sz\u00fcks\u00e9g r\u00e1 ott? Mi\u00e9rt nem folytathatjuk az \u00f6n\u00e1ll\u00f3 \u00fczemeltet\u00e9st? A v\u00e1lasz r\u00e9szben technikai, r\u00e9szben szervezeti. <\/p>\n<p><\/p>\n<ul>\n<li>A gyakorlatban egyre gyakrabban tal\u00e1lkozunk olyan helyzetekkel, amikor a nagyv\u00e1llalatokban m\u00e1r gyakorlatilag minden komponens a Kubernetesben tal\u00e1lhat\u00f3. Csak az adatb\u00e1zisok maradtak k\u00edv\u00fcl. <\/li>\n<li>Egyre t\u00f6bben teszik fel a k\u00e9rd\u00e9st: \"Lehet ezt bel\u00fclre is helyezni?\". Ez\u00e9rt a nagyv\u00e1llalatok arra t\u00f6rekednek, hogy a kezel\u00e9s maxim\u00e1lis egys\u00e9ges\u00edt\u00e9se \u00e9rdek\u00e9ben gyorsan tudj\u00e1k kezelni adatb\u00e1zisaikat. <\/li>\n<li>Ez k\u00fcl\u00f6n\u00f6sen seg\u00edt, ha sz\u00fcks\u00e9g van a maxim\u00e1lis lehet\u0151s\u00e9gre, hogy ugyanazt egy \u00faj helyen reproduk\u00e1lhassuk, azaz maxim\u00e1lis hordozhat\u00f3s\u00e1gra.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/99312e74bd7ed4031128c7ec872f6a68.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mennyire egyszer\u0171 vagy bonyolult ez? Term\u00e9szetesen k\u00e9zzel is megtehet\u0151. De nem olyan egyszer\u0171, mert a Kubernetes kezel\u00e9s\u00e9nek neh\u00e9zs\u00e9gei \u00f6sszead\u00f3dnak a ClickHouse saj\u00e1toss\u00e1gaival. \u00cdgy egyfajta aggreg\u00e1ci\u00f3 j\u00f6n l\u00e9tre. <\/p>\n<p><\/p>\n<p>Ez egy\u00fctt olyan nagysz\u00e1m\u00fa technol\u00f3gi\u00e1t eredm\u00e9nyez, amelynek kezel\u00e9se m\u00e1r el\u00e9g neh\u00e9zkess\u00e9 v\u00e1lik, mivel a Kubernetes saj\u00e1t napi \u00fczemeltet\u00e9si k\u00e9rd\u00e9seket hoz, m\u00edg a ClickHouse saj\u00e1t napi \u00fczemeltet\u00e9si probl\u00e9m\u00e1kat hoz. K\u00fcl\u00f6n\u00f6sen, ha t\u00f6bb ClickHouse-unk van, \u00e9s folyamatosan tenni kell vel\u00fck valamit. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/ca10b805b2744d1a5283f96b0ac1cc11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A ClickHouse-dinamikus konfigur\u00e1ci\u00f3j\u00e1val t\u00f6bb k\u00e9rd\u00e9s is felmer\u00fcl, amelyek \u00e1lland\u00f3 terhet jelentenek a DevOps sz\u00e1m\u00e1ra:<\/p>\n<p><\/p>\n<ul>\n<li>Amikor valamit meg akarunk v\u00e1ltoztatni a ClickHouse-ban, p\u00e9ld\u00e1ul replik\u00e1t vagy shardot szeretn\u00e9nk hozz\u00e1adni, a konfigur\u00e1ci\u00f3 kezel\u00e9s\u00e9t kell elv\u00e9gezn\u00fcnk. <\/li>\n<li>Ezut\u00e1n m\u00f3dos\u00edtani kell az adatmodellt, mivel a ClickHouse specifikus m\u00f3dszerrel v\u00e9gzi a shardol\u00e1st. Az adatmodellt \u00e9s a konfigur\u00e1ci\u00f3kat sz\u00e9tsz\u00f3rva kell elhelyezni. <\/li>\n<li>Be kell \u00e1ll\u00edtani a monitoringot. <\/li>\n<li>A napl\u00f3z\u00e1si rendszer be\u00e1ll\u00edt\u00e1sa az \u00faj shardokhoz \u00e9s replik\u00e1khoz. <\/li>\n<li>Gondoskodni kell a helyre\u00e1ll\u00edt\u00e1sr\u00f3l.<\/li>\n<li>\u00c9s az \u00fajraind\u00edt\u00e1sr\u00f3l. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ezek olyan rutin munk\u00e1k, amelyeket nagyon szeretn\u00e9nk megk\u00f6nny\u00edteni a haszn\u00e1lat sor\u00e1n.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2461e861ca1d2f2344ead9decf85a97e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mag\u00e1nak a Kubernetesnek val\u00f3ban seg\u00edt a haszn\u00e1lat sor\u00e1n, de alapvet\u0151 rendszerszint\u0171 dolgokban. <\/p>\n<p><\/p>\n<p>A Kubernetes j\u00f3l seg\u00edti \u00e9s automatiz\u00e1lja az olyan feladatokat, mint:<\/p>\n<p><\/p>\n<ul>\n<li>Helyre\u00e1ll\u00edt\u00e1s.<\/li>\n<li>\u00dajraind\u00edt\u00e1s. <\/li>\n<li>A t\u00e1rol\u00f3 rendszer kezel\u00e9s\u00e9t.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ez j\u00f3, ez a helyes ir\u00e1ny, de teljesen nincs tiszt\u00e1ban azzal, hogyan kell m\u0171k\u00f6dtetni az adatb\u00e1zis klasztert. <\/p>\n<p><\/p>\n<p>T\u00f6bbre v\u00e1gyunk, szeretn\u00e9nk, ha az eg\u00e9sz adatb\u00e1zisunk Kubernetesben m\u0171k\u00f6dne.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6564e9f29d5d518925c8593bca978345.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Olyasmit szeretn\u00e9nk, mint egy nagy, var\u00e1zslatos piros gomb, amelyet megnyomsz, \u00e9s elindul egy klaszter, amelyet az \u00e9letciklusa sor\u00e1n t\u00e1mogatnak, a napi feladatokkal, amiket meg kell oldani. ClickHouse klaszter Kubernetesben.<\/p>\n<p><\/p>\n<p>Pr\u00f3b\u00e1ltunk egy olyan megold\u00e1st kidolgozni, amely seg\u00edtene megk\u00f6nny\u00edteni a munk\u00e1t. Ez a ClickHouse-operator Kuberneteshez az Altinity-t\u0151l.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ff80c6fc59069ec900d545096ad978d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az operator egy program, amelynek f\u0151 feladata m\u00e1s programok kezel\u00e9se, azaz \u0151 a menedzser. <\/p>\n<p><\/p>\n<p>Tartalmaz magatart\u00e1si sablonokat is. Ezt a szakter\u00fcletr\u0151l k\u00f3dolt tud\u00e1snak lehet nevezni. <\/p>\n<p><\/p>\n<p>F\u0151 feladata az, hogy megk\u00f6nny\u00edtse a DevOps \u00e9let\u00e9t \u00e9s cs\u00f6kkentse a mikromenedzsmentet, hogy \u0151 (a DevOps) m\u00e1r magas szint\u0171 ter\u00fcleteken gondolkodjon, azaz ne kelljen minden r\u00e9szletet k\u00e9zzel konfigur\u00e1lni. <\/p>\n<p><\/p>\n<p>Az operator \u00e9ppen egy seg\u00edt\u0151 robot, amely a mikrotasks elleni k\u00fczdelemben seg\u00edt a DevOps-nak.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0824a1fa710e8c4f45406aa7f596b977.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mire val\u00f3 az operator? K\u00fcl\u00f6n\u00f6sen k\u00e9t k\u00e9rd\u00e9sben bizony\u00edtja az \u00e9rt\u00e9k\u00e9t:<\/p>\n<p><\/p>\n<ul>\n<li>Amikor a ClickHouse-szal foglalkoz\u00f3 szakembernek nincs elegend\u0151 tapasztalata, de m\u00e1r sz\u00fcks\u00e9g van a ClickHouse \u00fczemeltet\u00e9s\u00e9re, az operator megk\u00f6nny\u00edti az \u00fczemeltet\u00e9st, \u00e9s lehet\u0151v\u00e9 teszi a ClickHouse klaszter el\u00e9g bonyolult konfigur\u00e1ci\u00f3ban val\u00f3 m\u0171k\u00f6dtet\u00e9s\u00e9t, an\u00e9lk\u00fcl, hogy t\u00falzottan belemer\u00fcln\u00e9nk abba, hogyan m\u0171k\u00f6dik mindez bel\u00fcl. Egyszer\u0171en adsz neki magas szint\u0171 feladatokat, \u00e9s ez m\u0171k\u00f6dik. <\/li>\n<li>A m\u00e1sodik feladat, amelyben a legjobban teljes\u00edt, az, amikor egy nagy mennyis\u00e9g\u0171 tipikus feladat automatiz\u00e1l\u00e1s\u00e1ra van sz\u00fcks\u00e9g. Lev\u00e1lasztja a mikrofokozatokat a rendszergazd\u00e1kr\u00f3l. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f1cb11156d57f560d0b6c82700ac6ff8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez legink\u00e1bb azoknak hasznos, akik csak kezdik a p\u00e1ly\u00e1jukat, vagy azoknak, akik sokat foglalkoznak automatiz\u00e1l\u00e1ssal. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/128e7d9ff1ce0c535f98be66aedb1060.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi a k\u00fcl\u00f6nbs\u00e9g az oper\u00e1torok alap\u00fa megk\u00f6zel\u00edt\u00e9s \u00e9s m\u00e1s rendszerek k\u00f6z\u00f6tt? Ott van p\u00e9ld\u00e1ul a Helm. Az is seg\u00edt telep\u00edteni a ClickHouse-t, lehet rajzolni helm chartokat, amelyek ak\u00e1r egy teljes ClickHouse klasztert is telep\u00edtenek. Mi teh\u00e1t a k\u00fcl\u00f6nbs\u00e9g az oper\u00e1tor \u00e9s p\u00e9ld\u00e1ul a Helm k\u00f6z\u00f6tt?<\/p>\n<p><\/p>\n<p>A f\u0151, alapvet\u0151 k\u00fcl\u00f6nbs\u00e9g az, hogy a Helm - ez csomagkezel\u00e9s, m\u00edg az oper\u00e1tor tov\u00e1bb l\u00e9p. Ez az eg\u00e9sz \u00e9letciklus t\u00e1mogat\u00e1sa. Nem csak a telep\u00edt\u00e9s, hanem a napi feladatok is, melyek k\u00f6z\u00e9 tartozik a m\u00e9retez\u00e9s, a shardol\u00e1s, teh\u00e1t minden, amit az \u00e9letciklus sor\u00e1n v\u00e9gre kell hajtani (ha sz\u00fcks\u00e9ges, akkor a t\u00f6rl\u00e9s is) \u2013 ezt mind az oper\u00e1tor oldja meg. \u0150 pr\u00f3b\u00e1lja automatiz\u00e1lni \u00e9s fenntartani az \u00f6sszes szoftver \u00e9letciklus\u00e1t. Ez a fundament\u00e1lis k\u00fcl\u00f6nbs\u00e9g m\u00e1s megold\u00e1sokhoz k\u00e9pest, amelyek el\u00e9rhet\u0151ek. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e26b57c8caf8437f683d7afbfa127ebd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez volt az intro r\u00e9sz, l\u00e9pj\u00fcnk tov\u00e1bb. <\/p>\n<p><\/p>\n<p>Hogyan \u00e9p\u00edtj\u00fck fel az oper\u00e1torunkat? Megpr\u00f3b\u00e1lunk \u00fagy k\u00f6zel\u00edteni a k\u00e9rd\u00e9shez, hogy a ClickHouse klasztert egyetlen er\u0151forr\u00e1sk\u00e9nt kezelj\u00fck. <\/p>\n<p><\/p>\n<p>Itt a bal oldalon az input adatok tal\u00e1lhat\u00f3ak. Ez egy YAML a klaszter specifik\u00e1ci\u00f3j\u00e1val, amelyet klasszikus m\u00f3don a kubectl-en kereszt\u00fcl k\u00fcldenek a Kubernetesbe. Itt az oper\u00e1tor ezt lefogja, v\u00e9grehajtja a var\u00e1zslat\u00e1t, \u00e9s a kimeneten \u00edgy n\u00e9z ki a s\u00e9ma. Ez a ClickHouse implement\u00e1ci\u00f3 Kubernetesben.<\/p>\n<p><\/p>\n<p>\u00c9s ezut\u00e1n lassan megn\u00e9zz\u00fck, pontosan hogyan m\u0171k\u00f6dik az oper\u00e1tor, milyen tipikus feladatokat lehet megoldani. Csak tipikus feladatokat fogunk \u00e1ttekinteni, mivel korl\u00e1tozott id\u0151nk van. Nem mindenr\u0151l fogunk besz\u00e9lni, amit az oper\u00e1tor meg tud oldani. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/b40401931b58988058419d4495dbb1bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00e9pj\u00fcnk a gyakorlatra. A projekt\u00fcnk teljesen open source, ez\u00e9rt megn\u00e9zheted a GitHub-on, hogy m\u0171k\u00f6dik. \u00c9s abb\u00f3l a szempontb\u00f3l is lehet indulni, hogy ha csak el akarod ind\u00edtani, akkor a Quick Start Guide alapj\u00e1n kezdhetsz.<\/p>\n<p><\/p>\n<p>Ha pedig r\u00e9szletesebben szeretn\u00e9l foglalkozni, igyeksz\u00fcnk a dokument\u00e1ci\u00f3t viszonylag j\u00f3 \u00e1llapotban tartani. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9414d7c3aa94b6ad999e150f0ac25a97.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kezdj\u00fck egy gyakorlati feladattal. Az els\u0151 feladat, amivel mindannyian szeretn\u00e9nk kezdeni, az, hogy elind\u00edtsuk az els\u0151 p\u00e9ld\u00e1t valahogy. Hogyan ind\u00edthatjuk el a ClickHouse-t egy oper\u00e1tor seg\u00edts\u00e9g\u00e9vel, an\u00e9lk\u00fcl hogy igaz\u00e1n tudn\u00e1nk, hogyan m\u0171k\u00f6dik? K\u00e9sz\u00edt\u00fcnk egy manifesztumot, mivel minden kommunik\u00e1ci\u00f3 a k8s-szel manifesztumokon kereszt\u00fcl t\u00f6rt\u00e9nik.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/3e97cd235827460693ed95fb3598d31d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt van egy ilyen bonyolult manifesztum. Az, ami pirossal van kiemelve, az, amire f\u00f3kusz\u00e1lni kell. K\u00e9rj\u00fck az oper\u00e1tort, hogy hozzon l\u00e9tre egy demo nev\u0171 klasztert.<\/p>\n<p><\/p>\n<p>Eddig ezek alap p\u00e9ld\u00e1k. A t\u00e1rol\u00f3 m\u00e9g nincs le\u00edrva, de a t\u00e1rol\u00f3ra k\u00e9s\u0151bb visszat\u00e9r\u00fcnk. Egyel\u0151re a klaszter fejl\u0151d\u00e9s\u00e9t fogjuk figyelemmel k\u00eds\u00e9rni.<\/p>\n<p><\/p>\n<p>L\u00e9trehoztuk ezt a manifesztumot. \u00c1tadjuk azt az oper\u00e1torunknak. \u0150 dolgozik rajta, var\u00e1zsol.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/502e64fbe6ed7d04b2aecb7d51abc7f9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9zz\u00fck a konzolon. H\u00e1rom komponens h\u00edvja fel a figyelmet \u2013 ez a Pod, k\u00e9t Szolg\u00e1ltat\u00e1s \u00e9s a StatefulSet.<\/p>\n<p><\/p>\n<p>Az oper\u00e1tor v\u00e9gzett a feladat\u00e1val, \u00e9s megn\u00e9zhetj\u00fck, pontosan mit hozott l\u00e9tre. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/67faf120e21e5113680ccff9c71b00f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Olyan s\u00e9m\u00e1t hoz l\u00e9tre, mint ez. Van StatefulSet, Pod, ConfigMap minden replik\u00e1hoz, ConfigMap az eg\u00e9sz klaszthoz. K\u00fcl\u00f6n\u00f6sen fontosak a szolg\u00e1ltat\u00e1sok mint bel\u00e9p\u00e9si pontok a klaszterbe. <\/p>\n<p><\/p>\n<p>A szolg\u00e1ltat\u00e1sok a k\u00f6zponti Load Balancer szolg\u00e1ltat\u00e1s, \u00e9s lehet m\u00e9g minden replik\u00e1hoz, minden shardhoz is. <\/p>\n<p><\/p>\n<p>Alapvet\u0151en a klaszter\u00fcnk k\u00f6r\u00fclbel\u00fcl \u00edgy n\u00e9z ki. Ez egyetlen node-b\u00f3l \u00e1ll. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f235ada45ee58b517c0e041f795ae122.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Haladjunk tov\u00e1bb, bonyol\u00edtsuk a dolgokat. A klasztert shard-olni kell.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/992836a00434c64fb4616c1c4cc4df97.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A feladataink n\u00f6vekednek, elkezd\u0151dik a dinamika. Szeretn\u00e9nk egy shardot hozz\u00e1adni. Figyelj\u00fck a fejl\u0151d\u00e9st. Megv\u00e1ltoztatjuk a specifik\u00e1ci\u00f3t. Megadjuk, hogy k\u00e9t shardot akarunk. <\/p>\n<p><\/p>\n<p>Ez ugyanaz a f\u00e1jl, amely dinamikusan fejl\u0151dik a rendszer n\u00f6veked\u00e9s\u00e9vel. A t\u00e1rol\u00f3 m\u00e9g nincs, a t\u00e1rol\u00f3 k\u00e9s\u0151bb ker\u00fcl megvitat\u00e1sra, ez egy k\u00fcl\u00f6n t\u00e9ma.<\/p>\n<p><\/p>\n<p>\u00c1tadjuk a YAML oper\u00e1tort, \u00e9s n\u00e9zz\u00fck meg, mi t\u00f6rt\u00e9nik. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8ddb5845cae160098470208f51b5da7c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az oper\u00e1tor gondolkodott \u00e9s a k\u00f6vetkez\u0151 entit\u00e1sokat hozta l\u00e9tre. M\u00e1r van k\u00e9t Pod, h\u00e1rom Szolg\u00e1ltat\u00e1s \u00e9s, v\u00e1ratlanul, 2 StatefulSet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/26eb734ff1a195de2ceaab842b472ee4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A s\u00e9m\u00e1n \u00edgy volt \u2013 ez a kezdeti \u00e1llapot, amikor csak egy pod volt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/657838b0d378121fdd66ad3ff8168600.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cdgy v\u00e1ltozott. Egyel\u0151re minden egyszer\u0171, megdupl\u00e1z\u00f3dott. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f039a7046f1c56fbdad6b5a26a519b10.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s mi\u00e9rt lett a StatefulSet kett\u0151? Itt el kell t\u00e9rni \u00e9s meg kell besz\u00e9lni, hogyan t\u00f6rt\u00e9nik a Pod-ok kezel\u00e9se a Kubernetes-ben.<\/p>\n<p><\/p>\n<p>Van egy objektum, amelyet StatefulSet-nek h\u00edvnak, amely lehet\u0151v\u00e9 teszi, hogy Pod-ok halmaz\u00e1t hozzuk l\u00e9tre egy sablonb\u00f3l. A kulcselem itt a Template. Egy StatefulSet-en bel\u00fcl sok Pod-ot ind\u00edthatunk egy sablon alapj\u00e1n. A kulcsfontoss\u00e1g\u00fa mondat itt az, hogy \u00abegy sablon alapj\u00e1n sok Pod\u00bb.<\/p>\n<p><\/p>\n<p>Nagy k\u00eds\u00e9rt\u00e9s volt, hogy az eg\u00e9sz klasztert egy StatefulSet-be csomagoljuk. Ez m\u0171k\u00f6dni fog, ezzel nincs probl\u00e9ma. De van egy kis \u00e1rnyalat. Ha heterog\u00e9n klasztert szeretn\u00e9nk \u00f6sszerakni, azaz t\u00f6bb ClickHouse verzi\u00f3b\u00f3l, akkor itt m\u00e1r k\u00e9rd\u00e9sek mer\u00fclnek fel. Igen, a StatefulSet k\u00e9pes v\u00e9grehajtani a rolling update-et, \u00e9s lehet \u00faj verzi\u00f3t bevezetni, megmagyar\u00e1zva, hogy egyszerre nem t\u00f6bb, mint annyi node-ra van sz\u00fcks\u00e9g.<\/p>\n<p><\/p>\n<p>De ha extrapol\u00e1lni szeretn\u00e9nk a feladatot, \u00e9s azt mondan\u00e1nk, hogy teljesen heterog\u00e9n klasztert szeretn\u00e9nk l\u00e9trehozni, \u00e9s nem a r\u00e9gi verzi\u00f3t szeretn\u00e9nk \u00fajra cser\u00e9lni rolling update-tel, hanem egyszer\u0171en egy heterog\u00e9n klasztert szeretn\u00e9nk l\u00e9trehozni a k\u00fcl\u00f6nb\u00f6z\u0151 ClickHouse verzi\u00f3k \u00e9s k\u00fcl\u00f6nb\u00f6z\u0151 t\u00e1rol\u00f3k tekintet\u00e9ben. P\u00e9ld\u00e1ul n\u00e9h\u00e1ny replik\u00e1t k\u00fcl\u00f6nb\u00f6z\u0151 lemezekre szeretn\u00e9nk tenni, lass\u00fa lemezekre, sz\u00f3val teljesen heterog\u00e9n klasztert szeretn\u00e9nk fel\u00e9p\u00edteni. \u00c9s az a helyzet, hogy mivel a StatefulSet egy sablonb\u00f3l szabv\u00e1nyos megold\u00e1st ad, ez\u00e9rt erre nincs lehet\u0151s\u00e9g. <\/p>\n<p><\/p>\n<p>N\u00e9h\u00e1ny gondolkod\u00e1s ut\u00e1n \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy \u00edgy csin\u00e1ljuk. Minden replik\u00e1nknak a saj\u00e1t StatefulSet-je van. Ennek a megold\u00e1snak vannak h\u00e1tr\u00e1nyai, de a gyakorlatban mindent teljesen \u00f6sszefoglal az \u00fczemeltet\u0151. \u00c9s sz\u00e1mos el\u0151nye van. Teljesen olyan klasztert \u00e9p\u00edthet\u00fcnk, amilyet akarunk, p\u00e9ld\u00e1ul abszol\u00fat heterog\u00e9nt. Ez\u00e9rt abban a klaszterben, ahol k\u00e9t shard van, egy replik\u00e1val, k\u00e9t StatefulSet \u00e9s k\u00e9t Pod lesz, \u00e9ppen az\u00e9rt, mert ezt a megk\u00f6zel\u00edt\u00e9st v\u00e1lasztottuk a fent eml\u00edtett okok miatt a heterog\u00e9n klaszter fel\u00e9p\u00edt\u00e9s\u00e9nek lehet\u0151s\u00e9ge \u00e9rdek\u00e9ben. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b7ae92a545f9bb6cc5f0136df87207f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00e9rj\u00fcnk vissza a gyakorlati feladatokhoz. A klaszter\u00fcnkben felhaszn\u00e1l\u00f3kat kell be\u00e1ll\u00edtani, azaz valamilyen konfigur\u00e1ci\u00f3t kell v\u00e9gezni a ClickHouse-ban a Kubernetes-en. Az \u00fczemeltet\u0151 ehhez minden lehet\u0151s\u00e9get biztos\u00edt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6a65aa78293c0b40230cf24efc58e55a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00f6zvetlen\u00fcl a YAML-ben is meg\u00edrhatjuk, amit szeretn\u00e9nk. Minden konfigur\u00e1ci\u00f3s lehet\u0151s\u00e9g k\u00f6zvetlen\u00fcl t\u00e9rk\u00e9pez\u0151dik ebb\u0151l a YAML-b\u0151l a ClickHouse konfigur\u00e1ci\u00f3kba, amelyeket k\u00e9s\u0151bb elosztanak az eg\u00e9sz klaszterben.<\/p>\n<p><\/p>\n<p>Ilyen form\u00e1ban is \u00edrhatsz. Ez p\u00e9lda kedv\u00e9\u00e9rt van. A jelsz\u00f3 titkos\u00edtva is k\u00e9sz\u00fclhet. Minden ClickHouse konfigur\u00e1ci\u00f3s lehet\u0151s\u00e9g t\u00e1mogatott. Ez itt csak p\u00e9lda. <\/p>\n<p><\/p>\n<p>A klaszter konfigur\u00e1ci\u00f3ja ConfigMap-on kereszt\u00fcl terjed. A gyakorlatban a ConfigMap friss\u00edt\u00e9se nem azonnal t\u00f6rt\u00e9nik, ez\u00e9rt ha a klaszter nagy, akkor a konfigur\u00e1ci\u00f3 \u00e1tnyom\u00e1sa bizonyos id\u0151t vesz ig\u00e9nybe. De mindez nagyon k\u00e9nyelmes a haszn\u00e1lat sor\u00e1n.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2e42d19d7a558e3b8d4bbb51fe5bd08b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bonyolultabb feladatot kapunk. A klaszter fejl\u0151dik. Szeretn\u00e9nk replik\u00e1lni az adatokat. Azaz m\u00e1r van k\u00e9t shardunk, egy-egy replik\u00e1val, felhaszn\u00e1l\u00f3k be\u00e1ll\u00edtva. N\u00f6veksz\u00fcnk, \u00e9s a replik\u00e1l\u00e1ssal szeretn\u00e9nk foglalkozni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4c97e5e6ca9cb66d3a94fb8cfe610186.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mire van sz\u00fcks\u00e9g\u00fcnk a replik\u00e1l\u00e1shoz? <\/p>\n<p><\/p>\n<p>Sz\u00fcks\u00e9g\u00fcnk van ZooKeeperre. A ClickHouse replik\u00e1ci\u00f3ja ZooKeeper haszn\u00e1lat\u00e1val \u00e9p\u00fcl fel. A ZooKeeper sz\u00fcks\u00e9ges ahhoz, hogy a k\u00fcl\u00f6nb\u00f6z\u0151 ClickHouse replik\u00e1k konszenzusra jussanak arr\u00f3l, hogy mely adatr\u00e9szek tal\u00e1lhat\u00f3ak a k\u00fcl\u00f6nb\u00f6z\u0151 ClickHouse p\u00e9ld\u00e1nyokban. <\/p>\n<p><\/p>\n<p>B\u00e1rmilyen ZooKeeper haszn\u00e1lhat\u00f3. Ha van a v\u00e1llalatnak k\u00fcls\u0151 ZooKeepera, akkor azt lehet haszn\u00e1lni. Ha nincs, akkor a mi repo-nkb\u00f3l telep\u00edthet\u0151. Van egy telep\u00edt\u0151, ami megk\u00f6nny\u00edti ezt a folyamatot. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/6cc40951a19b982abf578836edf569d3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A rendszer teljes interakci\u00f3j\u00e1nak s\u00e9m\u00e1ja \u00edgy n\u00e9z ki. Van egy Kubernetes platformunk. Ezen fut a ClickHouse oper\u00e1tor. A ZooKeeper-t itt \u00e1br\u00e1zoltam. Az oper\u00e1tor \u00edgy interakci\u00f3ba l\u00e9p mind a ClickHouse-zal, mind a ZooKeeper-rel. Azaz interakci\u00f3 j\u00f6n l\u00e9tre. <\/p>\n<p><\/p>\n<p>Mindez az\u00e9rt sz\u00fcks\u00e9ges, hogy a ClickHouse sikeresen replik\u00e1lja az adatokat a k8s-ben.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4fc37aee850acd20517fa3d7562f0165.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9zz\u00fck most meg mag\u00e1t a feladatot, hogy hogyan fog kin\u00e9zni a replik\u00e1l\u00e1si manifest.<\/p>\n<p><\/p>\n<p>A manifest\u00fcnkh\u00f6z k\u00e9t szekci\u00f3t adunk hozz\u00e1. Az els\u0151 az, hogy honnan szerezz\u00fck be a ZooKeeper-t, ami lehet a Kubernetesen bel\u00fcl vagy k\u00fcls\u0151 is. Ez egyszer\u0171 le\u00edr\u00e1s. Rendel\u00fcnk replik\u00e1kat. Azaz szeretn\u00e9nk k\u00e9t replik\u00e1t. \u00d6sszesen teh\u00e1t 4 pod-unk kellene. A t\u00e1rol\u00e1sra eml\u00e9kez\u00fcnk, err\u0151l k\u00e9s\u0151bb besz\u00e9l\u00fcnk. A t\u00e1rol\u00e1s egy k\u00fcl\u00f6n t\u00e9ma. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/afb8c974d0587a4ad87d6ba36bbe5e3b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cdgy n\u00e9zett ki ez kor\u00e1bban.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/909ffd258dbce718ddf529a1a753de6f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most \u00edgy n\u00e9z ki. Hozz\u00e1ad\u00f3dnak a replik\u00e1k. A 4. nem f\u00e9rt be, de hissz\u00fck, hogy ott lehet sok. \u00c9s oldalra ker\u00fcl a ZooKeeper. A s\u00e9m\u00e1k bonyolultabb\u00e1 v\u00e1lnak. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c33b37fc7fc72f51276e5e98b9ec2134.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El\u00e9rkezett az id\u0151, hogy hozz\u00e1adjuk a k\u00f6vetkez\u0151 feladatot. Hozz\u00e1adjuk a Persistent Storage-t. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f28d14901a713eca413a52ec6ea21ac5.jpeg\" style=\"display:block;margin: 0 auto;\" \/>A Persistent Storage eset\u00e9ben k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e9grehajt\u00e1si lehet\u0151s\u00e9geink vannak.<\/p>\n<p><\/p>\n<p>Ha felh\u0151szolg\u00e1ltat\u00f3kkal m\u0171k\u00f6d\u00fcnk, p\u00e9ld\u00e1ul az Amazonnal vagy a Googlen\u00e1l, akkor nagy a k\u00eds\u00e9rt\u00e9s, hogy felh\u0151alap\u00fa t\u00e1rol\u00f3t haszn\u00e1ljunk. Ez nagyon k\u00e9nyelmes \u00e9s j\u00f3. <\/p>\n<p><\/p>\n<p>Van egy m\u00e1sik lehet\u0151s\u00e9g is. Ez a helyi t\u00e1rol\u00f3, amikor minden node-nak helyi lemezei vannak. Ez a lehet\u0151s\u00e9g sokkal bonyolultabb v\u00e9grehajtani, de cser\u00e9be produkt\u00edvabb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/483ee5c08b62e987620bf54fd32a44b4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9zz\u00fck meg, mi a helyzet a felh\u0151t\u00e1rol\u00f3val.<\/p>\n<p><\/p>\n<p>Vannak el\u0151nyei. Nagyon k\u00f6nnyen konfigur\u00e1lhat\u00f3. Csak megrendelj\u00fck a felh\u0151szolg\u00e1ltat\u00f3t\u00f3l, hogy k\u00e9rj\u00fck, adj nek\u00fcnk egy ilyen kapacit\u00e1s\u00fa, ilyen oszt\u00e1ly\u00fa t\u00e1rol\u00f3t. Az oszt\u00e1lyokat a szolg\u00e1ltat\u00f3k \u00f6n\u00e1ll\u00f3an hat\u00e1rozz\u00e1k meg. <\/p>\n<p><\/p>\n<p>\u00c9s van egy h\u00e1tr\u00e1nya is. Valakinek ez nem kritikus h\u00e1tr\u00e1ny. Nyilv\u00e1n lesznek teljes\u00edtm\u00e9nybeli probl\u00e9m\u00e1k. Ez nagyon k\u00e9nyelmes a munka sor\u00e1n, megb\u00edzhat\u00f3, de vannak potenci\u00e1lis teljes\u00edtm\u00e9nycs\u00f6kken\u00e9sek.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8e82430b64477f91640078ff4eacb47e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mivel a ClickHouse kifejezetten a teljes\u00edtm\u00e9nyre \u00f6sszpontos\u00edt, m\u00e9g azt is mondhatjuk, hogy mindent kihoznak bel\u0151le, ez\u00e9rt nagyon sok \u00fcgyf\u00e9l megpr\u00f3b\u00e1lja maxim\u00e1lis teljes\u00edtm\u00e9nyt nyerni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8638fe37b848a98ce8326218d368baa3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahhoz, hogy a lehet\u0151 legjobbat kihozzuk, sz\u00fcks\u00e9g\u00fcnk van helyi t\u00e1rol\u00f3ra.<\/p>\n<p><\/p>\n<p>A Kubernetes h\u00e1rom absztrakci\u00f3t k\u00edn\u00e1l a helyi t\u00e1rol\u00f3 haszn\u00e1lat\u00e1hoz. Ezek: <\/p>\n<p><\/p>\n<ul>\n<li>EmptyDir<\/li>\n<li>HostPath.<\/li>\n<li>Helyi<\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00e9zz\u00fck meg, miben k\u00fcl\u00f6nb\u00f6znek \u00e9s miben hasonl\u00edtanak. <\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is, mindh\u00e1rom megk\u00f6zel\u00edt\u00e9s eset\u00e9n a t\u00e1rol\u00f3 \u2013 helyi lemezek, amelyek ugyanazon a fizikai k8s nodon tal\u00e1lhat\u00f3k. De van n\u00e9h\u00e1ny k\u00fcl\u00f6nbs\u00e9g.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/79afb620a0c9a1552b47240b405fedc9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kezdj\u00fck a legegyszer\u0171bbel, az emptyDir-ral. Mi ez a gyakorlatban? Azt k\u00e9rj\u00fck a specifik\u00e1ci\u00f3nkb\u00f3l, hogy a kont\u00e9neriz\u00e1l\u00f3 rendszer (leggyakrabban Docker) biztos\u00edtson hozz\u00e1f\u00e9r\u00e9st a helyi lemez egy mapp\u00e1j\u00e1hoz.<\/p>\n<p><\/p>\n<p>A gyakorlatban a Docker valahol a saj\u00e1t \u00fatvonalain l\u00e9trehoz egy ideiglenes mapp\u00e1t, \u00e9s hossz\u00fa hash-k\u00e9nt nevezi el. \u00c9s hozz\u00e1f\u00e9r\u00e9si interf\u00e9szt k\u00edn\u00e1l. <\/p>\n<p><\/p>\n<p>Hogyan fog m\u0171k\u00f6dni a teljes\u00edtm\u00e9ny szempontj\u00e1b\u00f3l? Helyi lemez sebess\u00e9ggel fog m\u0171k\u00f6dni, teh\u00e1t teljes hozz\u00e1f\u00e9r\u00e9st kapunk a saj\u00e1t meghajt\u00f3nkhoz. <\/p>\n<p><\/p>\n<p>De ennek van egy h\u00e1tr\u00e1nya. A Persistent ebben a kontextusban meglehet\u0151sen k\u00e9rd\u0151jeles. A Docker kont\u00e9nerek els\u0151 mozdulat\u00e1n\u00e1l a Persistent elveszik. Ha a Kubernetes valamilyen okb\u00f3l \u00e1t akarja helyezni ezt a Pod-ot egy m\u00e1sik lemezre, az adatok elvesznek. <\/p>\n<p><\/p>\n<p>Ez a megk\u00f6zel\u00edt\u00e9s j\u00f3l m\u0171k\u00f6dik tesztel\u00e9s sor\u00e1n, mert a sebess\u00e9get m\u00e1r norm\u00e1lisnak mutatja, de valami komolyabb c\u00e9lra nem alkalmas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0b60f80fc9ea0e2c1820021bcd9e1382.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez\u00e9rt van a m\u00e1sodik megk\u00f6zel\u00edt\u00e9s. Ez a hostPath. Ha megn\u00e9zz\u00fck az el\u0151z\u0151 di\u00e1t \u00e9s ezt, l\u00e1thatjuk, hogy van egyetlen k\u00fcl\u00f6nbs\u00e9g. A mappa kiemelkedett a Dockerb\u0151l k\u00f6zvetlen\u00fcl a Kubernetes nodera. Itt egy kicsit egyszer\u0171bb a helyzet. K\u00f6zvetlen\u00fcl megadjuk a helyi f\u00e1jlrendszeren a helyet, ahol szeretn\u00e9nk t\u00e1rolni az adatainkat. <\/p>\n<p><\/p>\n<p>Ennek a m\u00f3dszernek vannak el\u0151nyei. Ez m\u00e1r val\u00f3di Persistent, r\u00e1ad\u00e1sul klasszikus \u00e9rtelemben. Az adatok a lemezen egy adott c\u00edmre lesznek mentve. <\/p>\n<p><\/p>\n<p>Vannak h\u00e1tr\u00e1nyai is. Ez a kezel\u00e9s bonyolults\u00e1ga. A Kubernetes\u00fcnk \u00e1thelyezheti a Podot egy m\u00e1sik fizikai csom\u00f3pontba. Itt l\u00e9p be a DevOps szerepe. Meg kell magyar\u00e1znia a rendszernek, hogy ezeket a podokat csak olyan csom\u00f3pontokra lehet \u00e1thelyezni, ahol az adott \u00fatvonalakon valami van csatolva, \u00e9s egyszerre nem t\u00f6bb mint egy csom\u00f3pontba. Ez meglehet\u0151sen bonyolult. <\/p>\n<p><\/p>\n<p>Ezen c\u00e9lok \u00e9rdek\u00e9ben n\u00e1lunk az \u00fczemeltet\u0151n\u00e9l k\u00e9sz\u00edtett\u00fcnk sablonokat, hogy ezt a bonyolults\u00e1got eltakarhassuk. \u00cdgy egyszer\u0171en csak annyit mondhatunk: \u201eAzt szeretn\u00e9m, hogy minden fizikai csom\u00f3pontra legyen egy ClickHouse p\u00e9ld\u00e1ny, \u00e9s ezen a-milyen \u00faton\u201d. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f64c19bccc8b187d6af112eda896b25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De ez a sz\u00fcks\u00e9glet nemcsak sz\u00e1munkra van, ez\u00e9rt a Kubernetes \u00fariemberei is \u00e9rtik, hogy az emberek szeretn\u00e9k el\u00e9rni a fizikai lemezeket, ez\u00e9rt megadj\u00e1k a harmadik szintet.<\/p>\n<p><\/p>\n<p>Ez a local. A k\u00fcl\u00f6nbs\u00e9g az el\u0151z\u0151 di\u00e1hoz szinte \u00e9szrev\u00e9tlen. Kor\u00e1bban k\u00e9zzel kellett elv\u00e9gezni a feladatokat, ami megakad\u00e1lyozta, hogy ezeket a podokat csom\u00f3pontr\u00f3l csom\u00f3pontra \u00e1thelyezz\u00fck, mert azoknak egy adott \u00faton kellett \u00f6sszekapcsol\u00f3dniuk a helyi fizikai lemezzel, de most ezeket az ismereteket a Kubernetes mag\u00e1ba foglalja. \u00cdgy sokkal egyszer\u0171bb\u00e9 v\u00e1lik a konfigur\u00e1l\u00e1s.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/140c43be34dd7015c0bf4cfd0a0bb384.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00e9rj\u00fcnk vissza a gyakorlati feladatunkra. T\u00e9rj\u00fcnk vissza a YAML sablonhoz. Itt megjelent egy val\u00f3di t\u00e1rol\u00f3. Visszat\u00e9rt\u00fcnk ehhez. A klasszikus VolumeClaim sablont olyan m\u00f3don adjuk meg, ahogy a k8s-ben szok\u00e1s, \u00e9s le\u00edrjuk, hogy milyen t\u00e1rol\u00f3t szeretn\u00e9nk.<\/p>\n<p><\/p>\n<p>Ezut\u00e1n a k8s k\u00e9rni fogja a t\u00e1rol\u00f3t. Kiosztja nek\u00fcnk a StatefulSet-ben. Ennek eredm\u00e9nyek\u00e9nt ez a ClickHouse rendelkez\u00e9s\u00e9re \u00e1ll.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/960e666486ed09cebd83235d43f83970.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Volt egy ilyen diagramunk. A Persistent Storage-unk piros volt, ami \u00fagy t\u0171nt, hogy jelezni akarja, hogy ezt meg kellene csin\u00e1lni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a989df489e3a9fef6a4fbf7b93c489a6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s ez z\u00f6ldd\u00e9 v\u00e1lik. Most a ClickHouse k8s klaszter diagramja teljesen v\u00e9gleges\u00edtve lett. Van shardunk, replik\u00e1ink, ZooKeeper, \u00e9s egy val\u00f3di Persistent, amelyet valamilyen m\u00f3don megval\u00f3s\u00edtottunk. A diagram m\u00e1r teljesen m\u0171k\u00f6d\u0151k\u00e9pes. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/c409ee5da6309a67904394d968ed4906.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tov\u00e1bbra is \u00e9l\u00fcnk. A klaszter fejl\u0151dik. Alexei igyekszik, \u00e9s kiadja az \u00faj ClickHouse verzi\u00f3t.<\/p>\n<p><\/p>\n<p>Gyakorlati feladat mer\u00fcl fel - tesztelni az \u00faj ClickHouse verzi\u00f3t a klaszter\u00fcnk\u00f6n. Term\u00e9szetesen nem akarjuk az eg\u00e9sz rendszert friss\u00edteni, hanem szeretn\u00e9nk egy t\u00e1voli sarokban \u00faj verzi\u00f3t telep\u00edteni, vagy tal\u00e1n nem is egy \u00faj verzi\u00f3t, hanem r\u00f6gt\u00f6n kett\u0151t, mert gyakran jelennek meg. <\/p>\n<p><\/p>\n<p>Mit mondhatunk ezzel kapcsolatban?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48ed52d393d977d0cfaa9320bd02ed1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt lehet\u0151s\u00e9g\u00fcnk van egy ilyen sablonokkal rendelkez\u0151 pod l\u00e9trehoz\u00e1s\u00e1ra. Az oper\u00e1torunk teljesen lehet\u0151v\u00e9 teszi hibrid klaszter \u00e9p\u00edt\u00e9s\u00e9t. Azaz, a konfigur\u00e1ci\u00f3t b\u00e1rmely replik\u00e1b\u00f3l kiindulva testre szabhatjuk, eg\u00e9szen od\u00e1ig, hogy meghat\u00e1rozzuk, melyik ClickHouse verzi\u00f3t \u00e9s milyen t\u00e1rol\u00f3 verzi\u00f3t szeretn\u00e9nk. Teljesen testre tudjuk szabni a klasztert a k\u00edv\u00e1nt konfigur\u00e1ci\u00f3ban. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4949ecd8119cb4ec0f4bad9bf27fa74e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most m\u00e1r kicsit m\u00e9lyebben belemegy\u00fcnk a r\u00e9szletekbe. Eddig a ClickHouse oper\u00e1tor m\u0171k\u00f6d\u00e9s\u00e9r\u0151l besz\u00e9lt\u00fcnk, \u00f6sszef\u00fcgg\u00e9sben a ClickHouse saj\u00e1toss\u00e1gaival.<\/p>\n<p><\/p>\n<p>Most szeretn\u00e9k p\u00e1r sz\u00f3t sz\u00f3lni arr\u00f3l, hogy b\u00e1rmely oper\u00e1tor hogyan m\u0171k\u00f6dik \u00e1ltal\u00e1ban, \u00e9s arr\u00f3l, hogyan kapcsol\u00f3dik a K8s-hez.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ca9c2a23c54b2a81ac0a8bba88d5e65.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r vizsg\u00e1ljuk meg a K8s-hez val\u00f3 kapcsol\u00f3d\u00e1st. Mi t\u00f6rt\u00e9nik, amikor v\u00e9grehajtjuk a kubectl apply parancsot? Az API-n kereszt\u00fcl az etcd-ben megjelennek az objektumaink. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4b9eaedeb0f34d10398ba0187f09fef9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul a Kubernetes alapvet\u0151 objektumai: pod, StatefulSet, service, \u00e9s \u00edgy tov\u00e1bb. <\/p>\n<p><\/p>\n<p>Ekkor fizikailag m\u00e9g semmi sem t\u00f6rt\u00e9nik. Ezeket az objektumokat materializ\u00e1lni kell a klaszterben. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/3c49dc1b0067347d5fc415ef9b87642d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ehhez egy vez\u00e9rl\u0151 (controller) j\u00f6n l\u00e9tre. A vez\u00e9rl\u0151 egy speci\u00e1lis K8s komponens, amely k\u00e9pes a le\u00edr\u00e1sok materializ\u00e1l\u00e1s\u00e1ra. Tudja, hogyan \u00e9s mit kell fizikailag tenni. Tudja, hogyan kell kont\u00e9nereket ind\u00edtani, \u00e9s mit kell be\u00e1ll\u00edtani ahhoz, hogy a szerver m\u0171k\u00f6dj\u00f6n. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/d951eb0f7bacf519566b0ef6cf9bc100.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A vez\u00e9rl\u0151 a K8s-ben materializ\u00e1lja az objektumainkat.<\/p>\n<p><\/p>\n<p>De nemcsak podokkal \u00e9s StatefulSet-ekkel akarunk foglalkozni, hanem l\u00e9tre akarunk hozni egy ClickHouseInstallation-t, azaz egy ClickHouse t\u00edpus\u00fa objektumot, hogy mint egy egys\u00e9ges eg\u00e9szet tudjunk vele oper\u00e1lni. Jelenleg erre nincs lehet\u0151s\u00e9g. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1594921ac5dd9384ce81ceae92f5cda9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Viszont a K8s-nek van egy k\u00f6vetkez\u0151 kedvez\u0151 aspektusa. Azt szeretn\u00e9nk, hogy valahol legyen egy ilyen \u00f6sszetett entit\u00e1s, amely podokb\u00f3l \u00e9s StatefulSet-ekb\u0151l \u00e1ll\u00edtan\u00e1 \u00f6ssze a klaszter\u00fcnket. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/04f86706f506fa91e365d45537dd9def.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ehhez mit kell tenn\u00fcnk? El\u0151sz\u00f6r is, sz\u00ednre l\u00e9p a Custom Resource Definition. Mi ez? Ez egy le\u00edr\u00e1s a K8s sz\u00e1m\u00e1ra arr\u00f3l, hogy lesz m\u00e9g egy adategys\u00e9g, amelyet a podokhoz \u00e9s StatefulSet-ekhez szeretn\u00e9nk hozz\u00e1adni, \u00e9s amely bels\u0151leg \u00f6sszetett lesz. Ez az adatstrukt\u00fara le\u00edr\u00e1sa. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f02ae12ef3ab5db974234b14e38792ac.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezt is elk\u00fcldj\u00fck a kubectl apply seg\u00edts\u00e9g\u00e9vel. A Kubernetes ezt \u00f6r\u00f6mmel fogadta. <\/p>\n<p><\/p>\n<p>Most pedig a t\u00e1rol\u00f3ban, az etcd-ben megjelenik a lehet\u0151s\u00e9g, hogy l\u00e9trehozzuk a ClickHouseInstallation nev\u0171 egyedi er\u0151forr\u00e1st.<\/p>\n<p><\/p>\n<p>De m\u00e9g nem t\u00f6rt\u00e9nt semmi. Azaz, ha most l\u00e9trehozunk egy YAML-f\u00e1jlt, amelyben a sharde-okat, replik\u00e1kat \u00edrjuk le, \u00e9s mondjuk, hogy \u201ekubectl apply\u201d, akkor a Kubernetes elfogadja, elhelyezi az etcd-ben, \u00e9s azt mondja: \u201eJ\u00f3l van, de nem tudom, mit tegyek vele. Hogyan kell karbantartani a ClickHouseInstallation-t, azt nem tudom.\u201d <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7c2f9f3f81b83c987a3bd72a881d0d91.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez\u00e9rt sz\u00fcks\u00e9g\u00fcnk van valakire, aki seg\u00edt a Kubernetesnek kezelni az \u00faj adat t\u00edpust. Bal oldalon van a nat\u00edv Kubernetes vez\u00e9rl\u0151, amely a nat\u00edv adat t\u00edpusokkal dolgozik. Jobb oldalon pedig meg kell jelennie egy testreszabott vez\u00e9rl\u0151nek, amely k\u00e9pes dolgozni a testreszabott adatt\u00edpusokkal. <\/p>\n<p><\/p>\n<p>\u00c9s ezt m\u00e1sk\u00e9nt oper\u00e1tornak h\u00edvj\u00e1k. Ezt itt sz\u00e1nd\u00e9kosan a Kubernetesen k\u00edv\u00fclire hoztam, mert k\u00e9pes futni a K8s-en k\u00edv\u00fcl is. Legt\u00f6bbsz\u00f6r term\u00e9szetesen az \u00f6sszes oper\u00e1tor a Kubernetesben fut, de semmi nem akad\u00e1lyozza meg, hogy kint \u00e1lljon, ez\u00e9rt itt sz\u00e1nd\u00e9kosan kivett\u00fck a Kubernetesb\u0151l. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7aa3a1b67d0def5ba752dff56baeebbf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A testreszabott vez\u00e9rl\u0151, m\u00e1s n\u00e9ven oper\u00e1tor, a Kubernetes-szel az API-n kereszt\u00fcl l\u00e9p kapcsolatba. \u0150 m\u00e1r k\u00e9pes kommunik\u00e1lni az API-val. \u00c9s m\u00e1r tudja, hogyan lehet a testreszabott er\u0151forr\u00e1sb\u00f3l megval\u00f3s\u00edtani a bonyolult s\u00e9m\u00e1t, amit l\u00e9tre szeretn\u00e9nk hozni. Ezzel foglalkozik az oper\u00e1tor. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a5f773ddc3663f24d5379955da9c3037.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan m\u0171k\u00f6dik az oper\u00e1tor? N\u00e9zz\u00fck meg a jobb oldalt, hogy megtudjuk, hogyan csin\u00e1lja. Fedezz\u00fck fel, hogyan realiz\u00e1lja az oper\u00e1tor mindezt, \u00e9s hogyan t\u00f6rt\u00e9nik a tov\u00e1bbi interakci\u00f3 a K8s-szel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/08a8d8dbcb35117a0eb3320589c6ff8d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az oper\u00e1tor egy program. Esem\u00e9nyorient\u00e1lt. Az oper\u00e1tor a Kubernetes API seg\u00edts\u00e9g\u00e9vel feliratkozik az esem\u00e9nyekre. A Kubernetes API-n vannak bel\u00e9p\u00e9si pontok, ahol fel lehet iratkozni az esem\u00e9nyekre. Ha valami v\u00e1ltozik a K8s-ben, akkor a Kubernetes esem\u00e9nyeket k\u00fcld minden \u00e9rdekl\u0151d\u0151nek, azaz aki feliratkozott arra az API pontra, az fog \u00e9rtes\u00edt\u00e9seket kapni.<\/p>\n<p><\/p>\n<p>Az oper\u00e1tor feliratkozik az esem\u00e9nyekre, \u00e9s valamilyen reakci\u00f3t kell tennie. Az \u0151 feladata reag\u00e1lni a megjelen\u0151 esem\u00e9nyekre. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9f0664a4151e6e7f6f8575a3e54372e9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az esem\u00e9nyek valamilyen friss\u00edt\u00e9sek \u00e1ltal gener\u00e1l\u00f3dnak. Meg\u00e9rkezik a YAML-f\u00e1jlt a ClickHouseInstallation le\u00edr\u00e1s\u00e1val. Az a kubectl apply-n kereszt\u00fcl jut el az etcd-hez. Ott l\u00e9trej\u00f6tt egy esem\u00e9ny, amely v\u00e9g\u00fcl eljutott a ClickHouse-oper\u00e1torhoz. Az oper\u00e1tor megkapta ezt a le\u00edr\u00e1st. \u00c9s valamit tennie kell. Ha friss\u00edt\u00e9s \u00e9rkezik a ClickHouseInstallation objektumra, akkor friss\u00edteni kell a klasztert. Az oper\u00e1tor feladata pedig az, hogy friss\u00edtse a klasztert. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/0952bdd391a72aa15bf66af4ce69f4af.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit csin\u00e1l? El\u0151sz\u00f6r is, tervet kell k\u00e9sz\u00edten\u00fcnk arr\u00f3l, hogy mit fogunk tenni ezzel a friss\u00edt\u00e9ssel. A friss\u00edt\u00e9sek lehetnek nagyon kicsik, p\u00e9ld\u00e1ul YAML form\u00e1tumban, de jelent\u0151s v\u00e1ltoz\u00e1sokat okozhatnak a klaszterben. Ez\u00e9rt az \u00fczemeltet\u0151 elk\u00e9sz\u00edti a tervet, amelyhez ezut\u00e1n tartja mag\u00e1t.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/79caaa43b6fd9f3e2eb1afe44ecb2df9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A terv szerint neki\u00e1ll az alapstrukt\u00far\u00e1nak, hogy megval\u00f3s\u00edtsa a podokat, szolg\u00e1ltat\u00e1sokat, teh\u00e1t azt, ami a f\u0151 feladata. Ez olyan, mint egy ClickHouse klaszter \u00e9p\u00edt\u00e9se Kubernetes alatt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e91576a26d6b758a68ae0b35cbe01897.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most \u00e9rints\u00fcnk meg egy \u00e9rdekes dolgot. Ez a felel\u0151ss\u00e9gek megoszt\u00e1sa a Kubernetes \u00e9s az \u00fczemeltet\u0151 k\u00f6z\u00f6tt, teh\u00e1t mi a Kubernetes feladata, mi az \u00fczemeltet\u0151\u00e9, \u00e9s hogyan m\u0171k\u00f6dnek egy\u00fctt. <\/p>\n<p><\/p>\n<p>A Kubernetes a rendszerszint\u0171 feladatok\u00e9rt felel\u0151s, teh\u00e1t az alapvet\u0151 objektumok k\u00e9szlet\u00e9\u00e9rt, amelyeket rendszerszint\u0171nek tekinthet\u00fcnk. A Kubernetes tudja, hogyan ind\u00edtsa el a podokat, hogyan ind\u00edtsa \u00fajra a kont\u00e9nereket, hogyan csatlakoztassa a t\u00e1rol\u00f3kat, hogyan m\u0171k\u00f6dj\u00f6n a ConfigMap-el, teh\u00e1t mindent, amit rendszernek nevezhet\u00fcnk. <\/p>\n<p><\/p>\n<p>Az \u00fczemeltet\u0151k a szakter\u00fcleteken m\u0171k\u00f6dnek. Minden \u00fczemeltet\u0151 saj\u00e1t szakter\u00fclet\u00e9re k\u00e9sz\u00fclt. Mi a ClickHouse-hoz k\u00e9sz\u00edtett\u00fck.<\/p>\n<p><\/p>\n<p>Az \u00fczemeltet\u0151 pontosan a szakter\u00fclet kifejez\u00e9seiben kommunik\u00e1l, mint p\u00e9ld\u00e1ul egy replik\u00e1t hozz\u00e1adni, s\u00e9m\u00e1t k\u00e9sz\u00edteni, monitoringot be\u00e1ll\u00edtani. Ez egyfajta megosztotts\u00e1got eredm\u00e9nyez.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/9dc07d9c29d5dfd538343aadb751e4c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e9zz\u00fck meg egy gyakorlati p\u00e9lda seg\u00edts\u00e9g\u00e9vel, hogy ez a felel\u0151ss\u00e9gmegoszt\u00e1s hogyan val\u00f3sul meg, amikor a replik\u00e1t szeretn\u00e9nk hozz\u00e1adni. <\/p>\n<p><\/p>\n<p>Az \u00fczemeltet\u0151h\u00f6z \u00e9rkezik a feladat \u2013 replik\u00e1t hozz\u00e1adni. Mit csin\u00e1l az \u00fczemeltet\u0151? Az \u00fczemeltet\u0151 kisz\u00e1m\u00edtja, hogy \u00faj StatefulSet-et kell l\u00e9trehozni, amelyben a megfelel\u0151 sablonokat \u00e9s a t\u00e1rol\u00f3 ig\u00e9nyt kell le\u00edrni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/7a31f2f76a3bdda87e4bccf0e04fe4a8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mindennel elk\u00e9sz\u00fclt, \u00e9s tov\u00e1bb\u00edtja a K8s-nek. Megmondja, hogy sz\u00fcks\u00e9ge van ConfigMap-re, StatefulSet-re, Volumere. A Kubernetes feldolgozza. Megval\u00f3s\u00edtja az alapvet\u0151 egys\u00e9geket, amelyekkel dolgozik. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/2be6892234cc12b056962265c13dba07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezut\u00e1n \u00fajra bel\u00e9p a k\u00e9pbe a ClickHouse-\u00fcgyint\u00e9z\u0151. M\u00e1r van egy fizikai podja, amelyen tev\u00e9kenykedni lehet. A ClickHouse-\u00fcgyint\u00e9z\u0151 ism\u00e9t szakter\u00fcleti kifejez\u00e9sekben dolgozik. Teh\u00e1t konkr\u00e9tan a ClickHouse-n\u00e1l ahhoz, hogy a replik\u00e1t a klaszterbe integr\u00e1lhassuk, el\u0151sz\u00f6r a klaszter adatainak s\u00e9m\u00e1j\u00e1t kell be\u00e1ll\u00edtani. M\u00e1sodszor, ezt a replik\u00e1t be kell \u00e1ll\u00edtani a monitoring sz\u00e1m\u00e1ra, hogy j\u00f3l nyomon k\u00f6vethet\u0151 legyen. Ezt az \u00fczemeltet\u0151 \u00e1ll\u00edtja be. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/790616342b98b347fa67e0100754c8b6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s csak ezut\u00e1n l\u00e9p m\u0171k\u00f6d\u00e9sbe a ClickHouse, azaz egy m\u00e9g magasabb szint\u0171 entit\u00e1s. Ez m\u00e1r egy adatb\u00e1zis. Van egy saj\u00e1t p\u00e9ld\u00e1nya, egy \u00fajabb konfigur\u00e1lt replik\u00e1ja, amely k\u00e9szen \u00e1ll a klaszterbe val\u00f3 bekapcsol\u00f3d\u00e1sra.<\/p>\n<p><\/p>\n<p>\u00cdgy a replik\u00e1k hozz\u00e1ad\u00e1s\u00e1nak v\u00e9grehajt\u00e1si l\u00e1nca \u00e9s a felel\u0151ss\u00e9gek megoszt\u00e1sa meglehet\u0151sen hossz\u00fa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5ec79cfa2b45fadbe25f4d9fe8d2ec5d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Folytatjuk a gyakorlati feladatainkat. Ha m\u00e1r van klaszter, akkor lehet\u0151s\u00e9g van a konfigur\u00e1ci\u00f3 migr\u00e1l\u00e1s\u00e1ra. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/a52aee0d4350b8da00cdb4b525df80ad.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00dagy alak\u00edtottuk, hogy a megl\u00e9v\u0151 XML-be, amelyet a ClickHouse \u00e9rt, \u00e1tbocs\u00e1that\u00f3k az adatok.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/91abb1d3b0a14f2118361403a74e14c1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lehet\u0151s\u00e9g van a ClickHouse finomhangol\u00e1s\u00e1ra. A zoned deployment pontosan az, amir\u0151l besz\u00e9ltem a hostPath \u00e9s a lok\u00e1lis t\u00e1rol\u00f3 magyar\u00e1zata sor\u00e1n. Ez az, hogyan kell helyesen megval\u00f3s\u00edtani a zoned deploymentet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/fde502f30223e04a918f4fd598c3dd9f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 gyakorlati feladat a monitoring.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4e685fba7883075105c0164a778c51e1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ha a klaszter\u00fcnk v\u00e1ltozik, rendszeresen be kell \u00e1ll\u00edtani a monitoringot. <\/p>\n<p><\/p>\n<p>N\u00e9zz\u00fck meg a s\u00e9m\u00e1t. A z\u00f6ld nyilakat m\u00e1r megvitattuk. Most n\u00e9zz\u00fck meg a piros nyilakat. Ez az, ahogyan szeretn\u00e9nk monitorozni a klaszter\u00fcnket. Hogyan jutnak a ClickHouse klaszterb\u0151l sz\u00e1rmaz\u00f3 metrik\u00e1k a Prometheushoz, majd a Grafan\u00e1ba.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1210c1423f99d48a20e06e855bf48a72.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi a neh\u00e9zs\u00e9g a monitoringgal? Mi\u00e9rt tekintik ezt valamilyen el\u00e9rt eredm\u00e9nynek? A neh\u00e9zs\u00e9g a dinamizmusban rejlik. Amikor egy klaszter statikus, be lehet \u00e1ll\u00edtani egyszer a monitoringot, \u00e9s azut\u00e1n nem kell vele foglalkozni.<\/p>\n<p><\/p>\n<p>De ha sok klaszter\u00fcnk van, vagy folyamatosan v\u00e1ltozik valami, akkor a folyamat dinamikus. Folyamatosan \u00fajra kellene \u00e1ll\u00edtani a monitoringot, ami er\u0151forr\u00e1s- \u00e9s id\u0151ig\u00e9nyes, teh\u00e1t m\u00e9g csak lustas\u00e1g is. Ezt automatiz\u00e1lni kell. A neh\u00e9zs\u00e9g \u00e9ppen a folyamat dinamik\u00e1j\u00e1ban rejlik. Az oper\u00e1tor ezt nagyon j\u00f3l automatiz\u00e1lja. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/48a7264f1228671e0c483c8211a71eb3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hogyan fejl\u0151d\u00f6tt a klaszter\u00fcnk? Eleinte ilyen volt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/8a8c7b6cd5562deb315368e1e8e1c976.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Azt\u00e1n ilyen lett.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/1a3e915fbadf3aa5f3b33d337f36e76e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u00e9g\u00fcl pedig ilyen lett. <\/p>\n<p><\/p>\n<p>A monitoringot automatikusan v\u00e9gzi az oper\u00e1tor. Egys\u00e9ges bel\u00e9p\u00e9si pont. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/e079e65bf8deff43a81d8ffde938a709.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi csak a kimeneten n\u00e9zz\u00fck a Grafana vez\u00e9rl\u0151pulton, hogyan pezseg a klaszter\u00fcnk \u00e9lete. <\/p>\n<p><\/p>\n<p>Egy\u00e9bk\u00e9nt a Grafana vez\u00e9rl\u0151pult is az oper\u00e1torunkkal egy\u00fctt terjeszt\u00e9sre ker\u00fcl, k\u00f6zvetlen\u00fcl a forr\u00e1sokban. Csatlakozhatunk \u00e9s haszn\u00e1lhatjuk. Ezt a k\u00e9perny\u0151k\u00e9pet a DevOps csapatunk adta nekem.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4ad1c2899dd845d0ba4185bdf758468c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hov\u00e1 szeretn\u00e9nk tov\u00e1bbhaladni? Ez:<\/p>\n<p><\/p>\n<ul>\n<li>Fejleszteni az automatiz\u00e1lt tesztel\u00e9st. A f\u0151 c\u00e9l az \u00faj verzi\u00f3k automatiz\u00e1lt tesztel\u00e9se. <\/li>\n<li>Szeretn\u00e9nk automatiz\u00e1lni az integr\u00e1ci\u00f3t a ZooKeeper-rel. Tervezz\u00fck a ZooKeeper-oper\u00e1torral val\u00f3 integr\u00e1ci\u00f3t is. Teh\u00e1t a ZooKeeper-hez \u00edrtunk egy oper\u00e1tort, amely logikus lenne, hogy integr\u00e1l\u00f3djon k\u00e9t oper\u00e1tor, hogy egy k\u00e9nyelmesebb megold\u00e1st \u00e9p\u00edthess\u00fcnk. <\/li>\n<li>Komplexebb \u00e9letjel-ellen\u0151rz\u00e9seket szeretn\u00e9nk v\u00e9gezni. <\/li>\n<li>Z\u00f6ld sz\u00ednnel jel\u00f6ltem meg, hogy el\u00e9rkezett a Templates \u00f6r\u00f6kl\u00e9se \u2013 K\u00c9SZ, azaz a k\u00f6vetkez\u0151 oper\u00e1tor kiad\u00e1s\u00e1val m\u00e1r rendelkezni fogunk a sablonok \u00f6r\u00f6kl\u00e9s\u00e9vel. Ez egy er\u0151teljes eszk\u00f6z, amely lehet\u0151v\u00e9 teszi bonyolult konfigur\u00e1ci\u00f3k \u00e9p\u00edt\u00e9s\u00e9t darabokb\u00f3l. <\/li>\n<li>\u00c9s szeretn\u00e9nk automatiz\u00e1lni a bonyolult feladatokat. A legfontosabb ezek k\u00f6z\u00fcl a Re-sharding. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/f232c0aab389be5069e5c7886e265c01.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00e9sz\u00edts\u00fcnk egy k\u00f6zbens\u0151 \u00f6sszegz\u00e9st. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/62f7814994af0441ba5a82de4e9780d7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit kapunk v\u00e9g\u00fcl? \u00c9rdemes-e ezzel foglalkozni, vagy nem? \u00c9rdemes-e egy\u00e1ltal\u00e1n megpr\u00f3b\u00e1lni beilleszteni az adatb\u00e1zist Kubernetesbe \u00e9s alkalmazni az oper\u00e1tort \u00e1ltal\u00e1ban \u00e9s az Alitnity-operator eset\u00e9ben?<\/p>\n<p><\/p>\n<p>V\u00e9g\u00fcl ezt kapjuk:<\/p>\n<p><\/p>\n<ul>\n<li>Jelent\u0151s egyszer\u0171s\u00edt\u00e9st \u00e9s automatiz\u00e1l\u00e1st a konfigur\u00e1l\u00e1sban, telep\u00edt\u00e9sben \u00e9s folyamatos karbantart\u00e1sban. <\/li>\n<li>Azonnal be\u00e9p\u00edtett megfigyel\u00e9s. <\/li>\n<li>\u00c9s k\u00e9szen haszn\u00e1lhat\u00f3 k\u00f3dolt sablonok bonyolult helyzetekhez. Eddig a replika hozz\u00e1ad\u00e1sa m\u00e1r nem kell manu\u00e1lisan t\u00f6rt\u00e9njen. Ezt az oper\u00e1tor v\u00e9gzi. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/aebccd7a2dc55f14645f79f89f7b7458.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Csak az utols\u00f3 k\u00e9rd\u00e9s maradt. Az adatb\u00e1zisunk m\u00e1r Kubernetesben van, virtualiz\u00e1l\u00e1sban. Mi a helyzet ennek a megold\u00e1snak a teljes\u00edtm\u00e9ny\u00e9vel, k\u00fcl\u00f6n\u00f6sen figyelembe v\u00e9ve, hogy a ClickHouse az optimaliz\u00e1lt teljes\u00edtm\u00e9nyre van tervezve?<\/p>\n<p><\/p>\n<p>A v\u00e1lasz \u2013 minden rendben van! Nem fogom r\u00e9szletezni, ez egy m\u00e1sik el\u0151ad\u00e1s t\u00e9m\u00e1ja. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/ffc230941f0ae24926186db4d8d68ade.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De van egy projekt, mint a TSBS. Mi az alapvet\u0151 feladata? Ez egy adatb\u00e1zis-teljes\u00edtm\u00e9ny teszt. Pr\u00f3b\u00e1lkoz\u00e1s a \u201emeleg\u201d \u00f6sszehasonl\u00edt\u00e1s\u00e1val, \u201epuha\u201d dolgok \u00f6sszehasonl\u00edt\u00e1sa. <\/p>\n<p><\/p>\n<p>Hogyan m\u0171k\u00f6dik? Egy adat k\u00e9szletet gener\u00e1lnak. Majd ezt az adatot azonos tesztk\u00e9szlet seg\u00edts\u00e9g\u00e9vel futtatj\u00e1k k\u00fcl\u00f6nb\u00f6z\u0151 adatb\u00e1zisokon. \u00c9s minden adatb\u00e1zis egy adott feladatot a tud\u00e1sa szerint old meg. Azt\u00e1n az eredm\u00e9nyeket \u00f6ssze lehet hasonl\u00edtani. <\/p>\n<p><\/p>\n<p>Ez m\u00e1r sz\u00e1mos adatb\u00e1zist t\u00e1mogat. H\u00e1rom f\u0151t emeltem ki. Ezek:<\/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 a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/5b4733534a4e6e36fb7788127adc6e86.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Szint\u00e9n \u00f6sszehasonl\u00edt\u00e1st v\u00e9geztek egy hasonl\u00f3 megold\u00e1ssal. Az \u00f6sszehasonl\u00edt\u00e1st a RedShift-tel v\u00e9gezt\u00e9k. Az \u00f6sszehasonl\u00edt\u00e1st az Amazon-on v\u00e9gezt\u00e9k. A ClickHouse ezen a t\u00e9ren is j\u00f3l teljes\u00edt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/44cc8dedc07a02fe1ed5aad3e17a579c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Milyen k\u00f6vetkeztet\u00e9seket vonhatunk le abb\u00f3l, amit elmondtam?<\/p>\n<p><\/p>\n<ul>\n<li>Adatb\u00e1zis Kubernetesben lehets\u00e9ges. Val\u00f3sz\u00edn\u0171leg b\u00e1rmilyen t\u00edpus\u00fa, de \u00f6sszess\u00e9g\u00e9ben \u00fagy t\u0171nik, hogy lehets\u00e9ges. A ClickHouse Kubernetesben biztosan m\u0171k\u00f6dik a mi oper\u00e1torunk erej\u00e9vel. <\/li>\n<li>Az oper\u00e1tor seg\u00edt automatiz\u00e1lni a folyamatokat, \u00e9s val\u00f3ban megk\u00f6nny\u00edti az \u00e9letet.<\/li>\n<li>A teljes\u00edtm\u00e9ny norm\u00e1lis.<\/li>\n<li>\u00c9s \u00fagy gondoljuk, hogy ezt lehet \u00e9s kell is haszn\u00e1lni. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ny\u00edlt forr\u00e1sk\u00f3d\u00fa \u2013 csatlakozzon!<\/p>\n<p><\/p>\n<p>Ahogy m\u00e1r eml\u00edtettem, az oper\u00e1tor egy teljesen ny\u00edlt forr\u00e1sk\u00f3d\u00fa term\u00e9k, ez\u00e9rt nagyon j\u00f3 lenne, ha min\u00e9l t\u00f6bb ember haszn\u00e1ln\u00e1. Csatlakozzon! V\u00e1rjuk \u00d6n\u00f6ket!<\/p>\n<p><\/p>\n<p>K\u00f6sz\u00f6n\u00f6m mindenkinek!<\/p>\n<p><\/p>\n<p>K\u00e9rd\u00e9sek<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Oper\u00e1tor a Kubernetes-ben az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019)\" src=\"\/wp-content\/uploads\/2020\/10\/4afe8b10c4f103c2a9a295511e4eb69a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m a bemutat\u00f3t! Anton vagyok a SEMrush-t\u00f3l. Engem \u00e9rdekel, mi a helyzet a napl\u00f3z\u00e1ssal. A monitoroz\u00e1sr\u00f3l hallottunk, de a napl\u00f3z\u00e1sr\u00f3l semmit, ha az eg\u00e9sz klaszterre gondolunk. N\u00e1lunk p\u00e9ld\u00e1ul egy klasztert ind\u00edtottunk hardveren. K\u00f6zpontos\u00edtott napl\u00f3z\u00e1st haszn\u00e1lunk, a standard eszk\u00f6z\u00f6kkel gy\u0171jtj\u00fck \u00f6ssze az adatokat. Majd onnan kinyerj\u00fck az \u00e9rdekes sz\u00e1munkra adatokat.<\/em> <\/p>\n<p><\/p>\n<p>J\u00f3 k\u00e9rd\u00e9s, teh\u00e1t a napl\u00f3z\u00e1s a teend\u0151k list\u00e1j\u00e1n szerepel. Az oper\u00e1torunk ezt jelenleg nem automatiz\u00e1lja. M\u00e9g v\u017edy fejl\u0151dik, a projekt m\u00e9g el\u00e9g fiatal. Meg\u00e9rtj\u00fck a napl\u00f3z\u00e1s sz\u00fcks\u00e9gess\u00e9g\u00e9t. Ez is egy nagyon fontos t\u00e9ma. Val\u00f3sz\u00edn\u0171leg nem kev\u00e9sb\u00e9 fontos, mint a monitoroz\u00e1s. De az els\u0151 a megval\u00f3s\u00edt\u00e1si list\u00e1n a monitoroz\u00e1s volt. A napl\u00f3z\u00e1s lesz. Term\u00e9szetesen igyeksz\u00fcnk automatiz\u00e1lni a klaszter m\u0171k\u00f6d\u00e9s\u00e9nek minden aspektus\u00e1t. Teh\u00e1t a v\u00e1lasz - jelen pillanatban az oper\u00e1torunk, sajnos, ezt nem tudja, de tervben van, hogy megcsin\u00e1ljuk. Ha van kedv\u00fck csatlakozni, akkor nyugodtan k\u00fcldjenek pull request-et.<\/p>\n<p><\/p>\n<p><em>J\u00f3 napot! K\u00f6sz\u00f6n\u00f6m a bemutat\u00f3t! Van egy standard k\u00e9rd\u00e9sem a Persistent Volumes-zal kapcsolatban. Amikor ezt az oper\u00e1tort haszn\u00e1lva konfigur\u00e1lunk, hogyan hat\u00e1rozza meg az oper\u00e1tor, hogy melyik node-on van egy adott lemez vagy mappa? El\u0151re kell mondanunk neki, hogy k\u00e9rj\u00fck, helyezze el a ClickHouse-t kifejezetten azokon a node-okon, ahol lemez tal\u00e1lhat\u00f3?<\/em><\/p>\n<p><\/p>\n<p>Amennyire tudom, ez a k\u00e9rd\u00e9s a helyi t\u00e1rol\u00e1s folytat\u00e1sa, k\u00fcl\u00f6n\u00f6sen a hostPath r\u00e9sz\u00e9r\u0151l. Ez arr\u00f3l sz\u00f3l, hogy hogyan mondhatunk el a rendszernek, hogy a podnak egy adott node-on kell elindulnia, ahol fizikai diszk csatlakozik, amely egy adott \u00faton van csatolva. Ez egy eg\u00e9sz szekci\u00f3, amelyet nagyon felsz\u00ednesen \u00e9rintettem, mert a v\u00e1lasz el\u00e9g hossz\u00fa. <\/p>\n<p><\/p>\n<p>R\u00f6viden ez \u00edgy n\u00e9z ki. Term\u00e9szetesen provisioning-ra van sz\u00fcks\u00e9g\u00fcnk ezeknek a t\u00e1rol\u00f3knak. Jelenleg a helyi t\u00e1rol\u00f3ban nincs dinamikus provisioning, ez\u00e9rt a DevOps-nak mag\u00e1nak kell l\u00e9trehoznia a lemezeket, ezeket a t\u00e1rol\u00f3kat. \u00c9s el kell magyar\u00e1zniuk a Kubernetes provisioning-nak, hogy milyen Persistent storage t\u00edpust kell haszn\u00e1lni, ami adott csom\u00f3pontokon tal\u00e1lhat\u00f3. Azt\u00e1n el kell magyar\u00e1zniuk a Kubernetes-nek, hogy azokat a pod-okat, amelyek ilyen t\u00edpus\u00fa helyi t\u00e1rol\u00f3t ig\u00e9nyelnek, csak adott c\u00edmk\u00e9kkel kell \u00fctemezni az ilyen csom\u00f3pontokra. Ezekre a c\u00e9lokra az oper\u00e1torban lehet\u0151s\u00e9g van c\u00edmk\u00e9ket \u00e9s egy host instance-t hozni l\u00e9tre. \u00cdgy a pod-ok a Kubernetes \u00e1ltali \u00fctemez\u00e9s sor\u00e1n csak azokra a csom\u00f3pontokra fognak indulni, amelyek megfelelnek a k\u00f6vetelm\u00e9nyeknek, egyszer\u0171en fogalmazva a c\u00edmk\u00e9k alapj\u00e1n. Az adminisztr\u00e1torok c\u00edmk\u00e9ket rendelnek, \u00e9s k\u00e9zzel v\u00e9gzik a lemezek provisioning-j\u00e1t. \u00cdgy sk\u00e1l\u00e1zhat\u00f3v\u00e1 v\u00e1lik.<\/p>\n<p><\/p>\n<p>\u00c9s \u00e9ppen ez a harmadik helyi lehet\u0151s\u00e9g seg\u00edt egy kicsit megk\u00f6nny\u00edteni ezt. Ahogy m\u00e1r hangs\u00falyoztam, ez egy apr\u00f3l\u00e9kos be\u00e1ll\u00edt\u00e1si munka, amely v\u00e9g\u00fcl a maxim\u00e1lis teljes\u00edtm\u00e9ny el\u00e9r\u00e9s\u00e9ben seg\u00edt.<\/p>\n<p><\/p>\n<p><em>Van egy m\u00e1sodik k\u00e9rd\u00e9sem is ezzel kapcsolatban. A Kubernetes \u00fagy lett meg\u00e1lmodva, hogy sz\u00e1munkra nem sz\u00e1m\u00edt, hogy elvesz\u00edt\u00fcnk-e egy csom\u00f3pontot vagy sem. Mi a teend\u0151, ha elvesz\u00edtj\u00fck azt a csom\u00f3pontot, ahol egy shard tal\u00e1lhat\u00f3?<\/em><\/p>\n<p><\/p>\n<p>Igen, a Kubernetes-t eredetileg \u00fagy pozicion\u00e1lt\u00e1k, hogy a pod-jainkra mint j\u00f3sz\u00e1gra tekints\u00fcnk, most azonban minden lemez kicsit olyan, mint egy h\u00e1zikedvenc. Van egy probl\u00e9ma, hogy ezeket nem dobhatjuk ki csak \u00fagy. A Kubernetes fejl\u0151d\u00e9se arra mutat, hogy nem lehet teljesen filoz\u00f3fiai m\u00f3don tekinteni r\u00e1, mint ami teljesen eldobhat\u00f3 er\u0151forr\u00e1s.<\/p>\n<p><\/p>\n<p>Most egy gyakorlati k\u00e9rd\u00e9s. Mi a teend\u0151, ha elveszik egy csom\u00f3pont, amelyen a lemez volt? Itt m\u00e1r a feladat egy magasabb szinten oldhat\u00f3 meg. A ClickHouse eset\u00e9ben vannak replik\u00e1k, amelyek egy szinttel feljebb m\u0171k\u00f6dnek, teh\u00e1t a ClickHouse szintj\u00e9n.<\/p>\n<p><\/p>\n<p>Mi az elrendez\u00e9s? A DevOps felel\u0151s az\u00e9rt, hogy ne vesszenek el az adatok. Meg kell felel\u0151en be\u00e1ll\u00edtania a replik\u00e1ci\u00f3t, \u00e9s figyelnie kell, hogy a replik\u00e1ci\u00f3 v\u00e9grehajt\u00f3djon. A ClickHouse szintj\u00e9n a replik\u00e1ban az adatoknak duplik\u00e1lva kell lenni\u00fck. Ez nem az a feladat, amit az oper\u00e1tor v\u00e9gez el. \u00c9s nem az a feladat, amit a Kubernetes v\u00e9gez el. Ez a ClickHouse szintj\u00e9n t\u00f6rt\u00e9nik.<\/p>\n<p><\/p>\n<p>Mi a teend\u0151, ha elt\u0171nt a vas node? \u00cdgy m\u00e1sodik node-ot kell majd fel\u00fcgyelni, helyesen be kell \u00e1ll\u00edtani a lemezt \u00e9s c\u00edmk\u00e9ket kell r\u00e1tenni. Ekkor m\u00e1r megfelel a k\u00f6vetelm\u00e9nyeknek, hogy a Kubernetes elind\u00edtson rajta egy podot. A Kubernetes el fogja ind\u00edtani. Az \u00d6n podjainak sz\u00e1ma ugyanis nem elegend\u0151 a megadotthoz. \u00c1tl\u00e9p a cikluson, amit mutattam. A legfels\u0151 szinten a ClickHouse meg\u00e9rti, hogy egy replik\u00e1nk van, ami m\u00e9g \u00fcres, \u00e9s elkezdeni kell az adatok \u00e1tvitel\u00e9t. Teh\u00e1t ez a folyamat m\u00e9g nem el\u00e9gg\u00e9 automatiz\u00e1lt. <\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! Amikor t\u00f6rt\u00e9nnek k\u00fcl\u00f6nf\u00e9le rossz dolgok, a vez\u00e9rl\u0151 elt\u0171nik \u00e9s \u00fajraindul, \u00e9s ebben a pillanatban \u00e9rkeznek az esem\u00e9nyek, \u00d6n hogyan dolgozza fel ezeket?<\/em><\/p>\n<p><\/p>\n<p>Mi t\u00f6rt\u00e9nik, ha a vez\u00e9rl\u0151 elt\u0171nik \u00e9s \u00fajraindul, ugye? <\/p>\n<p><\/p>\n<p><em>Igen. \u00c9s ebben a pillanatban \u00e9rkeztek az esem\u00e9nyek.<\/em> <\/p>\n<p><\/p>\n<p>A feladat, hogy mit tegy\u00fcnk ebben az esetben, r\u00e9szben megoszlik a vez\u00e9rl\u0151 \u00e9s a Kubernetes k\u00f6z\u00f6tt. A Kubernetes lehet\u0151s\u00e9get ad az esem\u00e9nyek \u00fajraj\u00e1tsz\u00e1s\u00e1ra. \u0150 \u00fajraj\u00e1tszik. A vez\u00e9rl\u0151 feladata az, hogy amikor az esem\u00e9nyek napl\u00f3j\u00e1ra \u00fajraj\u00e1tsz\u00e1st v\u00e9geznek, azok idempotent-ek legyenek. \u00c9s hogy az azonos esem\u00e9ny \u00fajb\u00f3li megjelen\u00e9se ne t\u00f6rje meg a rendszer\u00fcnket. A vez\u00e9rl\u0151nk k\u00e9pes megbirk\u00f3zni ezzel a feladattal. <\/p>\n<p><\/p>\n<p><em>\u00dcdv\u00f6zl\u00f6m! K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! Dmitrij Zavyalov, c\u00e9g<\/em> <em>Smedova. Tervezik, hogy a vez\u00e9rl\u0151be be\u00e9p\u00edtik a haproxy be\u00e1ll\u00edt\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9t? \u00c9rdekelne valamilyen m\u00e1s egyens\u00falyoz\u00f3, ami okos \u00e9s tudja, hogy val\u00f3j\u00e1ban ClickHouse.<\/em> <\/p>\n<p><\/p>\n<p>Az Ingress-re gondol?<\/p>\n<p><\/p>\n<p><em>Igen, az Ingress-t helyettes\u00edts\u00fck haproxy-ra. A haproxy-ban megadhat\u00f3 a klaszter topol\u00f3giai elhelyezked\u00e9se, ahol a replik\u00e1k vannak.<\/em><\/p>\n<p><\/p>\n<p>Jelenleg nem gondolkodtunk ezen. Ha sz\u00fcks\u00e9ge van r\u00e1 \u00e9s el tudja magyar\u00e1zni, mi\u00e9rt van sz\u00fcks\u00e9g r\u00e1, akkor megval\u00f3s\u00edthat\u00f3 lesz, f\u0151leg, ha helyet tud szor\u00edtani r\u00e1. \u00d6r\u00f6mmel megvizsg\u00e1ljuk a lehet\u0151s\u00e9get. R\u00f6vid v\u00e1lasz: nem, a jelenlegi funkci\u00f3ink k\u00f6z\u00f6tt ez nem szerepel. K\u00f6sz\u00f6n\u00f6m az \u00f6tletet, megn\u00e9zz\u00fck. Ha m\u00e9g el tudja magyar\u00e1zni az alkalmaz\u00e1si esetet \u00e9s mi\u00e9rt van sz\u00fcks\u00e9g r\u00e1 a gyakorlatban, p\u00e9ld\u00e1ul GitHub-ra issues-t k\u00e9sz\u00edt, akkor az nagyszer\u0171 lenne.<\/p>\n<p><\/p>\n<p><em>M\u00e1r l\u00e9tezik.<\/em><\/p>\n<p><\/p>\n<p>Rendben. Nyitottak vagyunk b\u00e1rmilyen javaslatra. A haproxy szerepel a teend\u0151k list\u00e1j\u00e1n. A teend\u0151k list\u00e1ja folyamatosan n\u0151, \u00e9s nem cs\u00f6kken. De ez j\u00f3, ez azt jelenti, hogy a term\u00e9k keresett.<\/p>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Kubernetes oper\u00e1tor az adatb\u00e1zis klaszterek kezel\u00e9s\u00e9re. Vladiszlav Klimenko (Altinity, 2019) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/96965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=96965"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/96965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/96966"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=96965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=96965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=96965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}