{"id":94388,"date":"2020-09-16T07:43:39","date_gmt":"2020-09-16T05:43:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-kubernetes"},"modified":"2020-09-16T07:43:39","modified_gmt":"2020-09-16T05:43:39","slug":"hranenie-dannyh-v-klastere-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-kubernetes","title":{"rendered":"Przechowywanie danych w klastrze Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mo\u017cna skonfigurowa\u0107 przechowywanie danych aplikacji uruchomionych w klastrze Kubernetes na kilka sposob\u00f3w. Niekt\u00f3re z nich s\u0105 ju\u017c nieaktualne, inne pojawi\u0142y si\u0119 ca\u0142kiem niedawno. W tym artykule om\u00f3wimy koncepcj\u0119 trzech sposob\u00f3w pod\u0142\u0105czenia pami\u0119ci masowej, w tym najnowszy \u2014 pod\u0142\u0105czenie przez Container Storage Interface.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Przechowywanie danych w klastrze Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/c045dc02cc4db1a0693730574a02eb4a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"sposob-1-ukazanie-pv-v-manifeste-poda\">Spos\u00f3b 1. Okre\u015blenie PV w manife\u015bcie poda<\/h2>\n<p><\/p>\n<p>Typowy manifest opisuj\u0105cy pod w klastrze Kubernetes: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Przechowywanie danych w klastrze Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/1df1b236df758f4a4a18905d31413617.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cz\u0119\u015bci manifestu, gdzie opisano, kt\u00f3ry wolumin jest pod\u0142\u0105czany i gdzie, s\u0105 wyr\u00f3\u017cnione kolorem.<\/p>\n<p><\/p>\n<p>W sekcji <strong>volumeMounts<\/strong> okre\u015bla si\u0119 punkty montowania (mountPath) \u2014 do jakiego katalogu wewn\u0105trz kontenera b\u0119dzie montowany trwa\u0142y wolumin, a tak\u017ce nazw\u0119 woluminu.<\/p>\n<p><\/p>\n<p>W sekcji <strong>x<\/strong> wymienia si\u0119 wszystkie woluminy u\u017cywane w podzie. Okre\u015bla si\u0119 nazw\u0119 ka\u017cdego woluminu, a tak\u017ce typ (w naszym przypadku: awsElasticBlockStore) i parametry pod\u0142\u0105czenia. Jakie konkretnie parametry s\u0105 wymieniane w manife\u015bcie, zale\u017cy od typu woluminu.<\/p>\n<p><\/p>\n<p>Ten sam wolumin mo\u017ce by\u0107 zamontowany jednocze\u015bnie w kilku kontenerach poda. Dzi\u0119ki temu r\u00f3\u017cne procesy aplikacji mog\u0105 mie\u0107 dost\u0119p do tych samych danych. <\/p>\n<p><\/p>\n<p>Ten spos\u00f3b pod\u0142\u0105czenia wymy\u015blono na samym pocz\u0105tku, kiedy Kubernetes dopiero powstawa\u0142, i jest ju\u017c przestarza\u0142y.<\/p>\n<p><\/p>\n<p>Podczas jego u\u017cycia pojawia si\u0119 kilka problem\u00f3w: <\/p>\n<p><\/p>\n<ol>\n<li>wszystkie woluminy musz\u0105 by\u0107 tworzone r\u0119cznie, Kubernetes nie b\u0119dzie m\u00f3g\u0142 nic stworzy\u0107 za nas;<\/li>\n<li>parametry dost\u0119pu do ka\u017cdego z wolumin\u00f3w s\u0105 unikalne i musz\u0105 by\u0107 podawane w manifestach wszystkich pod\u00f3w, kt\u00f3re korzystaj\u0105 z woluminu;<\/li>\n<li>aby zmieni\u0107 system pami\u0119ci masowej (na przyk\u0142ad przenie\u015b\u0107 si\u0119 z AWS do Google Cloud), trzeba zmieni\u0107 ustawienia i typ pod\u0142\u0105czonych wolumin\u00f3w we wszystkich manifestach.<\/li>\n<\/ol>\n<p><\/p>\n<p>Wszystko to jest bardzo niewygodne, dlatego w rzeczywisto\u015bci ten spos\u00f3b jest u\u017cywany tylko do pod\u0142\u0105czenia niekt\u00f3rych specjalnych typ\u00f3w wolumin\u00f3w: configMap, secret, emptyDir, hostPath:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>configMap i secret \u2014 to woluminy systemowe, pozwalaj\u0105 stworzy\u0107 w kontenerze wolumin z plikami z manifest\u00f3w Kubernetes.<\/p>\n<p>\n<\/li>\n<li>\n<p>emptyDir \u2014 to tymczasowy wolumin, tworzony tylko na czas \u017cycia poda. Wygodnie jest go u\u017cywa\u0107 do testowania lub przechowywania danych tymczasowych. Gdy pod zostanie usuni\u0119ty, wolumin typu emptyDir tak\u017ce zostaje usuni\u0119ty, a wszystkie dane znikaj\u0105.<\/p>\n<p>\n<\/li>\n<li>\n<p>hostPath \u2014 umo\u017cliwia zamontowanie dowolnego katalogu lokalnego dysku serwera, na kt\u00f3rym dzia\u0142a aplikacja, wewn\u0105trz kontenera aplikacji, w tym \/etc\/kubernetes. Jest to niebezpieczna funkcja, dlatego zwykle polityki bezpiecze\u0144stwa zabraniaj\u0105 u\u017cywania wolumin\u00f3w tego typu. W przeciwnym razie aplikacja haker\u00f3w mo\u017ce zamontowa\u0107 katalog HTC Kubernetes wewn\u0105trz swojego kontenera i ukra\u015b\u0107 wszystkie certyfikaty klastra. Zazwyczaj woluminy hostPath mog\u0105 by\u0107 u\u017cywane tylko przez aplikacje systemowe, kt\u00f3re uruchamiaj\u0105 si\u0119 w przestrzeni nazw kube-system.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#types-of-volumes\">Systemy przechowywania danych, z kt\u00f3rymi Kubernetes pracuje domy\u015blnie<\/a><\/noindex> s\u0105 opisane w dokumentacji.<\/p>\n<p><\/p>\n<h2 id=\"sposob-2-podklyuchenie-k-podam-scpvcpv\">Spos\u00f3b 2. Po\u0142\u0105czenie z podami SC\/PVC\/PV<\/h2>\n<p><\/p>\n<p>Alternatywnym sposobem po\u0142\u0105czenia jest koncepcja klasy pami\u0119ci masowej, PersistentVolumeClaim, PersistentVolume.<\/p>\n<p><\/p>\n<p><u>Klasa pami\u0119ci masowej<\/u> przechowuje parametry po\u0142\u0105czenia z systemem przechowywania danych.<\/p>\n<p><\/p>\n<p><u>PersistentVolumeClaim<\/u> opisuje wymagania dotycz\u0105ce woluminu, kt\u00f3ry jest potrzebny aplikacji.<br \/>\n<u>PersistentVolume<\/u> przechowuje parametry dost\u0119pu i statusu woluminu.<\/p>\n<p><\/p>\n<p>Idea polega na tym, \u017ce w manife\u015bcie poda wskazuj\u0105 wolumin typu PersistentVolumeClaim i podaj\u0105 nazw\u0119 tej jednostki w parametrze claimName.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Przechowywanie danych w klastrze Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/08b0460be887d39801d1acb9ee1bbd2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W manife\u015bcie PersistentVolumeClaim opisuj\u0105 wymagania dotycz\u0105ce woluminu danych, kt\u00f3ry jest potrzebny aplikacji. W tym m.in.:<\/p>\n<p><\/p>\n<ul>\n<li>rozmiar dysku; <\/li>\n<li>spos\u00f3b dost\u0119pu: ReadWriteOnce lub ReadWriteMany;<\/li>\n<li>odniesienie do klasy pami\u0119ci masowej \u2014 w jakim systemie przechowywania danych chcemy stworzy\u0107 wolumin.<\/li>\n<\/ul>\n<p><\/p>\n<p>W manife\u015bcie klasy pami\u0119ci masowej przechowywane s\u0105 typ i parametry po\u0142\u0105czenia z systemem przechowywania danych. S\u0105 one potrzebne kubeletowi, aby zamontowa\u0107 wolumin do siebie na w\u0119ze\u0142. <\/p>\n<p><\/p>\n<p>W manifestach PersistentVolume wskazywana jest klasa pami\u0119ci masowej i parametry dost\u0119pu do konkretnego woluminu (ID woluminu, \u015bcie\u017cka itd.).<\/p>\n<p><\/p>\n<p>Tworz\u0105c PVC, Kubernetes sprawdza, jaki wolumin i z jakiej klasy pami\u0119ci masowej jest potrzebny, i dobiera dost\u0119pny PersistentVolume.<\/p>\n<p><\/p>\n<p>Je\u015bli nie ma dost\u0119pnych PV, Kubernetes mo\u017ce uruchomi\u0107 specjalny program \u2014 Provisioner (jego nazw\u0119 wskazuje si\u0119 w klasie pami\u0119ci masowej). Program ten \u0142\u0105czy si\u0119 z systemem przechowywania, tworzy wolumin potrzebnego rozmiaru, uzyskuje identyfikator i tworzy w klastrze Kubernetes manifest PersistentVolume, kt\u00f3ry jest powi\u0105zany z PersistentVolumeClaim.<\/p>\n<p><\/p>\n<p>Wszystkie te abstrakcje pozwalaj\u0105 usun\u0105\u0107 informacje o tym, z jakim systemem przechowywania dzia\u0142a aplikacja, z poziomu manifestu aplikacji do poziomu administracji. <\/p>\n<p><\/p>\n<p>Wszystkie parametry po\u0142\u0105czenia z systemem przechowywania danych znajduj\u0105 si\u0119 w klasie przechowywania, za kt\u00f3r\u0105 odpowiadaj\u0105 administratorzy klastra. Wszystko, co trzeba zrobi\u0107 przy migracji z AWS do Google Cloud, to zmieni\u0107 nazw\u0119 klasy przechowywania w PVC w manifestach aplikacji. Wolumeny persystencji dla przechowywania danych zostan\u0105 automatycznie utworzone w klastrze za pomoc\u0105 programu Provisioner.<\/p>\n<p><\/p>\n<h2 id=\"sposob-3-container-storage-interface\">Metoda 3. Interfejs przechowywania kontener\u00f3w<\/h2>\n<p><\/p>\n<p>Ca\u0142y kod, kt\u00f3ry wsp\u00f3\u0142dzia\u0142a z r\u00f3\u017cnymi systemami przechowywania danych, jest cz\u0119\u015bci\u0105 j\u0105dra Kubernetes. Wydania poprawek b\u0142\u0119d\u00f3w lub nowej funkcjonalno\u015bci s\u0105 zwi\u0105zane z nowymi wersjami, wi\u0119c kod musi by\u0107 zmieniany dla wszystkich wspieranych wersji Kubernetes. Ca\u0142y ten proces jest trudny do utrzymania i dodawania nowej funkcjonalno\u015bci.<\/p>\n<p><\/p>\n<p>Aby rozwi\u0105za\u0107 problem, deweloperzy z Cloud Foundry, Kubernetes, Mesos i Docker stworzyli Interfejs przechowywania kontener\u00f3w (CSI) \u2014 prosty, zunifikowany interfejs, kt\u00f3ry opisuje interakcj\u0119 systemu zarz\u0105dzania kontenerami z konkretnego sterownika (CSI Driver) pracuj\u0105cego z danym systemem przechowywania. Ca\u0142y kod dotycz\u0105cy interakcji z systemem przechowywania zosta\u0142 wyodr\u0119bniony z j\u0105dra Kubernetes do osobnego systemu.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2019\/01\/15\/container-storage-interface-ga\/\">Dokumentacja dotycz\u0105ca Interfejsu przechowywania kontener\u00f3w<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Zwykle sterownik CSI sk\u0142ada si\u0119 z dw\u00f3ch komponent\u00f3w: Node Plugin i Controller Plugin.<\/p>\n<p><\/p>\n<p>Node Plugin jest uruchamiany na ka\u017cdym w\u0119\u017ale i odpowiada za montowanie wolumen\u00f3w oraz operacje na nich. Controller Plugin wsp\u00f3\u0142dzia\u0142a z systemem przechowywania: tworzy lub usuwa wolumeny, przyznaje prawa dost\u0119pu itp.<\/p>\n<p><\/p>\n<p>W j\u0105dra Kubernetes pozostaj\u0105 stare sterowniki, ale ich u\u017cycie nie jest ju\u017c zalecane, i wszystkim radzi si\u0119 instalacj\u0119 sterownika CSI specyficznego dla systemu, z kt\u00f3rym maj\u0105 pracowa\u0107.<\/p>\n<p><\/p>\n<p>Nowo\u015b\u0107 mo\u017ce przerazi\u0107 tych, kt\u00f3rzy przyzwyczaili si\u0119 do konfigurowania przechowywania danych przez klas\u0119 przechowywania, ale tak naprawd\u0119 nic strasznego si\u0119 nie wydarzy\u0142o. Dla programist\u00f3w nic si\u0119 nie zmienia \u2014 b\u0119d\u0105 nadal pracowa\u0107 tylko z nazw\u0105 klasy przechowywania. Dla administrator\u00f3w pojawi\u0142a si\u0119 instalacja helm chart oraz zmieni\u0142a si\u0119 struktura ustawie\u0144. Je\u015bli wcze\u015bniej ustawienia wprowadzano bezpo\u015brednio w klasie przechowywania, to teraz najpierw trzeba je zdefiniowa\u0107 w helm chart, a potem dopiero w klasie przechowywania. Po zrozumieniu, nic strasznego si\u0119 nie wydarzy\u0142o.<\/p>\n<p><\/p>\n<p>Rozwa\u017cmy na przyk\u0142adzie, jakie korzy\u015bci mo\u017cna uzyska\u0107, przechodz\u0105c na po\u0142\u0105czenie systemu przechowywania Ceph za pomoc\u0105 sterownika CSI.<\/p>\n<p><\/p>\n<p>Przy pracy z Ceph wtyczka CSI oferuje wi\u0119cej mo\u017cliwo\u015bci pracy z systemem przechowywania ni\u017c wbudowane sterowniki.<\/p>\n<p><\/p>\n<ol>\n<li><strong>Dynamiczne tworzenie dysk\u00f3w.<\/strong> Zwykle dyski RBD s\u0105 u\u017cywane tylko w trybie RWO, a CSI dla Ceph pozwala na ich u\u017cycie w trybie RWX. Kilka pod\u00f3w na r\u00f3\u017cnych w\u0119z\u0142ach mo\u017ce zamontowa\u0107 ten sam dysk RBD na swoich w\u0119z\u0142ach i pracowa\u0107 z nim r\u00f3wnolegle. Sprawiedliwo\u015bci nale\u017cy jednak odda\u0107, \u017ce nie wszystko jest tak jasne \u2014 ten dysk mo\u017cna pod\u0142\u0105czy\u0107 tylko jako urz\u0105dzenie blokowe, co oznacza, \u017ce trzeba dostosowa\u0107 aplikacj\u0119 do pracy z nim w trybie wsp\u00f3\u0142dzielonym.<\/li>\n<li><strong>Tworzenie migawki.<\/strong> W klastrze Kubernetes mo\u017cna stworzy\u0107 manifest z wymaganiem utworzenia migawki. Wtyczka CSI j\u0105 zobaczy i stworzy migawk\u0119 z dysku. Na jej podstawie b\u0119dzie mo\u017cna zrobi\u0107 kopi\u0119 zapasow\u0105 lub kopi\u0119 PersistentVolume. <\/li>\n<li><strong>Zwi\u0119kszenie rozmiaru dysku<\/strong> na macierzy dyskowej i PersistentVolume w klastrze Kubernetes.<\/li>\n<li><strong>Kwoty.<\/strong> Wbudowane w Kubernetes sterowniki CephFS nie obs\u0142uguj\u0105 kwot, a nowe wtyczki CSI z nowym Ceph Nautilus potrafi\u0105 w\u0142\u0105czy\u0107 kwoty na partycjach CephFS.<\/li>\n<li><strong>Metryki.<\/strong> Wtyczka CSI mo\u017ce dostarcza\u0107 do Prometheus wiele metryk dotycz\u0105cych tego, jakie wolumeny s\u0105 pod\u0142\u0105czone, jakie s\u0105 interakcje itp.<\/li>\n<li><strong>\u015awiadomo\u015b\u0107 topologii.<\/strong> Pozwala okre\u015bli\u0107 w manifestach, jak geograficznie rozmieszczony jest klaster, i unika\u0107 \u0142\u0105czenia do pod\u00f3w uruchomionych w Londynie z systemem pami\u0119ci masowej znajduj\u0105cym si\u0119 w Amsterdamie. <\/li>\n<\/ol>\n<p><\/p>\n<p>Jak pod\u0142\u0105czy\u0107 Ceph do klastra Kubernetes przez CSI, zobacz <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/DteNn-1f-WI\">w praktycznej cz\u0119\u015bci wyk\u0142adu wieczornej szko\u0142y S\u0142\u0151rma.<\/a><\/noindex>. Mo\u017cna r\u00f3wnie\u017c zapisa\u0107 si\u0119 na <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/Ssx7pg\">kurs wideo Ceph<\/a><\/noindex>, kt\u00f3ry rozpocznie si\u0119 15 pa\u017adziernika. <\/p>\n<p><\/p>\n<p><em>Autor artyku\u0142u: Sergey Bondarev, praktykuj\u0105cy architekt w Southbridge, Certyfikowany Administrator Kubernetes, jeden z tw\u00f3rc\u00f3w kubespray.<\/em><\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Troch\u0119 Post Scriptum nie w celach reklamowych, ale dla korzy\u015bci...<\/b><\/p>\n<p>P.S. Sergey Bondarev prowadzi dwa intensywy: zaktualizowany <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/1WIJFg\">Kubernetes Podstawy<\/a><\/noindex> 28-30 wrze\u015bnia i zaawansowany <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/Wbqz5g\">Kubernetes Mega<\/a><\/noindex> 14-16 pa\u017adziernika.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Przechowywanie danych w klastrze Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/69752ee9f7c9caf887011564139baf16.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/519130\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041e\u0434\u043d\u0438 \u0438\u0437 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0442\u0440\u0451\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0421\u0425\u0414, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u2014 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 Container Storage Interface. \u0421\u043f\u043e\u0441\u043e\u0431 1. \u0423\u043a\u0430\u0437\u0430\u043d\u0438\u0435 PV \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043f\u043e\u0434\u0430 \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0434 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes: \u0426\u0432\u0435\u0442\u043e\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94389,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94388","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041e\u0434\u043d\u0438 \u0438\u0437 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e.\" \/>\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\/pl\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041e\u0434\u043d\u0438 \u0438\u0437 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-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-09-16T05:43:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-16T05:43:39+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\udd47 Przechowywanie danych w klastrze Kubernetes | ProHoster","description":"Mo\u017cna skonfigurowa\u0107 przechowywanie danych aplikacji uruchomionych w klastrze Kubernetes na kilka sposob\u00f3w. Niekt\u00f3re z nich s\u0105 ju\u017c przestarza\u0142e, inne pojawi\u0142y si\u0119 ca\u0142kiem niedawno.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes | ProHoster","og:description":"\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041e\u0434\u043d\u0438 \u0438\u0437 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-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-09-16T05:43:39+00:00","article:modified_time":"2020-09-16T05:43:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94388","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 11:27:34","updated":"2022-10-02 10:35:39","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/94388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=94388"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/94388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/94389"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=94388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=94388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=94388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}