{"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\/pt\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-kubernetes","title":{"rendered":"Armazenamento de dados em um cluster Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A configura\u00e7\u00e3o do armazenamento de dados para aplica\u00e7\u00f5es executadas em um cluster Kubernetes pode ser feita de v\u00e1rias maneiras. Algumas delas est\u00e3o obsoletas, enquanto outras surgiram recentemente. Neste artigo, discutiremos tr\u00eas op\u00e7\u00f5es de conex\u00e3o de armazenamento, incluindo a mais recente \u2014 a conex\u00e3o via Container Storage Interface.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Armazenamento de dados em um cluster 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\">M\u00e9todo 1. Especificando PV no manifesto do pod<\/h2>\n<p><\/p>\n<p>Um manifesto t\u00edpico descrevendo um pod em um cluster Kubernetes: <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Armazenamento de dados em um cluster Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/1df1b236df758f4a4a18905d31413617.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>As partes do manifesto onde est\u00e1 descrito qual volume est\u00e1 sendo conectado e onde est\u00e3o destacadas em cores.<\/p>\n<p><\/p>\n<p>Na se\u00e7\u00e3o <strong>volumeMounts<\/strong> indicam os pontos de montagem (mountPath) \u2014 qual diret\u00f3rio dentro do cont\u00eainer receber\u00e1 o volume persistente, bem como o nome do volume.<\/p>\n<p><\/p>\n<p>Na se\u00e7\u00e3o <strong>x<\/strong> enumeram todos os volumes utilizados no pod. Especificam o nome de cada volume, bem como o tipo (neste caso: awsElasticBlockStore) e os par\u00e2metros de conex\u00e3o. Os par\u00e2metros espec\u00edficos listados no manifesto dependem do tipo de volume.<\/p>\n<p><\/p>\n<p>O mesmo volume pode ser montado simultaneamente em v\u00e1rios cont\u00eaineres do pod. Assim, diferentes processos do aplicativo podem acessar os mesmos dados. <\/p>\n<p><\/p>\n<p>Esse m\u00e9todo de conex\u00e3o foi desenvolvido no in\u00edcio, quando o Kubernetes estava apenas come\u00e7ando, e hoje ele est\u00e1 obsoleto.<\/p>\n<p><\/p>\n<p>Com seu uso, surgem v\u00e1rios problemas: <\/p>\n<p><\/p>\n<ol>\n<li>todos os volumes precisam ser criados manualmente, o Kubernetes n\u00e3o poder\u00e1 criar nada por conta pr\u00f3pria;<\/li>\n<li>os par\u00e2metros de acesso a cada um dos volumes s\u00e3o \u00fanicos e precisam ser especificados nos manifestos de todos os pods que utilizam o volume;<\/li>\n<li>para mudar o sistema de armazenamento (por exemplo, migrar da AWS para o Google Cloud), \u00e9 necess\u00e1rio alterar as configura\u00e7\u00f5es e o tipo dos volumes conectados em todos os manifestos.<\/li>\n<\/ol>\n<p><\/p>\n<p>Tudo isso \u00e9 muito inconveniente, por isso, na pr\u00e1tica, esse m\u00e9todo \u00e9 usado apenas para conectar alguns tipos especiais de volumes: configMap, secret, emptyDir, hostPath:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>configMap e secret \u2014 volumes de servi\u00e7o que permitem criar um volume no cont\u00eainer com arquivos dos manifestos do Kubernetes.<\/p>\n<p>\n<\/li>\n<li>\n<p>emptyDir \u2014 um volume tempor\u00e1rio, criado apenas durante a vida \u00fatil do pod. \u00c9 \u00fatil para testes ou armazenamento de dados tempor\u00e1rios. Quando o pod \u00e9 exclu\u00eddo, o volume do tipo emptyDir tamb\u00e9m \u00e9 removido e todos os dados s\u00e3o perdidos.<\/p>\n<p>\n<\/li>\n<li>\n<p>hostPath \u2014 permite montar qualquer diret\u00f3rio do disco local do servidor dentro do cont\u00eainer do aplicativo em que o aplicativo est\u00e1 sendo executado, incluindo \/etc\/kubernetes. Essa \u00e9 uma op\u00e7\u00e3o insegura, e por isso, geralmente, pol\u00edticas de seguran\u00e7a pro\u00edbem o uso de volumes desse tipo. Caso contr\u00e1rio, um aplicativo invasor pode montar dentro de seu cont\u00eainer o diret\u00f3rio HTC Kubernetes e roubar todos os certificados do cluster. Normalmente, volumes hostPath s\u00e3o permitidos apenas para aplicativos de sistema que s\u00e3o executados no namespace 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\">Sistemas de armazenamento de dados com os quais o Kubernetes trabalha por padr\u00e3o<\/a><\/noindex> est\u00e3o descritos na documenta\u00e7\u00e3o.<\/p>\n<p><\/p>\n<h2 id=\"sposob-2-podklyuchenie-k-podam-scpvcpv\">M\u00e9todo 2. Conex\u00e3o a pods SC\/PVC\/PV<\/h2>\n<p><\/p>\n<p>Uma alternativa para a conex\u00e3o \u00e9 o conceito de Storage class, PersistentVolumeClaim, PersistentVolume.<\/p>\n<p><\/p>\n<p><u>Storage class<\/u> armazenam os par\u00e2metros de conex\u00e3o ao sistema de armazenamento de dados.<\/p>\n<p><\/p>\n<p><u>PersistentVolumeClaim<\/u> descreve os requisitos para o volume que o aplicativo precisa.<br \/>\n<u>PersistentVolume<\/u> armazenam os par\u00e2metros de acesso e o status do volume.<\/p>\n<p><\/p>\n<p>A ess\u00eancia da ideia: no manifesto do pod, deve-se especificar um volume do tipo PersistentVolumeClaim e indicar o nome dessa entidade no par\u00e2metro claimName.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Armazenamento de dados em um cluster Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/08b0460be887d39801d1acb9ee1bbd2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>No manifesto do PersistentVolumeClaim, descrevem-se os requisitos para os dados necess\u00e1rios ao aplicativo, incluindo:<\/p>\n<p><\/p>\n<ul>\n<li>tamanho do disco; <\/li>\n<li>modo de acesso: ReadWriteOnce ou ReadWriteMany;<\/li>\n<li>refer\u00eancia ao Storage class \u2014 em qual sistema de armazenamento de dados queremos criar o volume.<\/li>\n<\/ul>\n<p><\/p>\n<p>No manifesto do Storage class, s\u00e3o armazenados o tipo e os par\u00e2metros de conex\u00e3o ao sistema de armazenamento de dados. Eles s\u00e3o necess\u00e1rios para o kubelet montar o volume em seu n\u00f3. <\/p>\n<p><\/p>\n<p>Nos manifestos do PersistentVolume, s\u00e3o especificados o Storage class e os par\u00e2metros de acesso a um volume espec\u00edfico (ID do volume, caminho etc.).<\/p>\n<p><\/p>\n<p>Ao criar um PVC, o Kubernetes verifica qual tamanho de volume e de qual Storage class ser\u00e1 necess\u00e1rio e seleciona um PersistentVolume dispon\u00edvel.<\/p>\n<p><\/p>\n<p>Se n\u00e3o houver PVs dispon\u00edveis, o Kubernetes pode iniciar um programa especial \u2014 Provisioner (seu nome \u00e9 especificado no Storage class). Este programa se conecta ao armazenamento e cria um volume do tamanho necess\u00e1rio, obt\u00e9m o identificador e cria no cluster Kubernetes um manifesto PersistentVolume que se vincula ao PersistentVolumeClaim.<\/p>\n<p><\/p>\n<p>Essa variedade de abstra\u00e7\u00f5es permite remover informa\u00e7\u00f5es sobre qual armazenamento a aplica\u00e7\u00e3o est\u00e1 usando do n\u00edvel do manifesto da aplica\u00e7\u00e3o para o n\u00edvel de administra\u00e7\u00e3o. <\/p>\n<p><\/p>\n<p>Todos os par\u00e2metros de conex\u00e3o com o sistema de armazenamento de dados est\u00e3o na classe Storage, da qual os administradores do cluster s\u00e3o respons\u00e1veis. Tudo o que \u00e9 necess\u00e1rio ao migrar da AWS para o Google Cloud \u00e9 alterar o nome da classe Storage no PVC nos manifests da aplica\u00e7\u00e3o. Os Volumes Persistentes para armazenamento de dados ser\u00e3o criados automaticamente no cluster, usando o programa Provisioner.<\/p>\n<p><\/p>\n<h2 id=\"sposob-3-container-storage-interface\">M\u00e9todo 3. Interface de Armazenamento de Container<\/h2>\n<p><\/p>\n<p>Todo o c\u00f3digo que interage com diferentes sistemas de armazenamento de dados \u00e9 parte do n\u00facleo do Kubernetes. O lan\u00e7amento de corre\u00e7\u00f5es de bugs ou novas funcionalidades est\u00e1 vinculado a novos lan\u00e7amentos, sendo necess\u00e1rio alterar o c\u00f3digo para todas as vers\u00f5es suportadas do Kubernetes. Tudo isso \u00e9 dif\u00edcil de manter e de adicionar novas funcionalidades.<\/p>\n<p><\/p>\n<p>Para resolver o problema, desenvolvedores do Cloud Foundry, Kubernetes, Mesos e Docker criaram a Interface de Armazenamento de Container (CSI) \u2014 uma interface unificada simples que descreve a intera\u00e7\u00e3o entre o sistema de gerenciamento de containers e o driver espec\u00edfico (CSI Driver) que trabalha com um determinado SAN. Todo c\u00f3digo de intera\u00e7\u00e3o com o SAN foi removido do n\u00facleo do Kubernetes para um sistema separado.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2019\/01\/15\/container-storage-interface-ga\/\">Documenta\u00e7\u00e3o da Interface de Armazenamento de Container<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Normalmente, o CSI Driver consiste em dois componentes: Node Plugin e Controller Plugin.<\/p>\n<p><\/p>\n<p>O Node Plugin \u00e9 executado em cada n\u00f3 e \u00e9 respons\u00e1vel por montar volumes e realizar opera\u00e7\u00f5es sobre eles. O Controller Plugin interage com o SAN: cria ou exclui volumes, atribui permiss\u00f5es de acesso, etc.<\/p>\n<p><\/p>\n<p>Atualmente, antigos drivers ainda permanecem no n\u00facleo do Kubernetes, mas j\u00e1 n\u00e3o s\u00e3o recomendados para uso e todos s\u00e3o aconselhados a instalar o CSI Driver especificamente para o sistema com o qual ir\u00e3o trabalhar.<\/p>\n<p><\/p>\n<p>Essa novidade pode assustar aqueles que j\u00e1 est\u00e3o acostumados a configurar o armazenamento de dados atrav\u00e9s da classe Storage, mas na verdade, n\u00e3o aconteceu nada de alarmante. Para os desenvolvedores, nada muda \u2014 eles continuar\u00e3o a trabalhar apenas com o nome da classe Storage. Para os administradores, houve a adi\u00e7\u00e3o da instala\u00e7\u00e3o do helm chart e a estrutura das configura\u00e7\u00f5es mudou. Se antes as configura\u00e7\u00f5es eram inseridas diretamente na classe Storage, agora elas precisam ser definidas primeiro no helm chart e depois na classe Storage. Se analisarmos, nada de alarmante aconteceu.<\/p>\n<p><\/p>\n<p>Vamos considerar, por exemplo, quais vantagens podem ser obtidas ao migrar para a conex\u00e3o do SAN Ceph usando o driver CSI.<\/p>\n<p><\/p>\n<p>Ao trabalhar com Ceph, o plugin CSI oferece mais op\u00e7\u00f5es para trabalhar com o SAN do que os drivers embutidos.<\/p>\n<p><\/p>\n<ol>\n<li><strong>Cria\u00e7\u00e3o din\u00e2mica de discos.<\/strong> Geralmente, discos RBD s\u00e3o usados apenas em modo RWO, enquanto o CSI para Ceph permite que sejam usados em modo RWX. V\u00e1rios pods em diferentes n\u00f3s podem montar o mesmo disco RDB em seus n\u00f3s e trabalhar com ele simultaneamente. Para ser justo, nem tudo \u00e9 t\u00e3o perfeito \u2014 este disco pode ser conectado apenas como um dispositivo de bloco, ou seja, ser\u00e1 necess\u00e1rio adaptar o aplicativo para trabalhar com ele em modo de acesso m\u00faltiplo.<\/li>\n<li><strong>Cria\u00e7\u00e3o de snapshots.<\/strong> No cluster Kubernetes, \u00e9 poss\u00edvel criar um manifesto com a solicita\u00e7\u00e3o de criar um snapshot. O plugin CSI o ver\u00e1 e far\u00e1 o snapshot do disco. Com isso, ser\u00e1 poss\u00edvel fazer um backup ou uma c\u00f3pia do PersistentVolume. <\/li>\n<li><strong>Aumento do tamanho do disco<\/strong> em armazenamento e PersistentVolume no cluster Kubernetes.<\/li>\n<li><strong>Quotas.<\/strong> Os drivers CephFS embutidos no Kubernetes n\u00e3o suportam quotas, mas os novos plugins CSI com o novo Ceph Nautilus conseguem habilitar quotas nos volumes CephFS.<\/li>\n<li><strong>M\u00e9tricas.<\/strong> O plugin CSI pode fornecer ao Prometheus v\u00e1rias m\u00e9tricas sobre quais volumes est\u00e3o conectados, quais intera\u00e7\u00f5es est\u00e3o ocorrendo, etc.<\/li>\n<li><strong>Topologia ciente.<\/strong> Permite especificar nos manifestos como o cluster est\u00e1 geograficamente distribu\u00eddo, evitando conex\u00f5es com pods localizados em Londres para sistemas de armazenamento de dados situados em Amsterd\u00e3. <\/li>\n<\/ol>\n<p><\/p>\n<p>Para saber como conectar o Ceph ao cluster Kubernetes atrav\u00e9s do CSI, veja <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/DteNn-1f-WI\">na parte pr\u00e1tica da aula da escola noturna Slyurm<\/a><\/noindex>. Voc\u00ea tamb\u00e9m pode se inscrever em <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/Ssx7pg\">um curso em v\u00eddeo sobre Ceph<\/a><\/noindex>, que ser\u00e1 iniciado em 15 de outubro. <\/p>\n<p><\/p>\n<p><em>Autor do artigo: Sergey Bondarev, arquiteto praticante da Southbridge, Administrador Certificado Kubernetes, um dos desenvolvedores do kubespray.<\/em><\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Um pouco de Post Scriptum n\u00e3o como propaganda, mas por utilidade...<\/b><\/p>\n<p>P.S. Sergey Bondarev conduz duas intensivas: a atualizada <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/1WIJFg\">Base Kubernetes<\/a><\/noindex> de 28 a 30 de setembro e a avan\u00e7ada <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/Wbqz5g\">Mega Kubernetes<\/a><\/noindex> de 14 a 16 de outubro.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Armazenamento de dados em um cluster Kubernetes\" src=\"\/wp-content\/uploads\/2020\/09\/69752ee9f7c9caf887011564139baf16.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-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\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\/pt\/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\udd47Armazenamento de dados no cluster Kubernetes | ProHoster","description":"\u00c9 poss\u00edvel configurar o armazenamento de dados de aplicativos executados no cluster Kubernetes de v\u00e1rias maneiras. Algumas delas j\u00e1 est\u00e3o obsoletas, enquanto outras surgiram recentemente.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/hranenie-dannyh-v-klastere-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\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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/94388","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=94388"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/94388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/94389"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=94388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=94388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=94388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}