{"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\/de\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Datenablage-Muster in 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=\"Datenablage-Muster in Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nHallo, Habra!<\/p>\n<p>Wir erinnern Sie daran, dass wir einen weiteren \u00e4u\u00dferst interessanten und n\u00fctzlichen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">Buch<\/a><\/noindex> \u00fcber Kubernetes-Patterns. Es fing alles mit \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Patterns<\/a><\/noindex>\" von Brendan Burns an, und unsere Arbeit in diesem Bereich ist \u00fcbrigens <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">in vollem Gange<\/a><\/noindex>. Heute m\u00f6chten wir Ihnen einen Blogartikel von MinIO empfehlen, der die Trends und Besonderheiten der Datenspeicherungs-Patterns in Kubernetes zusammenfasst.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes hat die traditionellen Patterns der Anwendungsentwicklung und -bereitstellung grundlegend ver\u00e4ndert. Jetzt kann ein Team nur wenige Tage f\u00fcr die Entwicklung, das Testen und die Bereitstellung einer Anwendung ben\u00f6tigen \u2013 in verschiedenen Umgebungen, und dies alles innerhalb von Kubernetes-Clustern. Diese Vorgehensweise erforderte in fr\u00fcheren Technologiegenerationen in der Regel mehrere Wochen, wenn nicht Monate.<\/p>\n<p>Diese Beschleunigung wurde durch die Abstraktion, die Kubernetes bietet, erm\u00f6glicht \u2013 das hei\u00dft, Kubernetes selbst verwaltet die Interaktion mit den niedrigstufigen Details physischer oder virtueller Maschinen und erm\u00f6glicht den Benutzern, unter anderem den ben\u00f6tigten Prozessor, den ben\u00f6tigten Speicherplatz und die Anzahl der Containerinstanzen anzugeben. Da eine riesige Community von Entwicklern an Kubernetes arbeitet und der Einsatz von Kubernetes st\u00e4ndig zunimmt, f\u00fchrt es deutlich den Markt aller Container-Orchestrierungsplattformen an.<\/p>\n<p><i><b>Mit der Ausweitung des Einsatzes von Kubernetes w\u00e4chst auch die Verwirrung \u00fcber die darin verwendeten Datenspeicher-Patterns.<\/b><\/i>.<\/p>\n<p>In der allgemeinen Konkurrenz um ein St\u00fcck vom Kubernetes-Kuchen (d.h. um den Storage) geht die Signalwirkung beim Thema Datenspeicherung in der lauten Ger\u00e4uschkulisse unter.<br \/>\nKubernetes verk\u00f6rpert ein modernes Modell der Anwendungsentwicklung und -bereitstellung sowie deren Verwaltung. Dieses moderne Modell trennt die Datenspeicherung von der Berechnung. Um dieses Abtrennen im Kontext von Kubernetes vollst\u00e4ndig zu verstehen, muss man auch verstehen, was Anwendungen sind, die zustandsbehaftet und zustandslos sind, und wie die Datenspeicherung damit zusammenh\u00e4ngt. Hier hat der REST-API-Ansatz, der von S3 verwendet wird, klare Vorteile gegen\u00fcber dem POSIX\/CSI-Ansatz, der typischerweise f\u00fcr andere L\u00f6sungen charakteristisch ist.<\/p>\n<p>In diesem Artikel sprechen wir \u00fcber die Datenhaltungsmuster in Kubernetes und beleuchten insbesondere den Streit zwischen zustandsbehafteten und zustandslosen Anwendungen, um besser zu verstehen, worin der Unterschied zwischen ihnen besteht und warum dieser wichtig ist. Im weiteren Verlauf des Textes werden Anwendungen und die in ihnen verwendeten Datenhaltungsmuster im Kontext der besten Praktiken f\u00fcr den Umgang mit Containern und Kubernetes behandelt.<\/p>\n<h4>Zustandslose Container<\/h4>\n<p>\nContainer sind per Definition leichtgewichtig und verg\u00e4nglich. Sie k\u00f6nnen problemlos gestoppt, gel\u00f6scht oder auf einem anderen Knoten bereitgestellt werden \u2013 das alles dauert nur wenige Sekunden. In einem gro\u00dfen Containerorchestrierungssystem finden solche Vorg\u00e4nge st\u00e4ndig statt, und die Benutzer bemerken diese \u00c4nderungen oft nicht einmal. Allerdings sind solche Bewegungen nur m\u00f6glich, wenn der Container keine Abh\u00e4ngigkeiten von dem Knoten hat, auf dem er sich befindet. Solche Container bezeichnet man als <i>zustandslos<\/i>.<\/p>\n<h4>Zustandsbehaftete Container<\/h4>\n<p>\nWenn ein Container Daten auf lokal angeschlossenen Ger\u00e4ten (oder auf einem Blockger\u00e4t) speichert, muss der Datenspeicher, auf dem er sich befindet, im Falle eines Fehlers zusammen mit dem Container auf einen neuen Knoten verschoben werden. Das ist wichtig, da andernfalls die Anwendung, die im Container l\u00e4uft, nicht korrekt funktionieren kann, da sie auf die Daten zugreifen muss, die auf den lokalen Speichermedien gespeichert sind. Solche Container werden als <i>zustandsbehaftet<\/i>.<\/p>\n<p>Aus rein technischer Sicht k\u00f6nnen auch zustandsbehaftete Container auf andere Knoten verschoben werden. Dies geschieht normalerweise mithilfe von verteilten Dateisystemen oder blockbasierten Netzwerkspeichern, die an allen Knoten, auf denen Container betrieben werden, angeschlossen sind. Auf diese Weise erhalten Container Zugriff auf Volumes f\u00fcr persistente Datenhaltung, und die Informationen werden auf Festplatten gespeichert, die im gesamten Netzwerk verteilt sind. Diese Methode nenne ich \"<i>zustandsbehafteter Containeransatz<\/i>\", und im weiteren Verlauf des Artikels werde ich ihn der Einheitlichkeit halber so bezeichnen.<\/p>\n<p><img decoding=\"async\" alt=\"Datenablage-Muster in Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBei einem typischen containerbasierten Ansatz mit Speicherung des Zustands werden alle Anwendungspods an ein einziges verteiltes Dateisystem angeheftet \u2013 es entsteht eine Art gemeinsamer Speicher, in dem alle Anwendungsdaten gesammelt werden. Obwohl einige Variationen m\u00f6glich sind, handelt es sich hierbei um einen hochgradig abstrahierten Ansatz.<\/p>\n<p>Lassen Sie uns nun verstehen, warum der containerbasierte Ansatz mit Speicherung des Zustands in einer cloudorientierten Welt ein Antipattern ist.<\/p>\n<h4>Cloud-orientiertes Anwendungsdesign<\/h4>\n<p>\nTraditionell verwendeten Anwendungen Datenbanken f\u00fcr die strukturierte Speicherung von Informationen sowie lokale Festplatten oder verteilte Dateisysteme, in die alle unstrukturierten oder sogar halbstrukturierten Daten abgelegt wurden. Als die Menge an unstrukturierten Daten zunahm, erkannten die Entwickler, dass POSIX zu \u201egespr\u00e4chig\u201c war, erhebliche Kosten verursachte und letztendlich die Leistung der Anwendung bei echt gro\u00dfen Skalierungen beeintr\u00e4chtigte.<\/p>\n<p>Dies trug im Wesentlichen zur Schaffung eines neuen Standards f\u00fcr die Datenspeicherung bei, n\u00e4mlich cloudorientierter Speichersysteme, die \u00fcberwiegend auf REST-APIs basieren und die Anwendung von der l\u00e4stigen Wartung lokaler Datenspeicher befreien. In einem solchen Fall funktioniert die Anwendung faktisch im Modus ohne Speicherung des Zustands (da der Zustand im entfernten Speicher liegt). Moderne Anwendungen werden von Grund auf unter Ber\u00fccksichtigung dieses Faktors entwickelt. In der Regel basiert jede moderne Anwendung, die Daten irgendeiner Art verarbeitet (Protokolle, Metadaten, Blobs usw.), auf der cloudorientierten Paradigmen, bei der der Zustand in ein speziell daf\u00fcr vorgesehenes Softwaresystem verschoben wird. <\/p>\n<p><i><b>Der containerbasierte Ansatz mit Speicherung des Zustands zwingt dieses gesamte Paradigma, genau zu dem zur\u00fcckzukehren, von dem es urspr\u00fcnglich ausgegangen ist! <\/b><\/i><\/p>\n<p>Bei der Verwendung von POSIX-Schnittstellen zur Speicherung von Daten verh\u00e4lt sich die Anwendung genau so, als ob sie den Zustand speichert, wodurch sie von den wichtigsten Grunds\u00e4tzen des Cloud-orientierten Designs abweicht, n\u00e4mlich von der M\u00f6glichkeit, die Gr\u00f6\u00dfe der Arbeitsstr\u00f6me der Anwendung je nach eingehender Last zu variieren, zu einem neuen Knoten zu migrieren, sobald der aktuelle Knoten ausf\u00e4llt, und so weiter.<\/p>\n<p>Wenn wir diese Situation genauer betrachten, stellen wir fest, dass wir bei der Wahl des Datenspeichers immer wieder mit dem Dilemma \u201ePOSIX gegen REST API\u201c konfrontiert sind, wobei sich die Probleme von POSIX durch die verteilte Natur von Kubernetes-Umgebungen zus\u00e4tzlich versch\u00e4rfen. Insbesondere<\/p>\n<ul>\n<li><b>POSIX redselig<\/b>: Die Semantik von POSIX erfordert, dass jeder Operation Metadaten und Dateideskriptoren zugeordnet werden, die helfen, den Zustand der Operation aufrechtzuerhalten. Dies f\u00fchrt zu erheblichen Kosten, die keinerlei echten Wert haben. APIs f\u00fcr die Objektspeicherung, insbesondere das S3-API, haben diese Anforderungen abgeschafft, wodurch die Anwendung arbeiten und dann \u201evergessen\u201c kann, dass der Aufruf stattgefunden hat. Die Antwort des Speichersystems zeigt an, ob die Aktion erfolgreich war oder nicht. Im Falle eines Fehlers kann die Anwendung einen neuen Versuch durchf\u00fchren.<\/li>\n<li><b>Netzwerkeinschr\u00e4nkungen<\/b>: In einem verteilten System wird angenommen, dass es mehrere Anwendungen geben kann, die versuchen, Daten auf dasselbe angeh\u00e4ngte Medium zu schreiben. Daher konkurrieren die Anwendungen nicht nur um die Bandbreite, um Daten auf das Medium zu \u00fcbertragen, sondern auch das Speichersystem wird um diese Bandbreite konkurrieren, indem es Daten \u00fcber physische Laufwerke verteilt. Aufgrund der Redseligkeit von POSIX steigt die Anzahl der Netzwerkaufrufe um ein Vielfaches. Andererseits bietet das S3-API eine klare Trennung zwischen den Netzwerkaufrufen, die von dem Client an den Server gehen, und denen, die innerhalb des Servers stattfinden.<\/li>\n<li><b>Sicherheit<\/b>: Das POSIX-Sicherheitsmodell basiert auf der aktiven Teilnahme des Menschen: Administratoren konfigurieren spezifische Zugriffslevels f\u00fcr jeden Benutzer oder jede Gruppe. Dieses Paradigma ist schwer an die cloud-orientierte Welt anzupassen. Moderne Anwendungen h\u00e4ngen von Sicherheitsmodellen ab, die an APIs gebunden sind, wo Zugriffsrechte als eine Sammlung von Richtlinien definiert, Servicekonten zugewiesen und tempor\u00e4re Anmeldeinformationen bereitgestellt werden.<\/li>\n<li><b>Verwaltbarkeit<\/b>: Zustandsbehaftete Container bringen bestimmte Verwaltungskosten mit sich. Es geht um die Synchronisierung des parallelen Zugriffs auf Daten und die Gew\u00e4hrleistung der Datenkonsistenz; all dies erfordert eine sorgf\u00e4ltige Abw\u00e4gung, welche Zugriffsmuster f\u00fcr Daten verwendet werden sollten. Es ist notwendig, zus\u00e4tzliche Programme zu installieren, zu \u00fcberwachen und zu konfigurieren, ganz zu schweigen von dem zus\u00e4tzlichen Aufwand, der in die Entwicklung investiert werden muss.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Container-Speicher-Interface<\/h4>\n<p>\nW\u00e4hrend das Container Storage Interface (CSI) hervorragend zur Verbreitung der Kubernetes-Volume-Ebene beigetragen hat, indem es zum Teil an Drittanbieter von Speichersystemen \u00fcbergeben wurde, hat es auch unbeabsichtigt den Glauben verst\u00e4rkt, dass der zustandsbehaftete Containeransatz die empfohlene Methode zur Datenspeicherung in Kubernetes darstellt.<\/p>\n<p>CSI wurde als Standard zur Bereitstellung beliebiger Block- und Dateispeichersysteme f\u00fcr veraltete Anwendungen bei der Arbeit mit Kubernetes entwickelt. Und, wie in diesem Artikel gezeigt, ist die einzige Situation, in der der zustandsbehaftete Containeransatz (und CSI in seiner derzeitigen Form) sinnvoll ist, wenn die Anwendung selbst ein veraltetes System ist, dem es nicht m\u00f6glich ist, Unterst\u00fctzung f\u00fcr API-basierte Objektspeichersysteme hinzuzuf\u00fcgen.<\/p>\n<p>Es ist wichtig zu verstehen, dass die Verwendung von CSI in seiner aktuellen Form, das hei\u00dft das Einbinden von Volumes in modernen Anwendungen, mit denselben Problemen konfrontiert sein wird wie Systeme, in denen die Datenspeicherung im POSIX-Stil organisiert ist.<\/p>\n<h4>Ein qualitativ hochwertigerer Ansatz<\/h4>\n<p>\nIn diesem Fall ist es wichtig zu verstehen, dass die meisten Anwendungen im Grunde genommen nicht auf die Arbeit mit stateful oder stateless optimiert sind. Dieses Verhalten h\u00e4ngt von der allgemeinen Systemarchitektur und von den spezifischen Optionen ab, die w\u00e4hrend der Planung gew\u00e4hlt wurden. Lassen Sie uns ein wenig \u00fcber stateful Anwendungen sprechen.<\/p>\n<p>Im Prinzip k\u00f6nnen alle Anwendungsdaten in mehrere weitreichende Typen unterteilt werden:<\/p>\n<ul>\n<li>Protokolldaten<\/li>\n<li>Zeitstempeldaten<\/li>\n<li>Transaktionsdaten<\/li>\n<li>Metadaten<\/li>\n<li>Container-Images<\/li>\n<li>Blob-Daten (gro\u00dfe Bin\u00e4robjekte)<\/li>\n<\/ul>\n<p>\nAll diese Datentypen werden auf modernen Datenplattformen sehr gut unterst\u00fctzt, und es gibt mehrere cloud-orientierte Plattformen, die angepasst sind, um Daten in jedem dieser spezifischen Formate bereitzustellen. Zum Beispiel k\u00f6nnen Transaktionsdaten und Metadaten in einer modernen cloud-orientierten Datenbank wie CockroachDB, YugaByte usw. gespeichert werden. Container-Images oder Blob-Daten k\u00f6nnen in einem Docker-Registry, basierend auf MinIO, abgelegt werden. Zeitstempeldaten k\u00f6nnen in einer Zeitreihendatenbank wie InfluxDB usw. gespeichert werden. Lassen Sie uns hier nicht in die Einzelheiten jedes Datentyps und der entsprechenden Anwendungen vertiefen, aber die allgemeine Idee besteht darin, persistenten Datenspeicher auf lokales Disk-Mounting zu vermeiden.<\/p>\n<p><img decoding=\"async\" alt=\"Datenablage-Muster in Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDar\u00fcber hinaus erweist es sich h\u00e4ufig als effektiv, eine tempor\u00e4re Cache-Ebene bereitzustellen, die als eine Art tempor\u00e4res Dateispeicher f\u00fcr Anwendungen dient, wobei diese Ebene nicht als Quelle der Wahrheit betrachtet werden sollte.<\/p>\n<h4>Speicher f\u00fcr stateful Anwendungen<\/h4>\n<p>\nW\u00e4hrend es in den meisten F\u00e4llen n\u00fctzlich ist, Anwendungen stateless zu halten, sollten stateful Anwendungen, die auf die Datenspeicherung ausgelegt sind \u2013 wie Datenbanken, Objekt-Storage, Schl\u00fcssel-Wert-Stores \u2013 ihren Status bewahren. Lassen Sie uns untersuchen, warum diese Anwendungen auf Kubernetes bereitgestellt werden. Nehmen wir MinIO als Beispiel, aber \u00e4hnliche Prinzipien sind auch auf andere gro\u00dfe cloud-orientierte Datenspeichersysteme anwendbar.<\/p>\n<p>Cloud-orientierte Anwendungen werden mit dem Ziel entworfen, die Flexibilit\u00e4t von Containern maximal effizient zu nutzen. Das bedeutet, dass keine Annahmen \u00fcber die Umgebung getroffen werden, in der sie bereitgestellt werden. Zum Beispiel verwendet MinIO einen internen Mechanismus zur Redundanzkodierung (erasure coding), der dem System ausreichend Stabilit\u00e4t verleiht, sodass es auch bei einem Ausfall der H\u00e4lfte der Festplatten funktionsf\u00e4hig bleibt. Au\u00dferdem verwaltet MinIO die Integrit\u00e4t und Sicherheit der Daten, indem es eigenes Hashing und Verschl\u00fcsselung auf der Serverseite verwendet.<\/p>\n<p>F\u00fcr solche cloud-orientierten Anwendungen sind lokale persistente Volumes (PV) als Backup-Speicher am praktischsten. Ein lokales PV bietet die M\u00f6glichkeit, rohe Daten zu speichern, w\u00e4hrend die Anwendungen, die auf diesen PV arbeiten, selbst Informationen sammeln, die eine Skalierung der Daten erm\u00f6glichen und die wachsenden Datenanforderungen verwalten.<\/p>\n<p>Dieser Ansatz ist wesentlich einfacher und skalierbarer im Vergleich zu PVs auf Basis von CSI, die eigene Ebenen der Datenverwaltung und Redundanz in das System einf\u00fchren; das Problem ist, dass diese Ebenen in der Regel mit Anwendungen in Konflikt stehen, die nach dem Prinzip der Zustandsbewahrung entworfen wurden.<\/p>\n<h4>Der entschlossene Fortschritt in Richtung der Entkopplung von Daten und Berechnungen<\/h4>\n<p>\nIn diesem Artikel haben wir er\u00f6rtert, wie Anwendungen umgeschichtet werden, um ohne Zustandsbewahrung zu arbeiten, oder anders gesagt, wie die Datenspeicherung von den Berechnungen getrennt wird. Zum Schluss betrachten wir einige reale Beispiele f\u00fcr diesen Trend.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, die bekannte Plattform zur Datenanalyse, wurde traditionell mit Zustandsbewahrung und Deployment im HDFS-Dateisystem verwendet. Mit dem \u00dcbergang von Spark in die cloud-orientierte Welt wird diese Plattform zunehmend ohne Zustandsbewahrung mit `s3a` verwendet. Spark nutzt s3a, um den Zustand in andere Systeme zu \u00fcbertragen, w\u00e4hrend die Spark-Container vollst\u00e4ndig ohne Zustandsbewahrung arbeiten. Auch andere gro\u00dfe Unternehmen im Bereich der Big Data-Analyse, insbesondere <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> , wechseln ebenfalls zur Arbeit mit der Aufteilung von Datenspeicherung und Berechnungen.<\/p>\n<p>\u00c4hnliche Muster sind auch auf anderen gro\u00dfen Analyseplattformen wie Presto, Tensorflow f\u00fcr R und Jupyter zu beobachten. Durch das Exportieren von Daten in entfernte Cloud-Speichersysteme wird es viel einfacher, Ihre Anwendung zu verwalten und zu skalieren. Dar\u00fcber hinaus f\u00f6rdert dies die Portabilit\u00e4t der Anwendung in verschiedene Umgebungen.<br \/>\n<br \/>Quelle: <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.1.1 - 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\/de\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Datenhaltungsmuster in Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}