{"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\/et\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Andmete salvestamise mustrid Kuberneteses","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=\"Andmete salvestamise mustrid Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nTere, Habr!<\/p>\n<p>Tuletame meelde, et oleme avaldanud veel \u00fche \u00e4\u00e4rmiselt huvitava ja kasuliku <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">raamat<\/a><\/noindex> \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;<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Mustritest<\/a><\/noindex>&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 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">aktiivne<\/a><\/noindex>. T\u00e4na pakume teile lugeda MinIO blogi artiklit, kus l\u00fchi\u00fclevaates kajastatakse andmete hoidmise mustrite trende ja spetsiifikat Kubernetes'es.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes on fundamentaalselt muutnud traditsioonilisi rakenduste arendamise ja juurutamise mustreid. N\u00fc\u00fcd v\u00f5ib meeskonnal kuluda vaid paar p\u00e4eva rakenduse arendamiseks, testimiseks ja juurutamiseks - erinevates keskkondades, ja k\u00f5ik see Kubernetes'e klastrites. Selline t\u00f6\u00f6 varasemate p\u00f5lvkondade tehnoloogiatega v\u00f5ttis tavaliselt terveid n\u00e4dalad, kui mitte kuid.<\/p>\n<p>See kiirus on v\u00f5imalik t\u00e4nu Kubernetes'i poolt pakutud abstraktsioonile \u2014 see t\u00e4hendab, et Kubernetes ise tegeleb f\u00fc\u00fcsiliste v\u00f5i virtuaalmasinate madalama taseme detailidega, v\u00f5imaldades kasutajatel kuulutada teiste parameetrite seas vajaliku protsessori, vajaliku m\u00e4lu hulga ja konteinerite eksemplaride arvu. Kuna Kubernetes'e toetamine on suurte kogukondade tegevuse alla kuuluv ning selle rakendamise ulatus pidevalt laieneb, on ta kaugel k\u00f5igist konteinerite orkestreerimise platvormidest.<\/p>\n<p><i><b>Kuna Kubernetes'e kasutamine laieneb, suureneb ka segadus andmete salvestamise mustrite osas, mida selle s\u00f5numis kasutatakse.<\/b><\/i>.<\/p>\n<p>Kuna Kubernetes'e (st andmesalvestuse) jaoks k\u00e4ib \u00fcldine konkurents, siis kui jutt k\u00e4ib andmete salvestamisest, kaob signaal tugevas k\u00f5rvalhelis.<br \/>\nKubernetes esindab kaasaegset rakenduste arendamise ja juurutamise ning haldamise mudelit. See kaasaegne mudel eraldab andmete salvestamise arvutustest. Selle eraldamise t\u00e4ielikuks m\u00f5istmiseks kontekstis Kubernetes on samuti oluline m\u00f5ista, mis on olekuga ja olekuta rakendused, ning kuidas need sobituvad andmete salvestamisega. Just siin omab REST API l\u00e4henemine, mida rakendab S3, selgemaid eeliseid v\u00f5rreldes POSIX\/CSI l\u00e4henemisega, mis on iseloomulik teistele lahendustele.<\/p>\n<p>Selles artiklis arutame Kuberneteses andmete salvestamise mustreid ja k\u00e4sitleme eraldi vaidlust olekuga ja olekuta rakenduste vahel, et paremini m\u00f5ista nende vahe ja miks see on oluline. Artikli edaspidises osas vaadatakse rakendusi ning nende juures kasutatavaid andmete salvestamise mustreid konteinerite ja Kubernetesega parimate praktikate valguses.<\/p>\n<h4>Olekuta konteinerid<\/h4>\n<p>\nKonteinerid on oma olemuselt kerged ja efemeersed. Neid saab h\u00f5lpsasti peatada, kustutada v\u00f5i m\u00f5nel teisel s\u00f5lmel k\u00e4ivitada \u2013 k\u00f5ik need toimingud v\u00f5tavad aega vaid sekundeid. Suures konteinerite orchestration s\u00fcsteemis toimuvad sellised operatsioonid pidevalt ning kasutajad ei pruugi neid muutusi isegi m\u00e4rkama. Kuid liikumised on v\u00f5imalikud ainult siis, kui konteineril ei ole mingeid s\u00f5ltuvusi s\u00f5lme, millel ta asub. Selliseid konteinereid kirjeldavad nad kui t\u00f6\u00f6tavaid <i>ilma olekuta<\/i>.<\/p>\n<h4>Olekuhoidvad konteinerid<\/h4>\n<p>\nKui konteiner salvestab andmeid kohalikult \u00fchendatud seadmetesse (v\u00f5i plokkseadmestikusse), tuleb andmesalv, millel ta asub, liigutada uuele s\u00f5lmele koos konteineriga \u2013 t\u00f5rke korral. See on oluline, kuna vastasel juhul ei suuda konteineris t\u00f6\u00f6tav rakendus korralikult funktsioneerida, kuna tal on vajalik juurdep\u00e4\u00e4s kohalikele salvestusseadmetele salvestatud andmetele. Selliseid konteinereid kirjeldavad nad kui t\u00f6\u00f6tavaid <i>olekuhoidvatena<\/i>.<\/p>\n<p>Puhtalt tehnilisest vaatepunktist vaadatuna on olekuga konteinerid samuti v\u00f5imalik teisele s\u00f5lmele liikuda. Seda tavaliselt toetavad jaotatud failis\u00fcsteemid v\u00f5i plokip\u00f5hised v\u00f5rgukettavarud, mis on \u00fchendatud k\u00f5ikide s\u00f5lmedega, kus konteinerid t\u00f6\u00f6tavad. Nii saavad konteinerid juurde p\u00e4\u00e4seda mahutitele p\u00fcsiva andmete salvestamise jaoks ning teave salvestatakse kettale, mis asub kogu v\u00f5rgus. Seda meetodit nimetaksin \"<i>olekuga konteinerite l\u00e4henemiseks<\/i>\" ja nimetaksin seda ka edaspidi sama v\u00e4ljendi t\u00f5ttu.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete salvestamise mustrid Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00fc\u00fcpilise olekuga konteinerite l\u00e4henemise puhul on k\u00f5ik rakenduste podid kinnitatud \u00fchele jaotatud failis\u00fcsteemile \u2013 see loob mingisuguse jagatud salvestuslahenduse, kus k\u00f5ik rakenduste andmed paiknevad. Kuigi on v\u00f5imalikud m\u00f5ned variatsioonid, on see k\u00f5rgetasemeline l\u00e4henemine.<\/p>\n<p>N\u00fc\u00fcd vaatame aga, miks olekuga konteinerite l\u00e4henemine pilvep\u00f5hisest maailmas on antimuster.<\/p>\n<h4>Pilvep\u00f5hine rakenduste projekteerimine<\/h4>\n<p>\nTraditsiooniliselt kasutasid rakendused andmete struktureeritud salvestamiseks andmebaase ja kohalikke kettaid v\u00f5i jagatud failis\u00fcsteeme, kuhu suunati k\u00f5ik mittestruktureeritud v\u00f5i isegi osaliselt struktureeritud andmed. Kuid kui mittestruktureeritud andmete mahud kasvasid, tunnustasid arendajad, et POSIX on liiga \"lobus\" ning kaasneb m\u00e4rkimisv\u00e4\u00e4rsete kuludega, takistades l\u00f5puks rakenduse t\u00f6\u00f6 efektiivselt t\u00f5eliselt suurtes mahtudes.<\/p>\n<p>See peamiselt aitas kaasa uue andmesalvestuse standardsuse loomisele, nimelt pilvep\u00f5histe salvestuste s\u00fcsteemide ilmumisele, mis t\u00f6\u00f6tavad peamiselt REST API p\u00f5hjal ning vabastavad rakendused kohalikest andmesalvestuss\u00fcsteemidest. Sellisel juhul t\u00f6\u00f6tab rakendus t\u00f5eliselt olekuta, kuna olek asub eemal olevas salvestusruumis. T\u00e4nap\u00e4eva rakendused ehitatakse juba nullist arvesse v\u00f5ttes seda tegurit. \u00dcldiselt on iga kaasaegne rakendus, mis t\u00f6\u00f6tleb erinevat t\u00fc\u00fcpi andmeid (logid, metainfo, blobid jne), \u00fcles ehitatud pilvep\u00f5hise paradigma kohaselt, kus olek kolitakse spetsiaalselt tema hoidmiseks m\u00f5eldud tarkvaras\u00fcsteemi. <\/p>\n<p><i><b>Konteinerip\u00f5hine oleku s\u00e4ilitamine toob k\u00f5ik need paradigmad tagasi t\u00e4pselt sinna, kus nad algasid! <\/b><\/i><\/p>\n<p>Kui POSIX-liideseid andmete s\u00e4ilitamiseks kasutatakse, k\u00e4ituvad rakendused samamoodi kui siis, kui nad salvestavad olekud. Selle t\u00f5ttu k\u00f5rvaldatakse k\u00f5ige olulisemad pilvep\u00f5hise kujundamise postulaadid, nagu rakenduse t\u00f6\u00f6protsesside suuruse muutmine vastavalt sisendikoormusele, \u00fcleminek uuele s\u00f5lmele, kui praegune s\u00f5lm eba\u00f5nnestub, jne.<\/p>\n<p>Sellele olukorrale l\u00e4hemalt vaatates leiame, et andmehoidla valimisel puutume ikka ja j\u00e4lle kokku dilemmaga \"POSIX vs REST API\", kuid lisaks on POSIX-i probleemid s\u00fcvenenud Kubernetes'i jaotatud keskkondade t\u00f5ttu. Eriti,<\/p>\n<ul>\n<li><b>POSIX on loba<\/b>: \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 POSIX \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u043c \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438. API \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, S3 API, \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0442 \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0430 \u0437\u0430\u0442\u0435\u043c \u00ab\u0437\u0430\u0431\u044b\u0442\u044c\u00bb \u043e \u0432\u044b\u0437\u043e\u0432\u0435. \u041e\u0442\u043a\u043b\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u043f\u043e\u043f\u044b\u0442\u043a\u0443.<\/li>\n<li><b>\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/b>: Jaotatud s\u00fcsteemis eeldatakse, et v\u00f5ib eksisteerida mitmeid rakendusi, mis p\u00fc\u00fcavad salvestada andmeid \u00fchele ja samale kinnitatud andmekandjale. Seet\u00f5ttu mitte ainult, et rakendused konkureerivad omavahel andmeedastusv\u00f5ime p\u00e4rast (et edastada andmeid andmekandjale), vaid ka hoidmisseade ise konkurseerib selle v\u00f5ime \u00fcle, jaotades andmeid f\u00fc\u00fcsilistele ketastele. POSIX-i liiga detailne olemus suurendab v\u00f5rgu\u00fclesannete arvu mitu korda. Teiselt poolt tagab S3 API selge eristamise v\u00f5rgu\u00fclesannete vahel, mis tulevad kliendilt serverisse, ja nende vahel, mis toimuvad serveri sees.<\/li>\n<li><b>Ohutus<\/b>: POSIX-i turvamudel eeldab aktiivset inimeste osalust: administraatorid konfigureerivad iga kasutaja v\u00f5i r\u00fchma jaoks konkreetsed juurdep\u00e4\u00e4su\u00f5igused. Selline paradigma on keeruline kohandada pilvep\u00f5hisesse maailma. Kaasaegsed rakendused tuginevad turvamudelitele, mis on seotud API-dega, kus juurdep\u00e4\u00e4su\u00f5igused m\u00e4\u00e4ratakse poliitikate kogumina, eraldatakse teenusekontod, ajutised kasutustunnused jne.<\/li>\n<li><b>Haldamine<\/b>: Olekuv kryptod uus t\u00fcpi konteinerid toovad kaasa teatud juhtimis- ja halduskulud. See h\u00f5lmab andmete s\u00fcstemaatilist koordineerimist, mis on vajalik, et tagada andmete j\u00e4rjepidevus; see k\u00f5ik n\u00f5uab hoolikat kaalumist, milliseid andmete juurdep\u00e4\u00e4sukujundeid kasutada. Tuleb paigaldada, juhtida ja konfigureerida t\u00e4iendavaid programme, r\u00e4\u00e4kimata lisapingutustest, mis on vajalikud arendamiseks.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Andmete salvestamise konteinerliides<\/h4>\n<p>\nKuigi konteinerite andmesalvestuse liides (CSI) on suurep\u00e4raselt aidanud Kubernetes'i mahutite taseme levitamisel, edastades selle osaliselt kolmandate osapoolte andmesalvestuse pakkujatele, on see ka tahtmatult aidanud kinnitada veendumust, et oleku hoidmine konteinerite l\u00e4henemine on soovitatav andmesalvestamise meetod Kubernetes'is.<\/p>\n<p>CSI loodi nagu standard, et pakkuda p\u00e4randrakendustele juhuslikke plokki- ja failip\u00f5hiseid andmete salvestamise s\u00fcsteeme Kubernetes'i keskkonnas. Nagu selles artiklis n\u00e4idatud, on ainus olukord, kus konteinerip\u00f5hine (ja CSI oma praeguses vormis) lahendus on m\u00f5ttekas, kui rakendus ise on p\u00e4randi s\u00fcsteem, kuhu on keeruline lisada objekti salvestus API tuge.<\/p>\n<p>Oluline on m\u00f5ista, et kasutades CSI-d selle praeguses vormis, st vol\u00fc\u00fcmide mountimisel kaasaegsete rakenduste t\u00f6\u00f6 k\u00e4igus, seisame silmitsi sarnaste probleemidega nagu need, mis olid seotud s\u00fcsteemidega, kus andmete salvestamine on korraldatud POSIX-stiilis.<\/p>\n<h4>Kvaliteetsem l\u00e4henemine<\/h4>\n<p>\nSelles kontekstis on oluline m\u00f5ista, et enamik rakendusi ei ole sisuliselt m\u00f5eldud t\u00f6\u00f6tama kas staatiliste v\u00f5i staatust mittes\u00e4ilitavate lahendustega. Selline k\u00e4itumine s\u00f5ltub s\u00fcsteemi \u00fcldisest arhitektuurist ja konkreetsest valikust, mis on tehtud projekteerimise k\u00e4igus. R\u00e4\u00e4gime natuke staatust s\u00e4ilitavatest rakendustest.<\/p>\n<p>P\u00f5him\u00f5tteliselt saab k\u00f5ik rakenduste andmed jagada mitmeks suureks t\u00fc\u00fcbiks:<\/p>\n<ul>\n<li>Logi andmed<\/li>\n<li>Ajatempli andmed<\/li>\n<li>Tehingu andmed<\/li>\n<li>Metadatas<\/li>\n<li>Konteineri pildid<\/li>\n<li>BLOB andmed (suurte binaarobjektide)<\/li>\n<\/ul>\n<p>\nK\u00f5iki neid andmete liike toetavad v\u00e4ga h\u00e4sti kaasaegsed andmehoidlate platvormid ning on olemas mitmeid pilvep\u00f5hiseid platvorme, mis on kohandatud andmete tarnimiseks igas nendes spetsiifilistes formaatides. N\u00e4iteks tehinguandmed ja metaandmed v\u00f5ivad asuda kaasaegses pilvep\u00f5hises andmebaasis nagu CockroachDB, YugaByte jne. Konteineri pildid v\u00f5i BLOB andmed v\u00f5ivad olla salvestatud docker registreerimisse, mis p\u00f5hineb MinIO-l. Ajaandmed v\u00f5ivad olla salvestatud ajalooliste andmete andmebaasis, n\u00e4iteks InfluxDB jne. Me ei hakka siin igas andmete t\u00fc\u00fcbi ja vastava rakenduse \u00fcksikasjadega s\u00fcvenema, kuid \u00fcldine idee on v\u00e4ltida p\u00fcsiva andmesalvestuse kasutamist, mis p\u00f5hineb kohalikul kettamonteerimisel.<\/p>\n<p><img decoding=\"async\" alt=\"Andmete salvestamise mustrid Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLisaks on sageli t\u00f5hus tagada ajutise vahem\u00e4lu tase, mis toimib rakenduste jaoks kui teatud t\u00fc\u00fcpi ajutiste failide ladustamine, kuid rakendused ei tohiks selle taseme poole t\u00f5e allika poolest s\u00f5ltuda.<\/p>\n<h4>Olemasolevate rakenduste ladustamine<\/h4>\n<p>\nKuigi enamikul juhtudel on kasulik hoida rakendusi olekuteta, peavad andmeid haldavad rakendused \u2013 nagu andmebaasid, objekti kogud, v\u00f5tmem\u00e4lu ja v\u00e4\u00e4rtuste ladustamise s\u00fcsteemid \u2013 s\u00e4ilitama olekut. Selgitame, miks need rakendused Kuberneteses k\u00e4ivituvad. N\u00e4iteks toome v\u00e4lja MinIO, kuid sarnased p\u00f5him\u00f5tted kehtivad ka teiste suurte pilvep\u00f5histe andmete salvestuss\u00fcsteemide kohta.<\/p>\n<p>Pilvep\u00f5hised rakendused on kavandatud maksimaalse efektiivsuse saavutamiseks konteinerite paindlikkuse kasutamisel. See t\u00e4hendab, et neid ei ole mingisuguseid eeldusi keskkonna osas, kus need juurutatakse. N\u00e4iteks kasutab MinIO sisemist \u00fcleliigse kodeerimise mehhanismi (erasure coding), mis tagab s\u00fcsteemi piisava vastupidavuse, et see j\u00e4\u00e4ks funktsionaalseks isegi kaheksanda ketta rikke korral. Samuti haldab MinIO andmete terviklikkust ja turvalisust, kasutades oma serveripoolel hashimist ja kr\u00fcpteerimist.<\/p>\n<p>Selliste pilvep\u00f5histe rakenduste jaoks on varukohtadeks k\u00f5ige mugavamad kohalikud p\u00fcsivad mahud (PV). Kohalik PV pakub v\u00f5imalust salvestada toorandmeid, samas kui nende PV-de peal t\u00f6\u00f6tavad rakendused koguvad iseseisvalt teavet, mis v\u00f5imaldab andmeid skaleerida ja hallata kasvavaid andmen\u00f5udeid.<\/p>\n<p>See l\u00e4henemine on palju lihtsam ja paremini skaleeritav v\u00f5rreldes CSI-p\u00f5histe PV-dega, mis toovad s\u00fcsteemi enda andmehaldus- ja redundantsustasemed; probleem seisneb selles, et need tasemed on sageli konfliktis rakendustega, mis on projekteeritud olekute s\u00e4ilitamise printsiibil.<\/p>\n<h4>Kindel samm andmete eraldamise suunas arvutustest<\/h4>\n<p>\nSelles artiklis r\u00e4\u00e4kisime sellest, kuidas rakendused suunavad oma t\u00f6\u00f6d olekuta tegutsemiseks, ehk teisis\u00f5nu, andmete hoidmine eraldatakse nende \u00fcle teostatud arvutustest. L\u00f5petuseks vaatame m\u00f5ned reaalsed n\u00e4ited sellisest trendist.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, tuntud andmeanal\u00fc\u00fcsiplatvorm, on traditsiooniliselt kasutatud oleku hoidmisega ja HDFS-failis\u00fcsteemis juurutamisega. Kuid Spark'i \u00fclemineku ajal pilvep\u00f5hisesse maailma, on seda platvormi j\u00e4rjest enam kasutatud olekuta, kasutades `s3a`. Spark kasutab s3a, et edastada olekut teistesse s\u00fcsteemidesse, samas kui Spark'i konteinerid t\u00f6\u00f6tavad t\u00e4ielikult olekuta. Teised suured ettev\u00f5tted, kes tegutsevad suurte andmete anal\u00fc\u00fctika valdkonnas, eelk\u00f5ige, <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> kaasatakse andmete ja nende t\u00f6\u00f6tlemise lahutamise n\u00fcanssidega.<\/p>\n<p>Sarnaseid mustreid v\u00f5ib leida ka teistelt suurematelt anal\u00fc\u00fcsiplatvormidelt, sealhulgas Presto, Tensorflow R-ile, Jupyter. Andmete seisundi salvestamine kaugusesse pilvesalvestuss\u00fcsteemidesse lihtsustab teie rakenduse haldamist ja selle skaleerimist. Samuti toetab see rakenduse portatiivset majutamist mitmesugustes keskkondades.<br \/>\n<br \/>Allikas: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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:description\" content=\"\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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\udd47Andmete salvestamise mustrid Kuberneteses | ProHoster","description":"Tere, Habr! Tuletame meelde, et meil on ilmunud veel \u00fcks \u00e4\u00e4rmiselt huvitav ja kasulik raamat Kubernetes'e mustrite kohta. K\u00f5ik sai alguse Brendan Burnsi \"Mustrid\" raamatust, ja meie t\u00f6\u00f6 selles valdkonnas k\u00e4ib t\u00e4ie hooga. T\u00e4na pakume teile lugeda artiklit MinIO blogist, mis l\u00fchidalt tutvustab andmete salvestamise mustrite suundi ja spetsiifikat Kuberneteses. Kubernetes on fundamentaalselt","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\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:description":"\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","og:url":"https:\/\/prohoster.info\/et\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}