{"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\/pt\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Padr\u00f5es de armazenamento de dados no 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=\"Padr\u00f5es de armazenamento de dados no Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nOl\u00e1, Habr!<\/p>\n<p>Lembramos que publicamos mais um conte\u00fado extremamente interessante e \u00fatil <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">livro<\/a><\/noindex> sobre os padr\u00f5es do Kubernetes. Tudo come\u00e7ou com \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Padr\u00f5es<\/a><\/noindex>\" Brendan Burns, e, afinal, o trabalho nesse segmento para n\u00f3s <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">a todo vapor<\/a><\/noindex>. Hoje, n\u00f3s oferecemos a voc\u00ea a leitura de um artigo do blog MinIO, que resume as tend\u00eancias e a especificidade dos padr\u00f5es de armazenamento de dados no Kubernetes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>O Kubernetes transformou fundamentalmente os padr\u00f5es tradicionais de desenvolvimento e implanta\u00e7\u00e3o de aplica\u00e7\u00f5es. Agora, uma equipe pode levar apenas alguns dias para desenvolver, testar e implantar uma aplica\u00e7\u00e3o em diferentes ambientes, tudo dentro de clusters Kubernetes. Esse tipo de trabalho com tecnologias anteriores geralmente levava semanas, se n\u00e3o meses.<\/p>\n<p>Essa acelera\u00e7\u00e3o foi poss\u00edvel gra\u00e7as \u00e0 abstra\u00e7\u00e3o proporcionada pelo Kubernetes \u2014 ou seja, pelo fato de que o Kubernetes lida com os detalhes de baixo n\u00edvel das m\u00e1quinas f\u00edsicas ou virtuais, permitindo que os usu\u00e1rios especifiquem, entre outros par\u00e2metros, o processador necess\u00e1rio, o volume de mem\u00f3ria necess\u00e1rio e o n\u00famero de inst\u00e2ncias de cont\u00eaineres. Como o suporte ao Kubernetes \u00e9 mantido por uma vasta comunidade e a aplica\u00e7\u00e3o do Kubernetes continua a se expandir, ele lidera de longe entre todas as plataformas de orquestra\u00e7\u00e3o de cont\u00eaineres.<\/p>\n<p><i><b>\u00c0 medida que o uso do Kubernetes se expande, tamb\u00e9m cresce a confus\u00e3o sobre os padr\u00f5es de armazenamento de dados utilizados<\/b><\/i>.<\/p>\n<p>Com a intensa concorr\u00eancia pela fatia do mercado do Kubernetes (ou seja, pelo armazenamento de dados), quando se fala de armazenamento de dados, os sinais se perdem em um ru\u00eddo alto.<br \/>\nO Kubernetes incorpora um modelo moderno de desenvolvimento e implanta\u00e7\u00e3o de aplica\u00e7\u00f5es, bem como sua gest\u00e3o. Esse modelo moderno desacopla o armazenamento de dados dos c\u00e1lculos. Para compreender totalmente esse desacoplamento no contexto do Kubernetes, tamb\u00e9m \u00e9 necess\u00e1rio entender o que s\u00e3o aplicativos que mant\u00eam estado e aqueles que n\u00e3o mant\u00eam estado, e como isso se relaciona com o armazenamento de dados. \u00c9 aqui que a abordagem da API REST, aplicada ao S3, apresenta vantagens claras em compara\u00e7\u00e3o com a abordagem POSIX\/CSI, caracter\u00edstica de outras solu\u00e7\u00f5es.<\/p>\n<p>Neste artigo, vamos falar sobre padr\u00f5es de armazenamento de dados no Kubernetes e abordar a quest\u00e3o das aplica\u00e7\u00f5es que operam sem estado e com estado, para entender a diferen\u00e7a entre elas e sua import\u00e2ncia. No texto, ser\u00e3o discutidas as aplica\u00e7\u00f5es e os padr\u00f5es de armazenamento de dados utilizados \u00e0 luz das melhores pr\u00e1ticas em containers e Kubernetes.<\/p>\n<h4>Containers sem estado<\/h4>\n<p>\nContainers s\u00e3o, por natureza, leves e ef\u00eameros. Eles podem ser facilmente parados, removidos ou implantados em outro n\u00f3 \u2013 tudo isso leva apenas alguns segundos. Em um sistema de orquestra\u00e7\u00e3o de containers grande, essas opera\u00e7\u00f5es acontecem constantemente, e os usu\u00e1rios mal percebem essas mudan\u00e7as. No entanto, as movimenta\u00e7\u00f5es s\u00e3o poss\u00edveis apenas se o container n\u00e3o tiver depend\u00eancias do n\u00f3 em que est\u00e1 localizado. Containers assim s\u00e3o ditos como funcionando <i>sem estado<\/i>.<\/p>\n<h4>Containers com estado<\/h4>\n<p>\nSe um container armazena dados em dispositivos localmente conectados (ou em um dispositivo de bloco), o armazenamento de dados em que ele reside precisar\u00e1 ser movido para um novo n\u00f3 junto com o pr\u00f3prio container \u2013 em caso de falha. Isso \u00e9 importante, pois caso contr\u00e1rio, a aplica\u00e7\u00e3o em execu\u00e7\u00e3o no container n\u00e3o conseguir\u00e1 funcionar corretamente, pois precisa acessar os dados armazenados em m\u00eddias locais. Containers assim s\u00e3o ditos como funcionando <i>com estado<\/i>.<\/p>\n<p>Sob uma perspectiva t\u00e9cnica, containers com estado tamb\u00e9m podem ser movidos para outros n\u00f3s. Geralmente, isso \u00e9 garantido atrav\u00e9s de sistemas de arquivos distribu\u00eddos ou armazenamento em bloco de rede anexados a todos os n\u00f3s onde os containers est\u00e3o em execu\u00e7\u00e3o. Assim, os containers t\u00eam acesso a volumes para armazenamento persistente, e as informa\u00e7\u00f5es s\u00e3o mantidas em discos distribu\u00eddos pela rede. Eu chamarei esse m\u00e9todo de \"<i>abordagem de containers com estado<\/i>\", e na parte restante do artigo o chamarei assim por uma quest\u00e3o de uniformidade.<\/p>\n<p><img decoding=\"async\" alt=\"Padr\u00f5es de armazenamento de dados no Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa abordagem t\u00edpica de cont\u00eainer com estado, todos os pods de aplicativos est\u00e3o conectados a um \u00fanico sistema de arquivos distribu\u00eddo \u2013 formando uma esp\u00e9cie de armazenamento compartilhado, onde todos os dados dos aplicativos residem. Embora algumas varia\u00e7\u00f5es sejam poss\u00edveis, essa \u00e9 uma abordagem de alto n\u00edvel.<\/p>\n<p>Agora, vamos analisar por que a abordagem de cont\u00eainer com estado no mundo orientado para a nuvem \u00e9 um antipadr\u00e3o.<\/p>\n<h4>Projeto de aplicativos orientado para a nuvem<\/h4>\n<p>\nTradicionalmente, os aplicativos usavam bancos de dados para armazenamento estruturado de informa\u00e7\u00f5es e discos locais ou sistemas de arquivos distribu\u00eddos, onde todos os dados n\u00e3o estruturados ou at\u00e9 mesmo semi-estruturados eram armazenados. \u00c0 medida que o volume de dados n\u00e3o estruturados crescia, os desenvolvedores perceberam que o POSIX era excessivamente 'falante', implicava custos significativos e, no final das contas, dificultava o funcionamento do aplicativo ao escalar para realmente grandes dimens\u00f5es.<\/p>\n<p>Isso basicamente contribuiu para o surgimento de um novo padr\u00e3o de armazenamento de dados, ou seja, armazenamento orientado para a nuvem, que opera principalmente com base em REST API e isenta o aplicativo da manuten\u00e7\u00e3o onerosa de um armazenamento local de dados. Nesse caso, o aplicativo efetivamente entra em um modo de opera\u00e7\u00e3o sem estado (uma vez que o estado est\u00e1 em um armazenamento remoto). Aplicativos modernos s\u00e3o constru\u00eddos desde o in\u00edcio levando esse fator em considera\u00e7\u00e3o. Geralmente, qualquer aplicativo moderno que processa dados de algum tipo (logs, metadados, blobs, etc.) \u00e9 constru\u00eddo dentro da paradigma orientada para a nuvem, onde o estado \u00e9 transferido para um sistema de software especialmente designado para seu armazenamento. <\/p>\n<p><i><b>A abordagem de cont\u00eainer com estado faz com que toda essa paradigma retorne exatamente ao ponto de partida! <\/b><\/i><\/p>\n<p>Ao usar interfaces POSIX para o armazenamento de dados, os aplicativos operam de maneira semelhante a como se estivessem salvando estados, afastando-se assim dos postulados mais importantes do design orientado \u00e0 nuvem, ou seja, da capacidade de variar o tamanho das cargas de trabalho dos aplicativos de acordo com a carga de entrada, mudar para um novo n\u00f3 assim que o atual falhar, e assim por diante.<\/p>\n<p>Ao analisarmos essa situa\u00e7\u00e3o mais de perto, percebemos que, ao escolher um armazenamento de dados, enfrentamos repetidamente o dilema \"POSIX versus REST API\", MAS com a agravante dos problemas do POSIX, devido \u00e0 natureza distribu\u00edda dos ambientes Kubernetes. Em particular,<\/p>\n<ul>\n<li><b>O POSIX \u00e9 prolixo<\/b>: a sem\u00e2ntica POSIX exige a associa\u00e7\u00e3o de metadados e descritores de arquivos a cada opera\u00e7\u00e3o, que ajudam a manter o estado da opera\u00e7\u00e3o. Isso resulta em custos significativos, que n\u00e3o t\u00eam valor real. A API de armazenamento de objetos, em particular, a API S3, eliminou esses requisitos, permitindo que o aplicativo fosse executado e, em seguida, \"esquecesse\" a chamada. A resposta do sistema de armazenamento informa se a a\u00e7\u00e3o foi realizada com sucesso ou n\u00e3o. No caso de falha, o aplicativo pode tentar novamente.<\/li>\n<li><b>Restri\u00e7\u00f5es de rede<\/b>: Em um sistema distribu\u00eddo, presume-se que possa haver m\u00faltiplos aplicativos tentando gravar dados em um mesmo dispositivo acoplado. Portanto, n\u00e3o s\u00f3 os aplicativos competir\u00e3o entre si pela largura de banda (para enviar dados ao dispositivo), mas o pr\u00f3prio sistema de armazenamento competir\u00e1 por essa largura de banda, distribuindo dados entre os discos f\u00edsicos. Devido \u00e0 verbosidade do POSIX, o n\u00famero de chamadas de rede aumenta significativamente. Por outro lado, a API S3 fornece uma clara distin\u00e7\u00e3o entre as chamadas de rede que v\u00eam do cliente para o servidor e aquelas que ocorrem dentro do servidor.<\/li>\n<li><b>Seguran\u00e7a<\/b>: O Modelo de Seguran\u00e7a POSIX \u00e9 projetado para a participa\u00e7\u00e3o ativa dos usu\u00e1rios: os administradores configuram n\u00edveis de acesso espec\u00edficos para cada usu\u00e1rio ou grupo. Essa abordagem \u00e9 complicada para se adaptar ao mundo orientado \u00e0 nuvem. Aplica\u00e7\u00f5es modernas dependem de modelos de seguran\u00e7a vinculados \u00e0 API, onde os direitos de acesso s\u00e3o definidos como um conjunto de pol\u00edticas, com contas de servi\u00e7o e credenciais tempor\u00e1rias, entre outras.<\/li>\n<li><b>Gerenciabilidade<\/b>: Cont\u00eaineres com estado persistente trazem certos custos relacionados \u00e0 gest\u00e3o. Isso inclui a sincroniza\u00e7\u00e3o de acessos paralelos a dados e a garantia da consist\u00eancia dos dados, exigindo uma an\u00e1lise cuidadosa sobre quais padr\u00f5es de acesso usar. \u00c9 necess\u00e1rio instalar, monitorar e configurar programas adicionais, sem mencionar os esfor\u00e7os extra exigidos no desenvolvimento.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Interface de Armazenamento de Cont\u00eaineres<\/h4>\n<p>\nEmbora a Interface de Armazenamento de Cont\u00eaineres (CSI) tenha facilitado a dissemina\u00e7\u00e3o do n\u00edvel de volumes no Kubernetes, transferindo parte do controle para fornecedores terceiros de armazenamento, tamb\u00e9m, inadvertidamente, contribuiu para a cren\u00e7a de que a abordagem de cont\u00eaineres com estado persistente \u00e9 o m\u00e9todo recomendado de armazenamento de dados no Kubernetes.<\/p>\n<p>O CSI foi desenvolvido como um padr\u00e3o para fornecer sistemas de armazenamento de bloco e arquivo a aplica\u00e7\u00f5es legadas em intera\u00e7\u00e3o com Kubernetes. Como mostrado neste artigo, a \u00fanica situa\u00e7\u00e3o em que a abordagem de cont\u00eaineres com estado persistente (e o CSI em sua forma atual) \u00e9 vi\u00e1vel \u00e9 quando a pr\u00f3pria aplica\u00e7\u00e3o \u00e9 um sistema legado, no qual n\u00e3o \u00e9 poss\u00edvel adicionar suporte para API de armazenamento de objetos.<\/p>\n<p>\u00c9 importante entender que, ao usar o CSI em sua forma atual, ou seja, montando volumes ao trabalhar com aplica\u00e7\u00f5es modernas, enfrentaremos problemas similares aos que surgiram em sistemas onde o armazenamento de dados \u00e9 organizado no estilo POSIX.<\/p>\n<h4>Uma abordagem de maior qualidade<\/h4>\n<p>\nNeste caso, \u00e9 importante compreender que a maioria dos aplicativos n\u00e3o \u00e9 projetada, essencialmente, para funcionar com armazenamento de estado ou sem armazenamento de estado. Esse comportamento depende da arquitetura geral do sistema e das escolhas espec\u00edficas feitas durante o design. Vamos falar um pouco sobre aplicativos que mant\u00eam o estado.<\/p>\n<p>Em linhas gerais, todos os dados dos aplicativos podem ser classificados em v\u00e1rios tipos amplos:<\/p>\n<ul>\n<li>Dados de logs<\/li>\n<li>Dados de timestamps<\/li>\n<li>Dados de transa\u00e7\u00f5es<\/li>\n<li>Metadados<\/li>\n<li>Imagens de cont\u00eaineres<\/li>\n<li>Dados de blobs (objetos bin\u00e1rios grandes)<\/li>\n<\/ul>\n<p>\nTodos esses tipos de dados s\u00e3o muito bem suportados nas modernas plataformas de armazenamento de dados, e existem v\u00e1rias plataformas baseadas em nuvem adaptadas para fornecer dados em cada um desses formatos espec\u00edficos. Por exemplo, os dados de transa\u00e7\u00f5es e metadados podem estar em um banco de dados moderno baseado em nuvem, como CockroachDB, YugaByte, etc. As imagens de cont\u00eaineres ou os dados de blobs podem ser armazenados em um registro Docker baseado em MinIO. Os dados de timestamps podem ser armazenados em um banco de dados de s\u00e9ries temporais, como InfluxDB, etc. N\u00e3o entraremos aqui nos detalhes de cada tipo de dado e das respectivas aplica\u00e7\u00f5es, mas a ideia geral \u00e9 evitar o armazenamento persistente de dados baseado em montagem local de discos.<\/p>\n<p><img decoding=\"async\" alt=\"Padr\u00f5es de armazenamento de dados no Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAl\u00e9m disso, muitas vezes, \u00e9 eficaz fornecer um n\u00edvel de cache tempor\u00e1rio, servindo como um armaz\u00e9m de arquivos tempor\u00e1rios para os aplicativos, mas os aplicativos n\u00e3o devem depender desse n\u00edvel como fonte da verdade.<\/p>\n<h4>Armazenamento para aplicativos com estado<\/h4>\n<p>\nEmbora, na maioria dos casos, seja \u00fatil manter os aplicativos sem estado, aqueles projetados para armazenar dados \u2013 como bancos de dados, armazenamento de objetos, armazenamento de chaves-valor \u2013 devem manter o estado. Vamos analisar por que esses aplicativos s\u00e3o implantados no Kubernetes. Como exemplo, tomaremos o MinIO, mas princ\u00edpios semelhantes se aplicam a qualquer outro grande sistema de armazenamento de dados baseado em nuvem.<\/p>\n<p>Aplicativos orientados para a nuvem s\u00e3o projetados para aproveitar ao m\u00e1ximo a flexibilidade caracter\u00edstica dos cont\u00eaineres. Isso significa que n\u00e3o se fazem suposi\u00e7\u00f5es sobre o ambiente em que ser\u00e3o implantados. Por exemplo, o MinIO utiliza um mecanismo interno de codifica\u00e7\u00e3o de exclus\u00e3o, garantindo \u00e0 sistema robustez suficiente para permanecer funcional mesmo diante da falha de metade dos discos. Al\u00e9m disso, o MinIO gerencia a integridade e seguran\u00e7a dos dados, utilizando sua pr\u00f3pria t\u00e9cnica de hash e criptografia do lado do servidor.<\/p>\n<p>Para tais aplicativos orientados para a nuvem, os volumes persistentes locais (PV) s\u00e3o a op\u00e7\u00e3o mais conveniente para armazenamento de backup. O PV local permite o armazenamento de dados brutos, enquanto os aplicativos que operam sobre esses PV coletam as informa\u00e7\u00f5es necess\u00e1rias para escalar os dados e gerenciar as crescentes demandas de dados.<\/p>\n<p>Essa abordagem \u00e9 muito mais simples e escala significativamente melhor em compara\u00e7\u00e3o com PVs baseados em CSI, que introduzem seus pr\u00f3prios n\u00edveis de gerenciamento de dados e redund\u00e2ncia; o problema \u00e9 que esses n\u00edveis geralmente entram em conflito com aplicativos projetados sob o princ\u00edpio de manter o estado.<\/p>\n<h4>Um avan\u00e7o firme para destacar dados de c\u00e1lculos<\/h4>\n<p>\nNeste artigo, discutimos como os aplicativos est\u00e3o se reorientando para operar sem manter estado, ou seja, o armazenamento de dados \u00e9 separado dos c\u00e1lculos sobre eles. Para concluir, veremos alguns exemplos reais dessa tend\u00eancia.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, uma plataforma famosa de an\u00e1lise de dados, historicamente utilizada com manuten\u00e7\u00e3o de estado e implanta\u00e7\u00e3o em um sistema de arquivos HDFS. Contudo, \u00e0 medida que o Spark transita para um mundo orientado para a nuvem, essa plataforma est\u00e1 sendo cada vez mais utilizada sem manter estado, empregando o `s3a`. O Spark aplica o s3a para transmitir estado a outros sistemas, enquanto os pr\u00f3prios cont\u00eaineres do Spark funcionam integralmente sem manter estado. Outros grandes players empresariais no campo da an\u00e1lise de grandes dados, em 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> tamb\u00e9m est\u00e3o migrando para operar com a separa\u00e7\u00e3o entre armazenamento de dados e c\u00e1lculos.<\/p>\n<p>Padr\u00f5es semelhantes tamb\u00e9m podem ser observados em outras grandes plataformas de an\u00e1lise, como Presto, Tensorflow para R, Jupyter. Ao exportar o estado para sistemas de armazenamento em nuvem, a gest\u00e3o do seu aplicativo e sua escalabilidade tornam-se muito mais simples. Al\u00e9m disso, isso aumenta a portabilidade do aplicativo em diversos ambientes.<br \/>\n<br \/>Fonte: <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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Padr\u00f5es de Armazenamento de Dados no Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}