Storage persistente para Kubernetes

7 minutos para ler

O armazenamento persistente para containers é uma necessidade comum entre os usuários corporativos, incluindo aqueles que executam cargas de trabalho na nuvem.

Os containers surgiram como uma forma de facilitar a implementação de diferentes aplicações. Eles podem ser implementados em uma variedade de sistemas de computador, tornando os dados muito mais portáteis do que antes.

Armazenamento dos dados costuma ser um dos grandes desafios com essa nova tecnologia, isso acontece porque as instâncias de containers são efêmeras – uma vez que um container individual é destruído, ele não deixa nada para trás. Um container pode ser destruído hoje, em algum lugar do seu sistema, e todos os dados do aplicativo criado que ele já armazenou serão perdidos. Por isso, as aplicações que requerem dados persistentes devem interagir com sistemas externos.

Para atender a essa necessidade, foram criadas plataformas de gerenciamento como o Kubernetes, que fornecem mecanismos para se conectar a volumes de armazenamento, sistemas de arquivos e bancos de dados externos.

Mas como aproveitar ao máximo os dados nos sistemas Kubernetes? E quais são os benefícios de um sistema como esse? Neste artigo, vamos explicar como funciona o armazenamento persistente para containers utilizando o Kubernetes.

Entenda como o Kubernetes funciona

É bem provável que você já tenha ouvido falar sobre Kubernetes. Essa tecnologia em evolução torna o desenvolvimento de aplicativos muito mais ágil e escalonável. 

O Kubernetes, ou “kube”, para aqueles que gostam de ser concisos, é uma plataforma open source que automatiza as operações dos containers Linux. Essa plataforma elimina grande parte dos processos manuais necessários para implantar e escalar as aplicações em containers. Em outras palavras, se você desejar agrupar em clusters os hosts executados nos containers Linux, o Kubernetes ajudará a gerenciar esses clusters com facilidade e eficiência.

Ao colocar um aplicativo em um container, nós o empacotamos com as suas bibliotecas, suas estruturas e arquivos de configuração para serem executados em qualquer sistema. Você pega o aplicativo que você fez, o coloca em uma “cápsula” e projeta essa cápsula para que possa ser executada em qualquer lugar.

Em ambientes com muitos containers em execução o Kubernetes ajuda você a gerenciar facilmente esses aplicativos de forma sustentável e eficiente, isso aumenta a velocidade e também melhora a eficiência de todo o processo.

Os recursos de armazenamento do Kubernetes permitem que os administradores atribuam “classes” de níveis de qualidade de serviço de armazenamento. Eles também podem adicionar políticas de backup, bem como políticas arbitrárias atribuídas por administradores de cluster.

Como funciona a plataforma de gerenciamento 

O Kubernetes se tornou a plataforma de gerenciamento de cluster preferida dos usuários. Pesquisa aponta que o uso do Kubernetes disparou significativamente, de 27% em 2018 para 48% em 2020. Ele está disponível por meio de ofertas como Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS) e Google Kubernetes Engine (GKE). 

No entanto, os usuários da nuvem ainda têm várias opções para provisionar nós de cluster usando instâncias de computação dedicadas como Amazon Elastic Compute Cloud ou instâncias de container sob demanda. Para isso, podem ser usados serviços como AWS Fargate, instâncias de container do Azure ou provisionamento automático de nó GKE.

Os administradores costumam usar volumes persistentes com um recurso do Kubernetes chamado StatefulSets. Essa API gerencia a implantação e o escalonamento de um conjunto de pods.

O plano de controle do Kubernetes oferece várias maneiras de se conectar a volumes persistentes e compartilhamentos de arquivos, incluindo aqueles criados por serviços de armazenamento em nuvem.

Antecedentes em CaaS e Kubernetes

As ofertas de containers como serviço (CaaS) se tornaram alternativas cada vez mais populares às instalações autogerenciadas do Kubernetes. Esses serviços de destacam pela sua conveniência, portabilidade, segurança, escalabilidade, desempenho e flexibilidade. A versatilidade dos containers hospedados em nuvem é um incentivo significativo para organizações que preferem serviços online à infraestrutura de container privada.

Como os produtos CaaS usam interfaces de armazenamento existentes e há conectores para discos e serviços de arquivo, as implantações de pod podem escolher entre compartilhamentos e volumes de armazenamento privados e autogerenciados ou recursos de nuvem.

Opções de armazenamento do Kubernetes

O armazenamento no Kubernetes pode parecer confuso às vezes, devido à sua flexibilidade e ao suporte para muitas plataformas de armazenamento. Na realidade, o armazenamento do Kubernetes é conceitualmente simples e se resume a conectar um pod – um ou mais containers que compartilham um namespace, volumes e outras configurações – a um volume externo. 

De acordo com o Kubernetes, um volume é apenas um diretório, possivelmente com alguns dados, que pode ser acessado pelos containers em um pod. O tipo de volume específico que um administrador usa determinará como esse diretório se formará, a mídia que o suporta e o seu conteúdo. 

Portanto, o volume de armazenamento se refere a qualquer recurso aplicado a todo o cluster, permitindo que os usuários acessem dados muito além da vida útil total do pod.

Os volumes podem ser:

* Um disco lógico e ponto de montagem;

* Serviços de armazenamento em bloco, como Amazon Elastic Block Store (EBS) ou Azure Disk;

* Um compartilhamento de arquivo de rede, de um storage array executando NFS, Ceph (CephFS);

* Serviços de arquivos em nuvem como Amazon Elastic File System (EFS) ou Google Cloud Filestore.

Os volumes do Kubernetes permitem que os usuários montem unidades de armazenamento para expandir a quantidade de dados que eles podem compartilhar entre os nós. Os volumes regulares ainda serão excluídos se e quando o pod que hospeda esse volume específico for encerrado. O volume permanente, no entanto, está hospedado de modo seguro em seu próprio pod.

Interface de Armazenamento de Container (CSI)

A flexibilidade para oferecer suporte a vários tipos de armazenamento vem da Interface de Armazenamento de Container (CSI), um padrão para expor armazenamento de bloco e arquivo para orquestradores de containers. 

Algumas das opções de driver CSI mais populares incluem:

* Driver Amazon EKS EBS CSI

* Driver Amazon EKS EFS CSI

* Driver CSI do Azure Disk

* Driver AKS CSI dos Arquivos do Azure

* Driver GCP GKE Persistent Disk CSI

* Conexões do GCP GKE Filestore

* GCP Cloud SQL Proxy para GKE

Os aplicativos executados em um container também podem se conectar a bancos de dados externos por meio de IP usando drivers de Conectividade de banco de dados abertos. Alguns serviços de nuvem, como o Azure, fornecem instruções para maximizar o desempenho da rede e minimizar a sobrecarga do banco de dados.

Da mesma forma, os pods do Kubernetes podem se conectar a um NAS privado usando drivers NFS CSI. Vários provedores de armazenamento corporativo oferecem CSI e software de armazenamento projetado para Kubernetes, como Dell EMC CSI Plugins, NetApp Trident e Pure Storage Portworx.

Devido a esses recursos, o Kubernetes se tornou a ferramenta de orquestração de containers mais indicada para as empresas armazenarem e usarem pods de dados. Com ela, você pode não apenas descrever a quantidade desejada de memória e capacidade de computação, mas também definir o sistema onde irá usá-la e armazená-la. Desse modo, os desenvolvedores podem usar a capacidade necessária, independentemente da máquina que operam e da infraestrutura do seu sistema. Para mais informações, entre em contato conosco.

Posts relacionados

Deixe um comentário