{"id":71858,"date":"2020-02-28T21:00:08","date_gmt":"2020-02-28T18:00:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/patterny-hraneniya-dannyh-v-kubernetes"},"modified":"2020-03-03T16:14:09","modified_gmt":"2020-03-03T13:14:09","slug":"patterny-hraneniya-dannyh-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Adatt\u00e1rol\u00e1si mint\u00e1k a Kubernetesben","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\"><img decoding=\"async\" alt=\"Adatt\u00e1rol\u00e1si mint\u00e1k a Kubernetesben\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nHell\u00f3, Habr!<\/p>\n<p>Eml\u00e9keztetj\u00fck, hogy megjelent a leg\u00fajabb rendk\u00edv\u00fcl \u00e9rdekes \u00e9s hasznos <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">k\u00f6nyv<\/a><\/noindex> a Kubernetes mint\u00e1kr\u00f3l. Minden m\u00e9g azzal kezd\u0151d\u00f6tt, hogy \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Mint\u00e1zatok<\/a><\/noindex>\" Brendan Burns, \u00e9s egy\u00e9bk\u00e9nt j\u00f3l halad a munk\u00e1nk ezen a ter\u00fcleten <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">forr<\/a><\/noindex>. Ma aj\u00e1nljuk \u00f6n\u00f6knek a MinIO blogj\u00e1b\u00f3l sz\u00e1rmaz\u00f3 cikket, amely r\u00f6viden \u00f6sszefoglalja a Kubernetes adatkezel\u00e9si mint\u00e1zatainak tendenci\u00e1it \u00e9s saj\u00e1toss\u00e1gait.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>A Kubernetes alapjaiban megv\u00e1ltoztatta a hagyom\u00e1nyos alkalmaz\u00e1sfejleszt\u00e9si \u00e9s telep\u00edt\u00e9si mint\u00e1kat. Most a csapatoknak csak n\u00e9h\u00e1ny napra van sz\u00fcks\u00e9g\u00fck az alkalmaz\u00e1s fejleszt\u00e9s\u00e9re, tesztel\u00e9s\u00e9re \u00e9s telep\u00edt\u00e9s\u00e9re \u2013 k\u00fcl\u00f6nb\u00f6z\u0151 k\u00f6rnyezetekben, mindez Kubernetes klasztereken bel\u00fcl. Az ilyen munka a kor\u00e1bbi gener\u00e1ci\u00f3s technol\u00f3gi\u00e1kkal \u00e1ltal\u00e1ban hetekbe, ha nem h\u00f3napokba telt.<\/p>\n<p>Ez a felgyorsul\u00e1s a Kubernetes \u00e1ltal biztos\u00edtott absztrakci\u00f3nak k\u00f6sz\u00f6nhet\u0151 \u2013 azaz annak, hogy a Kubernetes saj\u00e1t maga kezeli az alacsony szint\u0171 r\u00e9szleteket a fizikai vagy virtu\u00e1lis g\u00e9pekkel, lehet\u0151v\u00e9 t\u00e9ve a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra, hogy t\u00f6bbek k\u00f6z\u00f6tt kijel\u00f6lj\u00e9k a sz\u00fcks\u00e9ges processzort, a sz\u00fcks\u00e9ges mem\u00f3ria mennyis\u00e9get, valamint a kont\u00e9ner p\u00e9ld\u00e1nyok sz\u00e1m\u00e1t. Mivel a Kubernetes t\u00e1mogat\u00e1s\u00e1ban egy hatalmas k\u00f6z\u00f6ss\u00e9g dolgozik, \u00e9s a Kubernetes alkalmaz\u00e1s\u00e1nak m\u00e9rt\u00e9ke folyamatosan b\u0151v\u00fcl, a tart\u00e1lyorchestration platformok k\u00f6z\u00f6tt messze vezet.<\/p>\n<p><i><b>Ahogy a Kubernetes haszn\u00e1lata b\u0151v\u00fcl, \u00fagy n\u0151 a z\u0171rzavar is a benne alkalmazott adatkezel\u00e9si mint\u00e1zatok k\u00f6r\u00fcl<\/b><\/i>.<\/p>\n<p>Mivel mindenki verseng a Kubernetes \u201etort\u00e1j\u00e1\u00e9rt\u201d (azaz az adatkezel\u00e9s\u00e9rt), amikor az adatok t\u00e1rol\u00e1s\u00e1ra ker\u00fcl a sor, a jel itt egy er\u0151s zajban elv\u00e9sz.<br \/>\nA Kubernetes megtestes\u00edti a modern alkalmaz\u00e1sfejleszt\u00e9si \u00e9s telep\u00edt\u00e9si modellt, valamint azok kezel\u00e9s\u00e9t. Ez a modern modell lev\u00e1lasztja az adatkezel\u00e9st a sz\u00e1m\u00edt\u00e1sokr\u00f3l. Ahhoz, hogy teljesen meg\u00e9rts\u00fck ezt a lev\u00e1laszt\u00e1st a Kubernetes kontextus\u00e1ban, meg kell \u00e9rten\u00fcnk, hogy mik is azok az \u00e1llapotot meg\u0151rz\u0151 \u00e9s az \u00e1llapotot nem meg\u0151rz\u0151 alkalmaz\u00e1sok, valamint hogyan illeszkedik ehhez az adatkezel\u00e9s. \u00c9ppen itt a REST API megk\u00f6zel\u00edt\u00e9s, amelyet az S3 alkalmaz, egy\u00e9rtelm\u0171 el\u0151ny\u00f6kkel rendelkezik a POSIX\/CSI megk\u00f6zel\u00edt\u00e9ssel szemben, amely m\u00e1s megold\u00e1sokra jellemz\u0151.<\/p>\n<p>Ebben a cikkben a Kubernetes adatkezel\u00e9si mint\u00e1ir\u00f3l fogunk besz\u00e9lni, \u00e9s k\u00fcl\u00f6n foglalkozunk a tart\u00f3s \u00e9s \u00e1llapot n\u00e9lk\u00fcli alkalmaz\u00e1sokkal, hogy alaposan meg\u00e9rts\u00fck, mi a k\u00fcl\u00f6nbs\u00e9g k\u00f6z\u00f6tt\u00fck, \u00e9s mi\u00e9rt fontos ez. A sz\u00f6veg tov\u00e1bbi r\u00e9sz\u00e9ben az alkalmaz\u00e1sokat \u00e9s az azokban haszn\u00e1lt adatkezel\u00e9si mint\u00e1kat vizsg\u00e1ljuk meg a kont\u00e9nerek \u00e9s a Kubernetes legjobb gyakorlatai f\u00e9ny\u00e9ben.<\/p>\n<h4>\u00c1llapot n\u00e9lk\u00fcli kont\u00e9nerek<\/h4>\n<p>\nA kont\u00e9nerek term\u00e9szet\u00fckn\u00e9l fogva k\u00f6nny\u0171ek \u00e9s efemeriek. Ezeket k\u00f6nnyed\u00e9n le\u00e1ll\u00edthatjuk, t\u00f6r\u00f6lhetj\u00fck vagy m\u00e1sik csom\u00f3ponton telep\u00edthetj\u00fck \u2013 mindez n\u00e9h\u00e1ny m\u00e1sodpercet vesz ig\u00e9nybe. Nagyobb kont\u00e9ner-orchestration rendszerekben ezek a m\u0171veletek folyamatosan zajlanak, \u00e9s a felhaszn\u00e1l\u00f3k m\u00e9g csak \u00e9szre sem veszik ezeket a v\u00e1ltoz\u00e1sokat. Azonban a mozg\u00e1s csak akkor lehets\u00e9ges, ha a kont\u00e9nernek nincsenek f\u00fcgg\u0151s\u00e9gei a csom\u00f3pontt\u00f3l, amelyen \u00e9ppen tal\u00e1lhat\u00f3. Az ilyen kont\u00e9nerekr\u0151l azt mondj\u00e1k, hogy \u00e1llapot n\u00e9lk\u00fcl m\u0171k\u00f6dnek. <i>\u00e1llapot n\u00e9lk\u00fcl<\/i>.<\/p>\n<h4>\u00c1llapot\u00fa kont\u00e9nerek<\/h4>\n<p>\nHa egy kont\u00e9ner helyi csatlakoztatott eszk\u00f6z\u00f6k\u00f6n (vagy blokkszinten) t\u00e1rol adatokat, akkor az adatokat t\u00e1rol\u00f3 t\u00e1rol\u00f3t a kont\u00e9nerrel egy\u00fctt egy \u00faj csom\u00f3pontba is \u00e1t kell helyezni \u2013 hib\u00e1sod\u00e1s eset\u00e9n. Ez fontos, mert k\u00fcl\u00f6nben az adott kont\u00e9nerben fut\u00f3 alkalmaz\u00e1s nem m\u0171k\u00f6dik helyesen, mivel hozz\u00e1 kell f\u00e9rnie a helyi t\u00e1rol\u00f3kon elmentett adatokhoz. Az ilyen kont\u00e9nerekr\u0151l azt mondj\u00e1k, hogy \u00e1llapotosan m\u0171k\u00f6dnek. <i>\u00e1llapotosan<\/i>.<\/p>\n<p>Tiszta technikai szempontb\u00f3l az \u00e1llapot\u00fa kont\u00e9nereket is lehet m\u00e1s csom\u00f3pontokra helyezni. Ezt \u00e1ltal\u00e1ban elosztott f\u00e1jlrendszerekkel vagy a kont\u00e9nerek \u00e1ltal haszn\u00e1lt \u00f6sszes csom\u00f3ponthoz csatolt blokkh\u00e1l\u00f3zati adatt\u00e1rol\u00f3kkal biztos\u00edtj\u00e1k. \u00cdgy a kont\u00e9nerek hozz\u00e1f\u00e9rnek a tart\u00f3s adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 k\u00f6tetekhez, \u00e9s az inform\u00e1ci\u00f3k a h\u00e1l\u00f3zatban sz\u00e9tsz\u00f3rt lemezeken t\u00e1rol\u00f3dnak. Ezt a m\u00f3dszert '<i>\u00e1llapot\u00fa kont\u00e9ner megk\u00f6zel\u00edt\u00e9snek<\/i>' fogom nevezni, \u00e9s a cikk h\u00e1tral\u00e9v\u0151 r\u00e9sz\u00e9ben \u00edgy fogom eml\u00edteni az egys\u00e9gess\u00e9g kedv\u00e9\u00e9rt.<\/p>\n<p><img decoding=\"async\" alt=\"Adatt\u00e1rol\u00e1si mint\u00e1k a Kubernetesben\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA tipikus \u00e1llapot-megtart\u00f3 kont\u00e9neres megk\u00f6zel\u00edt\u00e9s eset\u00e9n az alkalmaz\u00e1sok \u00f6sszes podja egy megosztott f\u00e1jlrendszerhez csatlakozik \u2013 ez egyfajta megosztott t\u00e1rol\u00f3nak sz\u00e1m\u00edt, ahol az alkalmaz\u00e1sok \u00f6sszes adat\u00e1t t\u00e1rolj\u00e1k. B\u00e1r bizonyos elt\u00e9r\u00e9sek lehets\u00e9gesek, ez egy magas szint\u0171 megk\u00f6zel\u00edt\u00e9s.<\/p>\n<p>Most n\u00e9zz\u00fck meg, mi\u00e9rt tekinthet\u0151 az \u00e1llapot-megtart\u00f3 kont\u00e9neres megk\u00f6zel\u00edt\u00e9s antipatternnek a felh\u0151orient\u00e1lt vil\u00e1gban.<\/p>\n<h4>Felh\u0151orient\u00e1lt alkalmaz\u00e1s-tervez\u00e9s<\/h4>\n<p>\nHagyom\u00e1nyosan az alkalmaz\u00e1sok adatb\u00e1zisokat haszn\u00e1ltak az inform\u00e1ci\u00f3 struktur\u00e1lt t\u00e1rol\u00e1s\u00e1ra, \u00e9s helyi lemezeket vagy megosztott f\u00e1jlrendszereket, ahov\u00e1 minden struktur\u00e1latlan vagy ak\u00e1r f\u00e9lig struktur\u00e1lt adatot ki\u00edrtak. Ahogy a struktur\u00e1latlan adatok mennyis\u00e9ge n\u0151tt, a fejleszt\u0151k r\u00e1j\u00f6ttek, hogy a POSIX t\u00fal \"besz\u00e9des\", jelent\u0151s k\u00f6lts\u00e9gekkel j\u00e1r, \u00e9s v\u00e9gs\u0151 soron akad\u00e1lyozza az alkalmaz\u00e1s m\u0171k\u00f6d\u00e9s\u00e9t, ha val\u00f3ban nagy m\u00e9retekre akarunk v\u00e1ltani.<\/p>\n<p>Ez f\u0151k\u00e9nt hozz\u00e1j\u00e1rult egy \u00faj adatkezel\u00e9si szabv\u00e1ny megjelen\u00e9s\u00e9hez, nevezetesen a felh\u0151orient\u00e1lt t\u00e1rol\u00f3k\u00e9hoz, amelyek t\u00falnyom\u00f3r\u00e9szt REST API-n alapulnak, \u00e9s felszabad\u00edtj\u00e1k az alkalmaz\u00e1st a helyi adatkezel\u00e9s terhe al\u00f3l. Ilyen esetben az alkalmaz\u00e1s l\u00e9nyeg\u00e9ben \u00e1llapot n\u00e9lk\u00fcli m\u0171k\u00f6d\u00e9sre v\u00e1lt (mivel az \u00e1llapot az t\u00e1voli t\u00e1rol\u00f3n tal\u00e1lhat\u00f3). A modern alkalmaz\u00e1sokat m\u00e1r ebb\u0151l a szempontb\u00f3l \u00e9p\u00edtik fel. \u00c1ltal\u00e1ban b\u00e1rmely modern alkalmaz\u00e1s, amely bizonyos t\u00edpus\u00fa adatokat kezel (napl\u00f3k, metaadatok, blobok stb.) felh\u0151orient\u00e1lt paradigm\u00e1ra \u00e9p\u00fcl, ahol az \u00e1llapotot egy kifejezetten erre a c\u00e9lra kifejlesztett szoftverrendszer t\u00e1rolja. <\/p>\n<p><i><b>Az \u00e1llapot-megtart\u00f3 kont\u00e9neres megk\u00f6zel\u00edt\u00e9s mindezt a paradigm\u00e1t arra k\u00e9nyszer\u00edti, hogy visszat\u00e9rjen oda, ahol elkezd\u0151d\u00f6tt! <\/b><\/i><\/p>\n<p>A POSIX interf\u00e9szek haszn\u00e1lata sor\u00e1n az alkalmaz\u00e1sok \u00fagy m\u0171k\u00f6dnek, mintha \u00e1llapotot t\u00e1roln\u00e1nak, \u00e9s emiatt elt\u00e9rnek a felh\u0151alap\u00fa tervez\u00e9s legfontosabb alapelveit\u0151l, nevezetesen, hogy lehet\u0151s\u00e9get adjanak az alkalmaz\u00e1s munkafolyamatainak m\u00e9ret\u00e9nek v\u00e1ltoztat\u00e1s\u00e1ra a bej\u00f6v\u0151 terhel\u00e9s f\u00fcggv\u00e9ny\u00e9ben, \u00e1tk\u00f6lt\u00f6zzenek egy \u00faj csom\u00f3pontba, amint az aktu\u00e1lis csom\u00f3pont meghib\u00e1sodik \u00e9s \u00edgy tov\u00e1bb.<\/p>\n<p>Ha k\u00f6zelebbr\u0151l megvizsg\u00e1ljuk ezt a helyzetet, azt tal\u00e1ljuk, hogy az adatrakt\u00e1r kiv\u00e1laszt\u00e1sakor \u00fajra \u00e9s \u00fajra tal\u00e1lkozunk a \"POSIX vs REST API\" dilemm\u00e1val, DE a POSIX probl\u00e9m\u00e1it tov\u00e1bb s\u00falyosb\u00edtja a Kubernetes k\u00f6rnyezetek elosztott term\u00e9szet.<\/p>\n<ul>\n<li><b>POSIX besz\u00e9des<\/b>: A POSIX szemantika megk\u00f6veteli, hogy minden m\u0171velethez metaadatokat \u00e9s f\u00e1jl-azonos\u00edt\u00f3kat rendeljenek, amelyek seg\u00edtenek fenntartani a m\u0171velet \u00e1llapot\u00e1t. Ez jelent\u0151s k\u00f6lts\u00e9geket eredm\u00e9nyez, amelyeknek nincs val\u00f3s \u00e9rt\u00e9k\u00fck. Az objektumt\u00e1rol\u00f3 API-k, k\u00fcl\u00f6n\u00f6sen az S3 API, megszabadultak ezekt\u0151l az k\u00f6vetelm\u00e9nyekt\u0151l, lehet\u0151v\u00e9 t\u00e9ve, hogy az alkalmaz\u00e1s m\u0171k\u00f6dj\u00f6n, majd \"elfelejtse\" a h\u00edv\u00e1st. A t\u00e1rol\u00f3 rendszer v\u00e1lasza jelzi, hogy a m\u0171velet sikeresen v\u00e9grehajt\u00f3dott-e vagy sem. Sikertelens\u00e9g eset\u00e9n az alkalmaz\u00e1s megpr\u00f3b\u00e1lhatja \u00fajra.<\/li>\n<li><b>H\u00e1l\u00f3zati korl\u00e1toz\u00e1sok<\/b>: Elosztott rendszerben azt felt\u00e9telezz\u00fck, hogy t\u00f6bb alkalmaz\u00e1s is megpr\u00f3b\u00e1lhat adatokat \u00edrni ugyanarra a csatolt t\u00e1rol\u00f3ra. Ez\u00e9rt nemcsak az alkalmaz\u00e1sok versenyeznek a s\u00e1vsz\u00e9less\u00e9g\u00e9rt (hogy adatokat k\u00fcldjenek a t\u00e1rol\u00f3ra), hanem mag\u00e1nak a t\u00e1rol\u00f3 rendszernek is versenyeznie kell ez\u00e9rt a s\u00e1vsz\u00e9less\u00e9g\u00e9rt, az adatokat fizikai lemezekre sz\u00e9tosztva. A POSIX sz\u00f3cs\u00e9pl\u00e9se miatt a h\u00e1l\u00f3zati h\u00edv\u00e1sok sz\u00e1ma t\u00f6bbsz\u00f6r\u00f6s\u00e9re n\u0151. M\u00e1sr\u00e9szr\u0151l az S3 API vil\u00e1gos hat\u00e1rokat biztos\u00edt a h\u00e1l\u00f3zati h\u00edv\u00e1sok k\u00f6z\u00f6tt, az \u00fcgyf\u00e9lt\u0151l a szerverig ir\u00e1nyul\u00f3 h\u00edv\u00e1sok \u00e9s a szerveren bel\u00fcli h\u00edv\u00e1sok k\u00f6z\u00f6tt.<\/li>\n<li><b>Biztons\u00e1g<\/b>: A POSIX security model is designed for active human involvement: administrators configure specific access levels for each user or group. This paradigm is difficult to adapt to a cloud-oriented world. Modern applications depend on security models tied to APIs, where access rights are defined as a set of policies, service accounts are allocated, temporary credentials are issued, etc.<\/li>\n<li><b>Ir\u00e1ny\u00edthat\u00f3s\u00e1g<\/b>: Stateful containers incur certain costs associated with management. This involves synchronizing parallel access to data, ensuring data consistency, and all of this requires careful consideration of which data access patterns to use. Additionally, it involves setting up, monitoring, and configuring extra programs, not to mention the additional effort required in development.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Kont\u00e9ner alap\u00fa adat t\u00e1rol\u00f3 interf\u00e9sz<\/h4>\n<p>\nWhile the Container Storage Interface (CSI) has greatly assisted in the propagation of Kubernetes volume layers, partially delegating it to third-party data storage vendors, it has also inadvertently contributed to the belief that the stateful container approach is the recommended method for data storage in Kubernetes.<\/p>\n<p>CSI was developed as a standard for providing arbitrary block and file storage systems to legacy applications working with Kubernetes. And, as shown in this article, the only situation where the stateful container approach (and CSI in its current form) makes sense is when the application itself is a legacy system that cannot be updated to include support for object storage API.<\/p>\n<p>It is important to understand that by using CSI in its current form, that is, mounting volumes when working with modern applications, we will encounter approximately the same problems that arose in systems where data storage was organized in a POSIX style.<\/p>\n<h4>Magasabb min\u0151s\u00e9g\u0171 megk\u00f6zel\u00edt\u00e9s<\/h4>\n<p>\nEbben az esetben fontos meg\u00e9rteni, hogy a legt\u00f6bb alkalmaz\u00e1s alapvet\u0151en nem olyan, hogy \u00e1llapotmeg\u0151rz\u00e9sre vagy \u00e1llapotmentes m\u0171k\u00f6d\u00e9sre lenne tervezve. Ez a viselked\u00e9s a rendszer \u00e1ltal\u00e1nos architekt\u00far\u00e1j\u00e1t\u00f3l \u00e9s a tervez\u00e9s sor\u00e1n v\u00e1lasztott konkr\u00e9t megold\u00e1sokt\u00f3l f\u00fcgg. Besz\u00e9lj\u00fcnk egy kicsit az \u00e1llapotmeg\u0151rz\u0151 alkalmaz\u00e1sokr\u00f3l.<\/p>\n<p>Elvileg az alkalmaz\u00e1sok adatai t\u00f6bb sz\u00e9les t\u00edpusra oszthat\u00f3k:<\/p>\n<ul>\n<li>Logadatok<\/li>\n<li>Id\u0151b\u00e9lyeg adatok<\/li>\n<li>Tranzakci\u00f3s adatok<\/li>\n<li>Metainform\u00e1ci\u00f3k<\/li>\n<li>Kont\u00e9nerk\u00e9pek<\/li>\n<li>BLOB adatok (nagy bin\u00e1ris objektumok)<\/li>\n<\/ul>\n<p>\nMindezek a t\u00edpus\u00fa adatok nagyon j\u00f3l t\u00e1mogatottak a modern adat-t\u00e1rol\u00e1si platformokon, \u00e9s l\u00e9teznek k\u00fcl\u00f6nb\u00f6z\u0151 felh\u0151orient\u00e1lt platformok, amelyek alkalmazkodnak az egyes konkr\u00e9t form\u00e1tumokban t\u00f6rt\u00e9n\u0151 adatszolg\u00e1ltat\u00e1shoz. P\u00e9ld\u00e1ul a tranzakci\u00f3s adatok \u00e9s metainform\u00e1ci\u00f3k modern felh\u0151orient\u00e1lt adatb\u00e1zisokban, mint p\u00e9ld\u00e1ul a CockroachDB, YugaByte stb. tal\u00e1lhat\u00f3k. A kont\u00e9nerk\u00e9pek vagy a BLOB adatok a MinIO alap\u00fa Docker registry-ben t\u00e1rolhat\u00f3k. Az id\u0151b\u00e9lyeg adatok id\u0151szakos adatb\u00e1zisban, p\u00e9ld\u00e1ul InfluxDB-ben t\u00e1rolhat\u00f3k. Nem akarunk a k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa adatok \u00e9s a hozz\u00e1juk tartoz\u00f3 alkalmaz\u00e1sok r\u00e9szleteibe mer\u00fclni, de az \u00e1ltal\u00e1nos \u00f6tlet az, hogy elker\u00fclj\u00fck a helyi lemezmountra alapozott \u00e1lland\u00f3 t\u00e1rol\u00e1st.<\/p>\n<p><img decoding=\"async\" alt=\"Adatt\u00e1rol\u00e1si mint\u00e1k a Kubernetesben\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEzen k\u00edv\u00fcl gyakran hat\u00e9kony a versenyk\u00e9pess\u00e9gi szint biztos\u00edt\u00e1sa, amely ideiglenes f\u00e1jlok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l az alkalmaz\u00e1sok sz\u00e1m\u00e1ra, de az alkalmaz\u00e1soknak nem szabad t\u00e1maszkodniuk erre a szintre, mint az igazs\u00e1g forr\u00e1s\u00e1ra.<\/p>\n<h4>\u00c1llapotmeg\u0151rz\u0151 alkalmaz\u00e1sok t\u00e1rol\u00e1sa<\/h4>\n<p>\nB\u00e1r a legt\u00f6bb esetben hasznos az \u00e1llapotmentes alkalmaz\u00e1sok fenntart\u00e1sa, azok az alkalmaz\u00e1sok, amelyek az adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1lnak \u2013 mint p\u00e9ld\u00e1ul adatb\u00e1zisok, objektumt\u00e1rol\u00f3k, kulcs-\u00e9rt\u00e9k t\u00e1rol\u00f3k \u2013 \u00e1llapotot kell, hogy megtart\u00f3ak legyenek. N\u00e9zz\u00fck meg, mi\u00e9rt ind\u00edtanak ezeket az alkalmaz\u00e1sokat Kubernetes-en. P\u00e9ld\u00e1ul vegy\u00fck a MinIO-t, de hasonl\u00f3 elvek alkalmazhat\u00f3k b\u00e1rmely m\u00e1s nagy felh\u0151orient\u00e1lt adatt\u00e1rol\u00f3 rendszerre.<\/p>\n<p>A felh\u0151alap\u00fa alkalmaz\u00e1sokat a kont\u00e9nerek rugalmass\u00e1g\u00e1nak maxim\u00e1lis kihaszn\u00e1l\u00e1s\u00e1ra tervezt\u00e9k. Ez azt jelenti, hogy nem tesznek fel semmif\u00e9le felt\u00e9telez\u00e9st azokr\u00f3l a k\u00f6rnyezetekr\u0151l, ahol telep\u00edtve lesznek. P\u00e9ld\u00e1ul a MinIO egy bels\u0151 redund\u00e1ns k\u00f3dol\u00e1si (erasure coding) mechanizmust haszn\u00e1l, amely biztos\u00edtja a rendszer elegend\u0151 ellen\u00e1ll\u00f3k\u00e9pess\u00e9g\u00e9t ahhoz, hogy m\u0171k\u00f6d\u0151k\u00e9pes maradjon m\u00e9g a lemezek fel\u00e9nek meghib\u00e1sod\u00e1sa eset\u00e9n is. A MinIO emellett az adatok integrit\u00e1s\u00e1t \u00e9s biztons\u00e1g\u00e1t saj\u00e1t hash-ing \u00e9s titkos\u00edt\u00e1s r\u00e9v\u00e9n biztos\u00edtja a szerveren.<\/p>\n<p>Az ilyen felh\u0151alap\u00fa alkalmaz\u00e1sok sz\u00e1m\u00e1ra a legmegfelel\u0151bb biztons\u00e1gi t\u00e1rol\u00f3 a helyi perzisztens k\u00f6tet (PV). A helyi PV lehet\u0151s\u00e9get biztos\u00edt a nyers adatok t\u00e1rol\u00e1s\u00e1ra, m\u00edg az ezen PV-k felett m\u0171k\u00f6d\u0151 alkalmaz\u00e1sok saj\u00e1t maguk gy\u0171jtik \u00f6ssze azokat az inform\u00e1ci\u00f3kat, amelyek lehet\u0151v\u00e9 teszik az adatok sk\u00e1l\u00e1z\u00e1s\u00e1t \u00e9s a n\u00f6vekv\u0151 adatig\u00e9nyek kezel\u00e9s\u00e9t.<\/p>\n<p>Ez a megk\u00f6zel\u00edt\u00e9s sokkal egyszer\u0171bb \u00e9s jelent\u0151sen jobban sk\u00e1l\u00e1zhat\u00f3, mint a CSI alap\u00fa PV-k, amelyek saj\u00e1t adatkezel\u00e9si \u00e9s redundancia szinteket hoznak be a rendszerbe; a gond az, hogy ezek a szintek \u00e1ltal\u00e1ban ellentmondanak a states preservation elv\u00e9n tervezett alkalmaz\u00e1soknak.<\/p>\n<h4>Magabiztos l\u00e9p\u00e9s az adatok lev\u00e1laszt\u00e1sa a sz\u00e1m\u00edt\u00e1sokr\u00f3l<\/h4>\n<p>\nEbben a cikkben besz\u00e9lt\u00fcnk arr\u00f3l, hogyan ir\u00e1ny\u00edtj\u00e1k \u00e1t az alkalmaz\u00e1sokat a state-mentes m\u0171k\u00f6d\u00e9sre, m\u00e1s szavakkal, az adatkezel\u00e9s lev\u00e1lik a sz\u00e1m\u00edt\u00e1sokr\u00f3l. V\u00e9gezet\u00fcl n\u00e9zz\u00fcnk meg n\u00e9h\u00e1ny val\u00f3s p\u00e9ld\u00e1t ebb\u0151l a tendenci\u00e1b\u00f3l.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, a h\u00edres adat-analiz\u00e1l\u00f3 platform hagyom\u00e1nyosan state preservation-el \u00e9s HDFS f\u00e1jlrendszeren val\u00f3 telep\u00edt\u00e9ssel m\u0171k\u00f6d\u00f6tt. Azonban ahogy a Spark \u00e1tl\u00e9pett a felh\u0151alap\u00fa vil\u00e1gba, ez a platform egyre ink\u00e1bb state-mentes m\u0171k\u00f6d\u00e9sre v\u00e1lt az `s3a` haszn\u00e1lat\u00e1val. A Spark az s3a-t haszn\u00e1lja az \u00e1llapot \u00e1tad\u00e1s\u00e1ra m\u00e1s rendszerekhez, m\u00edg a Spark kont\u00e9nerei teljes eg\u00e9sz\u00e9ben state-mentes m\u0171k\u00f6dnek. M\u00e1s nagyv\u00e1llalati szerepl\u0151k a nagy adatelemz\u00e9s ter\u00e9n, k\u00fcl\u00f6n\u00f6sen, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vertica.com\/docs\/9.2.x\/HTML\/Content\/Authoring\/Eon\/Architecture.htm\">Vertica<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/min.io\/resources\/docs\/Teradata-solution-brief.pdf\">Teradata<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.pivotal.io\/partners\/minio-greenplum\/using.html\">Greenplum<\/a><\/noindex> szint\u00e9n \u00e1tt\u00e9rnek az adatok t\u00e1rol\u00e1s\u00e1nak \u00e9s a felette v\u00e9gzett sz\u00e1m\u00edt\u00e1sok lev\u00e1laszt\u00e1s\u00e1ra.<\/p>\n<p>Hasonl\u00f3 mint\u00e1zatok figyelhet\u0151k meg m\u00e1s nagyobb elemz\u0151 platformokon is, mint p\u00e9ld\u00e1ul a Presto, Tensorflow R-be, Jupyter. Az \u00e1llapotok t\u00e1voli felh\u0151alap\u00fa adatt\u00e1rol\u00f3kba t\u00f6rt\u00e9n\u0151 kiad\u00e1sa r\u00e9v\u00e9n sokkal k\u00f6nnyebb\u00e9 v\u00e1lik az alkalmaz\u00e1s kezel\u00e9se \u00e9s sk\u00e1l\u00e1z\u00e1sa. Ezen k\u00edv\u00fcl hozz\u00e1j\u00e1rul az alkalmaz\u00e1s hordozhat\u00f3s\u00e1g\u00e1hoz k\u00fcl\u00f6nf\u00e9le k\u00f6rnyezetekben.<br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71859,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71858","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\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\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-02-28T18:00:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:09+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\udd47Adatt\u00e1rol\u00e1si mint\u00e1k a Kubernetesben | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","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-02-28T18:00:08+00:00","article:modified_time":"2020-03-03T13:14:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71858","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 18:55:27","updated":"2022-09-27 18:57:08","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\/71858","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=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}