{"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\/da\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Dataopbevaringsm\u00f8nstre i Kubernetes","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=\"Dataopbevaringsm\u00f8nstre i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nHello, Habr!<\/p>\n<p>Vi minder om, at vi har offentliggjort endnu en ekstremt interessant og nyttig <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">bog<\/a><\/noindex> om Kubernetes-m\u00f8nstre. Det hele startede med \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">M\u00f8nstre<\/a><\/noindex>\" Brendan Burns, og desuden er arbejdet inden for dette segment hos os <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">i fuld gang<\/a><\/noindex>. I dag tilbyder vi dig at l\u00e6se et blogindl\u00e6g fra MinIO, der kortl\u00e6gger tendenserne og specifikationerne for datalagringsm\u00f8nstre i Kubernetes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes har fundamentalt \u00e6ndret de traditionelle m\u00f8nstre for udvikling og implementering af applikationer. Nu kan teamet bruge kun f\u00e5 dage p\u00e5 at udvikle, teste og implementere en applikation \u2013 i forskellige milj\u00f8er, alt sammen inden for Kubernetes-klynger. Arbejde med teknologi fra tidligere generationer tog normalt hele uger, hvis ikke flere m\u00e5neder.<\/p>\n<p>Denne acceleration er blevet muliggjort takket v\u00e6re den abstraktion, som Kubernetes tilbyder \u2013 det vil sige, at Kubernetes selv h\u00e5ndterer interaktionen med de lavere niveauer af fysiske eller virtuelle maskiner, hvilket g\u00f8r det muligt for brugerne at angive blandt andre parametre den n\u00f8dvendige processor, den n\u00f8dvendige m\u00e6ngde hukommelse, og antallet af containerinstanser. Da et enormt f\u00e6llesskab er involveret i vedligeholdelsen af Kubernetes, og anvendelsen af Kubernetes konstant udvides, f\u00f8rer det klart blandt alle containerorkestreringsplatforme.<\/p>\n<p><i><b>I takt med at brugen af Kubernetes vokser, stiger forvirringen omkring de anvendte datalagringsm\u00f8nstre<\/b><\/i>.<\/p>\n<p>I den udbredte konkurrence om en del af kagen Kubernetes (det vil sige, om datalagring), n\u00e5r det kommer til datalagring, drukner signalet i det st\u00e6rke st\u00f8j.<br \/>\nKubernetes repr\u00e6senterer den moderne model for udvikling og implementering af applikationer samt for deres administration. Denne moderne model adskiller datalagring fra beregning. For fuldt ud at forst\u00e5 denne adskillelse i konteksten af Kubernetes, skal man ogs\u00e5 forst\u00e5, hvad applikationer, der arbejder med tilstand og uden tilstand, er, samt hvordan datalagring passer ind i dette. Her har REST API-tilgangen, der anvendes af S3, klare fordele i forhold til POSIX\/CSI-tilgangen, som er karakteristisk for andre l\u00f8sninger.<\/p>\n<p>I denne artikel vil vi tale om datalagringsm\u00f8nstre i Kubernetes og s\u00e6rligt ber\u00f8re debatten om applikationer, der k\u00f8rer med og uden vedvarende tilstand, for bedre at forst\u00e5 forskellen mellem dem, og hvorfor den er vigtig. Artiklen vil se p\u00e5 applikationer og de anvendte datalagringsm\u00f8nstre i lyset af bedste praksis for arbejde med containere og Kubernetes.<\/p>\n<h4>Containere uden vedvarende tilstand<\/h4>\n<p>\nContainere er iboende letv\u00e6gts og efemeriske. De kan nemt stoppes, slettes eller implementeres p\u00e5 en anden node - alt dette tager kun f\u00e5 sekunder. I et stort containers orchestrationssystem sker s\u00e5danne operationer konstant, og brugerne bem\u00e6rker ikke engang disse \u00e6ndringer. Dog er flytninger kun mulige, hvis containeren ikke har nogen afh\u00e6ngigheder fra den node, den befinder sig p\u00e5. Disse containere siges at fungere <i>uden vedvarende tilstand<\/i>.<\/p>\n<h4>Containere med vedvarende tilstand<\/h4>\n<p>\nHvis en container gemmer data p\u00e5 lokalt tilsluttede enheder (eller p\u00e5 et bloklager), skal datalagringsmediet, som den befinder sig p\u00e5, flyttes til den nye node sammen med selve containeren i tilf\u00e6lde af fejl. Dette er vigtigt, da applikationen, der k\u00f8rer i containeren, ellers ikke kan fungere korrekt, fordi den skal tilg\u00e5 de data, der er gemt p\u00e5 de lokale medier. Disse containere siges at fungere <i>med vedvarende tilstand<\/i>.<\/p>\n<p>Rent teknisk kan containere med vedvarende tilstand ogs\u00e5 flyttes til andre noder. Dette sikres typisk ved hj\u00e6lp af distribuerede filsystemer eller block storage-netv\u00e6rk tilsluttet alle noder, hvor containere k\u00f8rer. P\u00e5 denne m\u00e5de f\u00e5r containere adgang til volumener til vedvarende datalagring, og informationen gemmes p\u00e5 diske, der er spredt over hele netv\u00e6rket. Jeg vil kalde denne metode \"<i>container-tilgangen med vedvarende tilstand<\/i>\", og i resten af artiklen vil jeg referere til den p\u00e5 denne m\u00e5de for ensartethed.<\/p>\n<p><img decoding=\"async\" alt=\"Dataopbevaringsm\u00f8nstre i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI et typisk container-baseret tilgang med vedholdenhed knyttes alle applikations-pods til et f\u00e6lles distribueret filsystem - hvilket skaber en slags delt lager, hvor alle applikationsdata findes. Selvom der kan v\u00e6re visse variationer, er dette en overordnet tilgang.<\/p>\n<p>Lad os nu se p\u00e5, hvorfor den container-baserede tilgang med vedholdenhed i en cloud-venlig verden er et antipattern.<\/p>\n<h4>Cloud-orienteret applikationsdesign<\/h4>\n<p>\nTraditionelt brugte applikationer databaser til struktureret opbevaring af information og lokale diske eller distribuerede filsystemer, hvor alle ustrukturerede eller endda semi-strukturerede data blev gemt. Efterh\u00e5nden som volumenerne af ustrukturerede data voksede, inds\u00e5 udviklerne, at POSIX var for \"snakkesalig\", forbundet med betydelige omkostninger og til sidst h\u00e6mmede applikationens funktion, n\u00e5r den skulle skalere til reelle store st\u00f8rrelser.<\/p>\n<p>Dette bidrog hovedsageligt til fremkomsten af en ny datalagringsstandard, nemlig cloud-orienterede lagre, der prim\u00e6rt opererer baseret p\u00e5 REST API'er og frig\u00f8r applikationen fra den byrdefulde vedligeholdelse af lokalt datalager. I s\u00e5 fald arbejder applikationen reelt uden vedholdenhed (da tilstanden er i det fjerntliggende lager). Moderne applikationer bygges fra bunden med dette aspekt i tankerne. Generelt er enhver moderne applikation, der h\u00e5ndterer data af forskellige slags (logs, metadata, blobs osv.), bygget efter et cloud-orienteret paradigme, hvor tilstanden overf\u00f8res til et dedikeret software-system til opbevaring af dette. <\/p>\n<p><i><b>Den container-baserede tilgang med vedholdenhed tvinger hele denne paradigm til at tilbageg\u00e5 til det, hvor det startede! <\/b><\/i><\/p>\n<p>N\u00e5r der anvendes POSIX-gr\u00e6nseflader til datalagring, fungerer applikationerne p\u00e5 samme m\u00e5de, som hvis de gemte tilstand, og derfor fraviger de de mest centrale postulater i skydesign, nemlig muligheden for at variere st\u00f8rrelserne af applikationernes arbejdstr\u00e5de afh\u00e6ngigt af den indkommende belastning, at bev\u00e6ge sig til en ny node, s\u00e5 snart den aktuelle node fejler, og s\u00e5 videre.<\/p>\n<p>Ved at se n\u00e6rmere p\u00e5 denne situation opdager vi, at n\u00e5r vi v\u00e6lger datalagring, st\u00e5r vi igen og igen over for dilemmaet \"POSIX versus REST API\", MEN med en yderligere forv\u00e6rring af problemsituationer med POSIX, der skyldes den distribuerede natur af Kubernetes-milj\u00f8er. Is\u00e6r,<\/p>\n<ul>\n<li><b>POSIX er snakkesalig<\/b>: semantikken i POSIX kr\u00e6ver at associere metadata og filbeskrivere med hver operation, som hj\u00e6lper med at opretholde status for operationen. Dette medf\u00f8rer betydelige omkostninger uden reel v\u00e6rdi. API'er til objektlagring, is\u00e6r S3 API, har afskaffet disse krav og g\u00f8r det muligt for applikationen at handle og derefter \"glemme\" opkaldet. Lagerets respons angiver, om en given handling er udf\u00f8rt med succes eller ej. I tilf\u00e6lde af fejl kan applikationen fors\u00f8ge igen.<\/li>\n<li><b>Netv\u00e6rksbegr\u00e6nsninger<\/b>: I et distribueret system antages det, at der kan eksistere mange applikationer, der fors\u00f8ger at skrive data til det samme vedh\u00e6ftede medium. Derfor, udover at applikationer vil konkurrere med hinanden om b\u00e5ndbredde (for at sende data til mediet), vil selve datalagringssystemet ogs\u00e5 konkurrere om denne b\u00e5ndbredde ved at sende data over fysiske diske. P\u00e5 grund af POSIX's snakkesl ger antallet af netv\u00e6rksopkald stiger flere gange. P\u00e5 den anden side sikrer S3 API en klar opdeling af netv\u00e6rksopkald mellem dem, der kommer fra klienten til serveren, og dem, der finder sted inden for serveren.<\/li>\n<li><b>Sikkerhed<\/b>: POSIX-sikkerhedsmodellen er designet til aktiv menneskelig deltagelse: administratorer konfigurerer specifikke adgangsniveauer for hver bruger eller gruppe. Denne paraply er sv\u00e6rt at tilpasse den skybaserede verden. Moderne applikationer afh\u00e6nger af sikkerhedsmodeller, der er bundet til API'er, hvor adgangsrettigheder defineres som et s\u00e6t politikker, og servicekonti, midlertidige legitimationsoplysninger osv. tildeles.<\/li>\n<li><b>H\u00e5ndterbarhed<\/b>: Tilstande med vedholdende containere medf\u00f8rer visse omkostninger i relation til administration. Det handler om synkronisering af parallel adgang til data, sikring af dataintegritet; alt dette kr\u00e6ver omhyggelig overvejelse af, hvilke datatilgangsm\u00f8nstre der skal bruges. Det er n\u00f8dvendigt at installere, overv\u00e5ge og konfigurere ekstra programmer, for ikke at n\u00e6vne de ekstra kr\u00e6fter, der bruges til udviklingen.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Container data-storage interface<\/h4>\n<p>\nMens container storage interface (CSI) har v\u00e6ret en stor hj\u00e6lp til udbredelsen af Kubernetes-volumeniveauet, delvist ved at delegere det til tredjeparts datalagringsudbydere, har det ogs\u00e5 utilsigtet bidraget til overbevisningen om, at den vedholdende container-tilgang er den anbefalede metode til datalagring i Kubernetes.<\/p>\n<p>CSI blev designet som en standard for levering af vilk\u00e5rlige blokerings- og filopbevaringssystemer til arveapplikationer, n\u00e5r der arbejdes med Kubernetes. Og som vist i denne artikel, er den eneste situation, hvor den vedholdende container-tilgang (og CSI i sin nuv\u00e6rende form) er rimelig \u2013 n\u00e5r selve applikationen er et arvesystem, hvor det er umuligt at tilf\u00f8je API-underst\u00f8ttelse af objektlagringssystemer.<\/p>\n<p>Det er vigtigt at forst\u00e5, at n\u00e5r vi bruger CSI i sin nuv\u00e6rende form, dvs. ved at montere volumener, n\u00e5r vi arbejder med moderne applikationer, vil vi st\u00f8de p\u00e5 cirka de samme problemer, som opstod i systemer, hvor datalagring blev organiseret p\u00e5 POSIX-m\u00e5de.<\/p>\n<h4>En mere kvalitetsorienteret tilgang<\/h4>\n<p>\nI denne sammenh\u00e6ng er det vigtigt at forst\u00e5, at de fleste applikationer i deres grundl\u00e6ggende form ikke er designet til at arbejde med vedvarende eller ikke-vedvarende tilstand. Denne adf\u00e6rd afh\u00e6nger af den overordnede systemarkitektur og de specifikke valg, der er truffet under designprocessen. Lad os tale lidt om applikationer, der bevarer tilstand.<\/p>\n<p>I princippet kan alle applikationsdata opdeles i flere brede kategorier:<\/p>\n<ul>\n<li>Logdata<\/li>\n<li>Tidsstemplingsdata<\/li>\n<li>Transaktionsdata<\/li>\n<li>Metadata<\/li>\n<li>Containerbilleder<\/li>\n<li>Blobdata (store bin\u00e6re objekter)<\/li>\n<\/ul>\n<p>\nAlle disse datatyper underst\u00f8ttes meget godt p\u00e5 moderne datalagringsplatforme, og der findes flere cloud-orienterede platforme, der er tilpasset til at levere data i hver af disse specifikke formater. For eksempel kan transaktionsdata og metadata v\u00e6re i en moderne cloud-orienteret database som CockroachDB, YugaByte mv. Containerbilleder eller blobdata kan opbevares i et docker-register baseret p\u00e5 MinIO. Tidsstemplingsdata kan gemmes i en tidsseriedatabase, s\u00e5som InfluxDB mv. Lad os ikke g\u00e5 i dybden med hver datatypes detaljer og de tilh\u00f8rende applikationer, men den overordnede id\u00e9 er at undg\u00e5 vedvarende datalagring baseret p\u00e5 lokal diskmontering.<\/p>\n<p><img decoding=\"async\" alt=\"Dataopbevaringsm\u00f8nstre i Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDesuden viser det sig ofte at v\u00e6re effektivt at tilbyde et niveau af midlertidig caching, der fungerer som et slags lager for midlertidige filer for applikationerne, men applikationerne m\u00e5 ikke v\u00e6re afh\u00e6ngige af dette niveau som sandhedens kilde.<\/p>\n<h4>Opbevaring for applikationer med vedvarende tilstand<\/h4>\n<p>\nMens det i de fleste tilf\u00e6lde er nyttigt at holde applikationer uden vedvarende tilstand, skal de applikationer, der er designet til at gemme data - for eksempel databaser, objektlagre, n\u00f8glev\u00e6rdilagre - bevare tilstand. Lad os forst\u00e5, hvorfor disse applikationer udrulles p\u00e5 Kubernetes. Som eksempel kan vi tage MinIO, men lignende principper g\u00e6lder ogs\u00e5 for andre store cloud-orienterede datalagringssystemer.<\/p>\n<p>Cloud-native applikationer er designet til at maksimere den fleksibilitet, som containere tilbyder. Det betyder, at der ikke g\u00f8res nogen antagelser om det milj\u00f8, hvor de vil blive implementeret. For eksempel bruger MinIO en indbygget mekanisme til erasure coding, som sikrer, at systemet forbliver funktionsdygtigt, selvom halvdelen af diske fejler. MinIO h\u00e5ndterer ogs\u00e5 integriteten og sikkerheden af data ved hj\u00e6lp af sit eget hashing og kryptering p\u00e5 serversiden.<\/p>\n<p>For s\u00e5danne cloud-native applikationer er lokale persistente volumener (PV) de mest praktiske som backup-opbevaring. Lokale PV'er giver mulighed for lagring af r\u00e5data, mens applikationer, der k\u00f8rer ovenp\u00e5 disse PV'er, selv indsamler information, som g\u00f8r det muligt at skalere dataene og h\u00e5ndtere voksende datakrav.<\/p>\n<p>Denne tilgang er meget enklere og skalerer betydeligt bedre end CSI-baserede PV'er, som tilf\u00f8jer deres egne datastyrings- og redundanslag til systemet; dette skyldes, at disse lag ofte konflikterer med applikationer designet til tilstandsl\u00f8s drift.<\/p>\n<h4>Sikre skridt mod at adskille data fra beregninger<\/h4>\n<p>\nI denne artikel har vi diskuteret, hvordan applikationer omdirigeres mod at arbejde uden tilstand, eller med andre ord, hvordan datalagring adskilles fra beregningerne over dem. Til sidst vil vi se p\u00e5 nogle virkelige eksempler p\u00e5 denne tendens.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, den ber\u00f8mte platform til dataanalyse, har traditionelt v\u00e6ret brugt med tilstand og med implementering i HDFS-filsystemet. Men efterh\u00e5nden som Spark bev\u00e6ger sig mod en cloud-native verden, bliver denne platform i stigende grad brugt uden tilstand ved hj\u00e6lp af `s3a`. Spark anvender s3a til at overf\u00f8re tilstand til andre systemer, mens selve Spark-containere k\u00f8rer helt uden tilstand. Andre store enterprise-akt\u00f8rer inden for big data-analyse, is\u00e6r, <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> g\u00e5r ogs\u00e5 over til at arbejde med adskillelse af datalagring og beregninger.<\/p>\n<p>Lignende m\u00f8nstre ses ogs\u00e5 p\u00e5 andre store analyseplatforme, s\u00e5som Presto, Tensorflow til R, Jupyter. Ved at eksportere tilstand til fjerndrevne cloud-lagringssystemer bliver det meget lettere at administrere din applikation og skalere den. Desuden fremmer det b\u00e6rbarheden af applikationen i forskellige milj\u00f8er.<br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Data Storage M\u00f8nstre i Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}