{"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\/es\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Patrones de almacenamiento de datos en 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=\"Patrones de almacenamiento de datos en Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n\u00a1Hola, Habr!<\/p>\n<p>Te recordamos que hemos lanzado otro libro extremadamente interesante y \u00fatil <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">sobre patrones de Kubernetes. Todo comenz\u00f3 con \"<\/a><\/noindex> sobre los patrones de Kubernetes. Todo comenz\u00f3 con \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">\" de Brendan Burns, y, de hecho, nuestro trabajo en este segmento<\/a><\/noindex>\" Brendan Burns, y, de hecho, nuestro trabajo en este segmento <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">. Hoy te ofrecemos leer un art\u00edculo del blog de MinIO, que resume las tendencias y especificidades de los patrones de almacenamiento de datos en Kubernetes.<\/a><\/noindex>Kubernetes ha cambiado fundamentalmente los patrones tradicionales de desarrollo y despliegue de aplicaciones. Ahora, un equipo puede tardar solo unos d\u00edas en desarrollar, probar y desplegar una aplicaci\u00f3n en diferentes entornos, todo dentro de cl\u00fasteres de Kubernetes. Este trabajo con tecnolog\u00edas de generaciones anteriores sol\u00eda llevar semanas, si no meses.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Esta aceleraci\u00f3n ha sido posible gracias a la abstracci\u00f3n que proporciona Kubernetes, es decir, gracias a que Kubernetes maneja las interacciones con los detalles de bajo nivel de m\u00e1quinas f\u00edsicas o virtuales, permitiendo a los usuarios declarar entre otros par\u00e1metros el procesador necesario, la cantidad de memoria requerida y el n\u00famero de instancias de contenedores. Dado que una enorme comunidad est\u00e1 involucrada en el soporte de Kubernetes y su uso sigue expandi\u00e9ndose, se sit\u00faa con gran ventaja como la plataforma l\u00edder en orquestaci\u00f3n de contenedores.<\/p>\n<p>A medida que aumenta el uso de Kubernetes, tambi\u00e9n crece la confusi\u00f3n sobre los patrones de almacenamiento de datos que se aplican en \u00e9l.<\/p>\n<p><i><b>Con la competencia general por una porci\u00f3n del mercado de Kubernetes (es decir, por almacenamiento de datos), cuando se habla de almacenamiento, la se\u00f1al se pierde en un fuerte ruido.<\/b><\/i>.<\/p>\n<p>Kubernetes encarna un modelo moderno de desarrollo, despliegue y gesti\u00f3n de aplicaciones. Este modelo moderno desacopla el almacenamiento de datos de los c\u00e1lculos. Para entender completamente este desacoplamiento en el contexto de Kubernetes, tambi\u00e9n es necesario comprender qu\u00e9 son las aplicaciones con y sin estado, y c\u00f3mo se relaciona esto con el almacenamiento de datos. Aqu\u00ed es donde el enfoque API REST utilizado por S3 tiene ventajas claras sobre el enfoque POSIX\/CSI caracter\u00edstico de otras soluciones.<br \/>\nKubernetes encarna un modelo moderno de desarrollo y despliegue de aplicaciones, as\u00ed como de su gesti\u00f3n. Este modelo moderno desacopla el almacenamiento de datos de la computaci\u00f3n. Para comprender completamente este desacoplamiento en el contexto de Kubernetes, tambi\u00e9n es necesario entender qu\u00e9 son las aplicaciones con y sin estado, as\u00ed como c\u00f3mo se combina esto con el almacenamiento de datos. Aqu\u00ed es donde el enfoque de REST API utilizado por S3 tiene claras ventajas en comparaci\u00f3n con el enfoque POSIX\/CSI, t\u00edpico de otras soluciones.<\/p>\n<p>En este art\u00edculo hablaremos sobre los patrones de almacenamiento de datos en Kubernetes y abordaremos por separado la discusi\u00f3n sobre las aplicaciones sin estado y con estado, para entender completamente cu\u00e1l es la diferencia entre ellas y por qu\u00e9 es importante. A continuaci\u00f3n, se examinar\u00e1n las aplicaciones y los patrones de almacenamiento de datos utilizados en ellas a la luz de las mejores pr\u00e1cticas para trabajar con contenedores y Kubernetes.<\/p>\n<h4>Contenedores sin estado<\/h4>\n<p>\nLos contenedores son por naturaleza livianos y ef\u00edmeros. Se pueden detener, eliminar o desplegar en otro nodo sin dificultad; todo esto lleva solo unos segundos. En un gran sistema de orquestaci\u00f3n de contenedores, estas operaciones suceden constantemente, y los usuarios ni siquiera notan esos cambios. Sin embargo, los movimientos son posibles solo si el contenedor no tiene ninguna dependencia del nodo en el que se encuentra. A estos contenedores se les dice que funcionan <i>sin estado<\/i>.<\/p>\n<h4>Contenedores con estado<\/h4>\n<p>\nSi un contenedor almacena datos en dispositivos conectados localmente (o en un dispositivo de bloques), entonces el almacenamiento de datos en el que se encuentra tendr\u00e1 que ser trasladado a un nuevo nodo junto con el propio contenedor en caso de fallo. Esto es importante, ya que de lo contrario, la aplicaci\u00f3n que se ejecuta en el contenedor no podr\u00e1 funcionar correctamente, ya que necesita acceder a los datos almacenados en los dispositivos locales. A estos contenedores se les dice que funcionan <i>con estado<\/i>.<\/p>\n<p>Desde un punto de vista puramente t\u00e9cnico, los contenedores con estado tambi\u00e9n pueden trasladarse a otros nodos. Esto generalmente se logra mediante sistemas de archivos distribuidos o almacenes de datos en red de bloques conectados a todos los nodos donde funcionan los contenedores. De este modo, los contenedores acceden a vol\u00famenes para el almacenamiento persistente de datos, y la informaci\u00f3n se almacena en discos distribuidos por toda la red. Llamar\u00e9 a este m\u00e9todo el<i>enfoque de contenedor con estado<\/i>, y en el resto del art\u00edculo lo llamar\u00e9 as\u00ed por uniformidad.<\/p>\n<p><img decoding=\"async\" alt=\"Patrones de almacenamiento de datos en Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn un enfoque t\u00edpico de contenedor con estado, todos los pods de aplicaciones se adjuntan a un sistema de archivos distribuido, formando una especie de almacenamiento compartido donde residen todos los datos de las aplicaciones. Aunque pueden existir algunas variaciones, este es un enfoque de alto nivel.<\/p>\n<p>Ahora, examinemos por qu\u00e9 el enfoque de contenedor con estado en un mundo orientado a la nube es un antipatr\u00f3n.<\/p>\n<h4>Dise\u00f1o de aplicaciones orientado a la nube<\/h4>\n<p>\nTradicionalmente, las aplicaciones utilizaban bases de datos para el almacenamiento estructurado de informaci\u00f3n y discos locales o sistemas de archivos distribuidos donde se almacenaban todos los datos no estructurados o incluso semi-estructurados. A medida que aumentaba el volumen de datos no estructurados, los desarrolladores se dieron cuenta de que POSIX era demasiado \"charlat\u00e1n\", asociado con costos significativos y, en \u00faltima instancia, perjudicaba el rendimiento de la aplicaci\u00f3n al escalar realmente a gran escala.<\/p>\n<p>Esto, en gran medida, contribuy\u00f3 a la aparici\u00f3n de un nuevo est\u00e1ndar de almacenamiento de datos, es decir, los almacenes orientados a la nube que operan principalmente sobre la base de REST API y liberan a la aplicaci\u00f3n del oneroso mantenimiento de un almacenamiento de datos local. En este caso, la aplicaci\u00f3n efectivamente opera en modo sin estado (ya que el estado se almacena en un almacenamiento remoto). Las aplicaciones modernas se construyen desde cero teniendo en cuenta este factor. Por lo general, cualquier aplicaci\u00f3n moderna que maneje alg\u00fan tipo de datos (registros, metadatos, blobs, etc.) se construye bajo la paradigma orientada a la nube, donde el estado se transfiere a un sistema de software espec\u00edficamente designado para su almacenamiento. <\/p>\n<p><i><b>El enfoque de contenedor con estado obliga a toda esta paradigma a retroceder exactamente a donde comenz\u00f3. <\/b><\/i><\/p>\n<p>Al utilizar interfaces POSIX para el almacenamiento de datos, las aplicaciones funcionan de la misma manera que si estuvieran guardando estado, y por ello se desv\u00edan de los postulados m\u00e1s importantes del dise\u00f1o orientado a la nube, es decir, de la capacidad de variar los tama\u00f1os de los flujos de trabajo de la aplicaci\u00f3n seg\u00fan la carga entrante, de trasladarse a un nuevo nodo tan pronto como el nodo actual falle, etc.<\/p>\n<p>Al observar esta situaci\u00f3n m\u00e1s de cerca, descubrimos que al elegir un almacenamiento de datos nos encontramos una y otra vez con el dilema \"POSIX vs REST API\", PERO con un agravamiento adicional de los problemas de POSIX debido a la naturaleza distribuida de los entornos de Kubernetes. En particular,<\/p>\n<ul>\n<li><b>POSIX es verboso<\/b>: la sem\u00e1ntica de POSIX requiere asociar metadatos y descriptores de archivos con cada operaci\u00f3n, lo que ayuda a mantener el estado de la operaci\u00f3n. Esto conduce a costos significativos que no tienen un valor real. Las API para el almacenamiento de objetos, en particular la API de S3, han eliminado estos requisitos, permitiendo que la aplicaci\u00f3n funcione y luego \"olvide\" la llamada. La respuesta del sistema de almacenamiento indica si la acci\u00f3n se llev\u00f3 a cabo con \u00e9xito o no. En caso de falla, la aplicaci\u00f3n puede intentar de nuevo.<\/li>\n<li><b>Limitaciones de red<\/b>: En un sistema distribuido se da por hecho que puede haber m\u00faltiples aplicaciones intentando escribir datos en un mismo medio adjunto. Por lo tanto, no solo las aplicaciones competir\u00e1n entre s\u00ed por el ancho de banda (para enviar datos al medio), sino que el propio sistema de almacenamiento competir\u00e1 por este ancho de banda, distribuyendo datos a trav\u00e9s de discos f\u00edsicos. Debido a la verbosidad de POSIX, el n\u00famero de llamadas de red aumenta varias veces. Por otro lado, la API de S3 proporciona una clara distinci\u00f3n entre las llamadas de red que van del cliente al servidor y las que ocurren dentro del servidor.<\/li>\n<li><b>Seguridad<\/b>: El modelo de seguridad POSIX est\u00e1 dise\u00f1ado para la participaci\u00f3n activa del ser humano: los administradores configuran niveles de acceso espec\u00edficos para cada usuario o grupo. Esta paradigma es dif\u00edcil de adaptar al mundo orientado a la nube. Las aplicaciones modernas dependen de modelos de seguridad ligados a API, donde los derechos de acceso se determinan como un conjunto de pol\u00edticas, se asignan cuentas de servicio, credenciales temporales, etc.<\/li>\n<li><b>Gestionabilidad<\/b>: Los contenedores con estado conllevan ciertos costos relacionados con la gesti\u00f3n. Se refiere a la sincronizaci\u00f3n del acceso paralelo a los datos, a garantizar la coherencia de los datos, todo esto requiere evaluar cuidadosamente qu\u00e9 patrones de acceso a los datos utilizar. Es necesario instalar, controlar y configurar programas adicionales, sin mencionar los esfuerzos adicionales invertidos en el desarrollo.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Interfaz de almacenamiento de contenedores de datos<\/h4>\n<p>\nSi bien la interfaz de almacenamiento de contenedores (CSI) ha ayudado enormemente con la distribuci\u00f3n del nivel de vol\u00famenes de Kubernetes, transfiriendo parcialmente este nivel a proveedores externos de almacenamiento, tambi\u00e9n ha contribuido accidentalmente a la creencia de que el enfoque de contenedores con estado es el m\u00e9todo recomendado para el almacenamiento de datos en Kubernetes.<\/p>\n<p>CSI fue dise\u00f1ado como un est\u00e1ndar para proporcionar sistemas de almacenamiento de bloques y archivos arbitrarios a aplicaciones heredadas al trabajar con Kubernetes. Y, como se demostr\u00f3 en este art\u00edculo, la \u00fanica situaci\u00f3n en la que el enfoque de contenedores con estado (y CSI en su forma actual) es razonable es cuando la propia aplicaci\u00f3n es un sistema heredado en el que no es posible agregar soporte para la API de almacenamiento de objetos.<\/p>\n<p>Es importante entender que, al utilizar CSI en su forma actual, es decir, montando vol\u00famenes al trabajar con aplicaciones modernas, nos enfrentaremos a problemas similares a los que surgieron en los sistemas donde el almacenamiento de datos estaba organizado al estilo POSIX.<\/p>\n<h4>Enfoque de mayor calidad<\/h4>\n<p>\nEn este caso, es importante entender que la mayor\u00eda de las aplicaciones no est\u00e1n dise\u00f1adas esencialmente para funcionar con o sin estado. Este comportamiento depende de la arquitectura general del sistema y de las espec\u00edficas elecciones realizadas durante el dise\u00f1o. Hablemos un poco sobre las aplicaciones que mantienen estado.<\/p>\n<p>En principio, todos los datos de las aplicaciones se pueden clasificar en varios tipos amplios:<\/p>\n<ul>\n<li>Datos de registros<\/li>\n<li>Datos de marcas de tiempo<\/li>\n<li>Datos de transacciones<\/li>\n<li>Metadatos<\/li>\n<li>Im\u00e1genes de contenedores<\/li>\n<li>Datos de blobs (objetos binarios grandes)<\/li>\n<\/ul>\n<p>\nTodos estos tipos de datos son muy bien soportados en las plataformas modernas de almacenamiento de datos, y existen varias plataformas orientadas a la nube dise\u00f1adas para proporcionar datos en cada uno de estos formatos espec\u00edficos. Por ejemplo, los datos de transacciones y metadatos pueden estar en una base de datos moderna orientada a la nube, como CockroachDB, YugaByte, etc. Las im\u00e1genes de contenedores o los datos de blobs pueden almacenarse en un registro de docker basado en MinIO. Los datos de marcas de tiempo pueden almacenarse en una base de datos de series temporales, como InfluxDB, etc. No entraremos aqu\u00ed en los detalles de cada tipo de dato y sus respectivas aplicaciones, pero la idea general es evitar el almacenamiento persistente de datos basado en el montaje local de discos.<\/p>\n<p><img decoding=\"async\" alt=\"Patrones de almacenamiento de datos en Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAdem\u00e1s, a menudo resulta efectivo proporcionar un nivel de cach\u00e9 temporal que sirva a las aplicaciones como un almacenamiento de archivos temporales, pero las aplicaciones no deben depender de este nivel como fuente de verdad.<\/p>\n<h4>Almacenamiento para aplicaciones con estado<\/h4>\n<p>\nMientras que en la mayor\u00eda de los casos es \u00fatil mantener las aplicaciones sin estado, aquellas aplicaciones que est\u00e1n dise\u00f1adas para almacenar datos, como bases de datos, almacenamiento de objetos, y almacenes de clave-valor, deben mantener estado. Vamos a ver por qu\u00e9 estas aplicaciones se implementan en Kubernetes. Tomemos como ejemplo MinIO, pero principios similares se aplican a cualquier otro sistema de almacenamiento en la nube a gran escala.<\/p>\n<p>Las aplicaciones orientadas a la nube est\u00e1n dise\u00f1adas para aprovechar al m\u00e1ximo la flexibilidad inherente a los contenedores. Esto significa que no se hacen suposiciones sobre el entorno en el que se desplegar\u00e1n. Por ejemplo, MinIO utiliza un mecanismo interno de codificaci\u00f3n redundante (erasure coding) que proporciona a la sistema una resistencia suficiente para seguir operando incluso si fallan la mitad de los discos. Adem\u00e1s, MinIO gestiona la integridad y la seguridad de los datos utilizando su propia hash y encriptaci\u00f3n en el lado del servidor.<\/p>\n<p>Para este tipo de aplicaciones orientadas a la nube, los vol\u00famenes persistentes locales (PV) son la opci\u00f3n m\u00e1s conveniente como almacenamiento de respaldo. Un PV local ofrece la capacidad de almacenar datos sin procesar, mientras que las aplicaciones que operan sobre estos PV recopilan informaci\u00f3n que permite escalar los datos y gestionar las crecientes demandas sobre ellos.<\/p>\n<p>Este enfoque es mucho m\u00e1s simple y escala significativamente mejor en comparaci\u00f3n con los PV basados en CSI, que introducen sus propios niveles de gesti\u00f3n de datos y redundancia en el sistema; la cuesti\u00f3n es que estos niveles suelen entrar en conflicto con aplicaciones dise\u00f1adas para operar sin estado.<\/p>\n<h4>Un movimiento seguro hacia la separaci\u00f3n de datos y c\u00e1lculos<\/h4>\n<p>\nEn este art\u00edculo hemos discutido c\u00f3mo las aplicaciones se est\u00e1n reorientando para operar sin estado, o dicho de otro modo, el almacenamiento de datos se separa de los c\u00e1lculos realizados sobre ellos. Para concluir, veamos algunos ejemplos reales de esta tendencia.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, una famosa plataforma para el an\u00e1lisis de datos, tradicionalmente se utilizaba con estado y desplegada en el sistema de archivos HDFS. Sin embargo, a medida que Spark se traslada al mundo orientado a la nube, esta plataforma se est\u00e1 utilizando cada vez m\u00e1s sin estado utilizando `s3a`. Spark utiliza s3a para transferir el estado a otros sistemas, mientras que los contenedores de Spark funcionan completamente sin estado. Otros grandes actores empresariales en el \u00e1mbito de an\u00e1lisis de grandes datos, en particular, <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> tambi\u00e9n est\u00e1n adoptando la separaci\u00f3n de almacenamiento de datos y c\u00e1lculos sobre ellos.<\/p>\n<p>Patrones similares tambi\u00e9n se observan en otras grandes plataformas anal\u00edticas, como Presto, Tensorflow to R y Jupyter. Al exportar el estado a sistemas de almacenamiento en la nube, es mucho m\u00e1s f\u00e1cil gestionar su aplicaci\u00f3n y escalarla. Adem\u00e1s, esto facilita la portabilidad de la aplicaci\u00f3n en diversos entornos.<br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Patrones de almacenamiento de datos en Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}