Partilhar via


Opções de armazenamento para um cluster Kubernetes

Este artigo compara os recursos de armazenamento do Amazon Elastic Kubernetes Service (Amazon EKS) e do Azure Kubernetes Service (AKS) e descreve as opções para armazenar dados de carga de trabalho no AKS.

Nota

Este artigo faz parte de uma série de artigos que ajudam os profissionais familiarizados com o Amazon EKS a entender o Serviço Kubernetes do Azure (AKS).

Opções de armazenamento do Amazon EKS

No Amazon EKS, após o Kubernetes versão 1.11, o cluster tem um StorageClass padrão chamado gp2 para declarações de volume persistentes. Os administradores podem adicionar drivers para definir mais classes de armazenamento, como:

  • Driver CSI do Amazon EBS como complemento do Amazon EKS
  • Complemento autogerenciado CSI do Amazon EBS
  • Driver CSI do Amazon EFS
  • Driver CSI do Amazon FSx for Lustre
  • Amazon FSx para driver CSI ONTAP da NetApp

Ao adicionar drivers e classes de armazenamento, você pode usar serviços de armazenamento, como:

  • Amazon Elastic Block Store (Amazon EBS), uma solução de armazenamento em nível de bloco usada com instâncias do Amazon Elastic Compute Cloud (EC2) para armazenar dados persistentes. Este serviço é semelhante ao Armazenamento em Disco do Azure, que tem várias SKUs como SSD Padrão, SSD Premium ou Armazenamento em Ultra Disco, dependendo do desempenho necessário.

  • Amazon Elastic File System (Amazon EFS) , que fornece acesso ao sistema de arquivos de rede a sistemas de arquivos externos que podem ser compartilhados entre instâncias. A solução equivalente do Azure é o Azure Files e o Azure Files Premium com acesso ao Server Message Block (SMB) 3.0 e NFS.

  • Lustre, um sistema de arquivos de código aberto comumente usado em computação de alto desempenho (HPC). No Azure, você pode usar o Armazenamento Ultra em Disco ou o Cache HPC do Azure para cargas de trabalho em que a velocidade é importante, como aprendizado de máquina e HPC.

  • NetApp ONTAP, armazenamento compartilhado ONTAP totalmente gerenciado na Amazon Web Services (AWS). Os Arquivos NetApp do Azure são um serviço de armazenamento de arquivos semelhante no Azure criado com base na tecnologia NetApp.

Opções de armazenamento AKS

Cada cluster AKS inclui as seguintes classes de armazenamento pré-criadas por padrão:

  • A classe de armazenamento padrão, managed-csi, usa SSD padrão de armazenamento em disco. A SSD padrão é uma opção de armazenamento económica otimizada para cargas de trabalho que necessitam de um desempenho consistente em IOPS (operações de entrada-saída por segundo) mais baixas.
  • A managed-csi-premium classe usa discos gerenciados SSD Premium de armazenamento em disco.
  • A azurefile-csi classe usa Arquivos do Azure para fornecer acesso compartilhado simultâneo ao mesmo volume de armazenamento, usando SMB ou NFS.
  • A azurefile-csi-premium classe usa o Azure Files Premium para compartilhamentos de arquivos com cargas de trabalho intensivas de IOPS. O Azure Files Premium fornece baixa latência e alta taxa de transferência apoiada pelo armazenamento SSD.

Você pode estender essas opções adicionando outras classes de armazenamento e integrando-se a outras soluções de armazenamento disponíveis, como:

  • Armazenamento de Discos Ultra
  • Azure NetApp Files
  • HPC Cache
  • Servidor NFS
  • Soluções de armazenamento de terceiros

Armazenamento de Discos do Azure

Por padrão, um cluster AKS vem com classes de armazenamento pré-criadas managed-csi que managed-csi-premium usam o armazenamento em disco. Semelhante ao Amazon EBS, essas classes criam um disco gerenciado ou dispositivo de bloco conectado ao nó para acesso ao pod.

As classes de armazenamento em disco permitem o provisionamento de volumes estáticos e dinâmicos . A política de recuperação garante que o disco seja excluído com o volume persistente. Você pode expandir o disco editando a declaração de volume persistente.

Essas classes de armazenamento usam discos gerenciados do Azure com LRS (armazenamento com redundância local). LRS significa que os dados têm três cópias síncronas em um único local físico em uma região primária do Azure. O LRS é a opção de replicação menos dispendiosa, mas não oferece proteção contra uma falha no datacenter. Para reduzir esse risco, faça backups regulares ou instantâneos dos dados do Armazenamento em Disco usando soluções como o Velero ou o Backup do Azure, que podem usar tecnologias internas de instantâneo.

Ambas as classes de armazenamento são apoiadas por discos gerenciados e ambas usam unidades de disco de estado sólido (SSD). É importante entender as diferenças entre discos Standard e Premium:

  • O preço dos discos padrão é calculado com base no tamanho e nas transações de armazenamento.
  • Os discos premium cobram apenas pelo tamanho, o que pode torná-los mais baratos para cargas de trabalho que exigem um grande número de transações.
  • Os SSDs Premium fornecem uma taxa de transferência máxima e IOPS mais altas, como mostrado nesta comparação.
  • O armazenamento premium é recomendado para a maioria das cargas de trabalho de produção e desenvolvimento.

Se você usar discos gerenciados do Azure como sua classe de armazenamento principal, considere a SKU de máquina virtual (VM) escolhida para seu cluster Kubernetes. As VMs do Azure limitam o número de discos que você pode anexar a elas, e o limite varia com o tamanho da VM. Além disso, como os discos do Azure são montados como ReadWriteOnce, eles estão disponíveis apenas para um único pod.

Discos SSD Premium v2 do Azure

Os discos SSD Premium v2 do Azure oferecem cargas de trabalho empresariais intensas de E/S, uma latência de disco de submilissegundos consistente e IOPS e taxa de transferência elevadas. O desempenho (capacidade, taxa de transferência e IOPS) dos discos SSD Premium v2 pode ser configurado de forma independente a qualquer momento, tornando mais fácil para mais cenários serem econômicos e, ao mesmo tempo, atender às necessidades de desempenho. Para obter mais informações sobre como configurar um cluster AKS novo ou existente para usar discos SSD Premium v2 do Azure, consulte Usar discos SSD Premium v2 do Azure no Serviço Kubernetes do Azure.

Armazenamento de Discos Ultra

O Ultra Disk Storage é uma camada de disco gerenciado do Azure que oferece alta taxa de transferência, IOPS alta e armazenamento em disco consistente de baixa latência para VMs do Azure. O Ultra Disk Storage destina-se a cargas de trabalho pesadas em dados e transações. Como outros SKUs de armazenamento em disco e o Amazon EBS, o Ultra Disk Storage monta um pod de cada vez e não fornece acesso simultâneo.

Use o sinalizador --enable-ultra-ssd para ativar o Ultra Disk Storage no seu cluster AKS.

Se você escolher Ultra Disk Storage, esteja ciente de suas limitações e certifique-se de selecionar um tamanho de VM compatível. O Ultra Disk Storage está disponível com replicação LRS (Local Redundant Storage, armazenamento com redundância local).

Traga as suas próprias chaves (BYOK)

O Azure criptografa todos os dados em um disco gerenciado em repouso. Por padrão, os dados são criptografados com chaves gerenciadas pela Microsoft. Para obter mais controle sobre as chaves de criptografia, você pode fornecer chaves gerenciadas pelo cliente para usar para criptografia em repouso para o sistema operacional e discos de dados para seus clusters AKS. Para obter mais informações, consulte Traga suas próprias chaves (BYOK) com discos gerenciados do Azure no Serviço Kubernetes do Azure (AKS).

Ficheiros do Azure

O Armazenamento em Disco não pode fornecer acesso simultâneo a um volume, mas você pode usar os Arquivos do Azure para se conectar usando o protocolo SMB e, em seguida, montar um volume compartilhado apoiado pelo Armazenamento do Azure. Esse processo fornece um armazenamento conectado à rede semelhante ao Amazon EFS. Tal como acontece com o armazenamento em disco, existem duas opções:

  • O armazenamento padrão dos Arquivos do Azure é apoiado por unidades de disco rígido (HDDs) regulares.
  • O armazenamento Premium do Azure Files faz backup do compartilhamento de arquivos com unidades SSD de alto desempenho. O tamanho mínimo de compartilhamento de arquivos para Premium é de 100 GB.

O Azure Files tem as seguintes opções de replicação de conta de armazenamento para proteger seus dados em caso de falha:

Para otimizar os custos dos Arquivos do Azure, adquira reservas de capacidade dos Arquivos do Azure.

Armazenamento de Contentores do Azure

O Armazenamento de Contêineres do Azure é um serviço de gerenciamento, implantação e orquestração de volumes baseado em nuvem criado nativamente para contêineres. Integra-se com o Kubernetes, permitindo-lhe aprovisionar dinamicamente e automaticamente volumes persistentes para armazenar dados para aplicações com estado em execução em clusters do Kubernetes.

O Armazenamento de Contêineres do Azure utiliza ofertas de Armazenamento do Azure existentes para armazenamento de dados real e oferece uma solução de orquestração e gerenciamento de volumes criada propositalmente para contêineres. As opções de armazenamento de backup suportadas incluem:

  • Azure Disks: controle granular de SKUs e configurações de armazenamento. São adequados para bases de dados de nível 1 e de uso geral.
  • Discos efêmeros: Utiliza recursos de armazenamento local em nós AKS (NVMe ou SSD temporário). Mais adequado para aplicativos sem requisitos de durabilidade de dados ou com suporte integrado à replicação de dados. O AKS descobre o armazenamento efêmero disponível nos nós AKS e os adquire para implantação em volume.
  • Azure Elastic SAN: provisione recursos sob demanda e totalmente gerenciados. Adequado para bancos de dados de uso geral, serviços de streaming e mensagens, ambientes de CD/CI e outras cargas de trabalho de nível 1/camada 2. Vários clusters podem acessar uma única SAN simultaneamente, no entanto, os volumes persistentes só podem ser anexados por um consumidor de cada vez.

Até agora, o fornecimento de armazenamento em nuvem para contêineres exigia o uso de drivers de interface de armazenamento de contêiner individual (CSI) para usar serviços de armazenamento destinados a cargas de trabalho centradas em infraestrutura como serviço (IaaS) e fazê-las funcionar para contêineres. Isso cria sobrecarga operacional e aumenta o risco de problemas com disponibilidade, escalabilidade, desempenho, usabilidade e custo do aplicativo.

O Armazenamento de Contêineres do Azure é derivado do OpenEBS, uma solução de código aberto que fornece recursos de armazenamento de contêiner para o Kubernetes. Ao oferecer uma solução de orquestração de volumes gerenciados por meio de controladores de armazenamento baseados em microsserviços em um ambiente Kubernetes, o Armazenamento de Contêiner do Azure permite um verdadeiro armazenamento nativo de contêiner.

O Armazenamento de Contêiner do Azure é adequado nos seguintes cenários:

  • Acelere iniciativas de VM para contêiner: o Armazenamento de Contêineres do Azure apresenta todo o espectro de ofertas de armazenamento em bloco do Azure que antes estavam disponíveis apenas para VMs e as disponibiliza para contêineres. Isso inclui disco efêmero que fornece latência extremamente baixa para cargas de trabalho como Cassandra, bem como o Azure Elastic SAN que fornece iSCSI nativo e destinos provisionados compartilhados.

  • Simplifique o gerenciamento de volumes com o Kubernetes: ao fornecer orquestração de volumes por meio do plano de controle do Kubernetes, o Armazenamento de Contêineres do Azure facilita a implantação e o gerenciamento de volumes no Kubernetes - sem a necessidade de ir e voltar entre diferentes planos de controle.

  • Reduzir o custo total de propriedade (TCO): melhore a eficiência de custos aumentando a escala de volumes persistentes suportados por pod ou nó. Reduza os recursos de armazenamento necessários para provisionamento compartilhando dinamicamente os recursos de armazenamento. Observe que o suporte de expansão para o pool de armazenamento em si não é suportado.

O Armazenamento de Contêiner do Azure fornece os seguintes benefícios principais:

  • Escalabilidade rápida de pods com monitoração de estado: o Armazenamento de Contêiner do Azure monta volumes persistentes em protocolos de armazenamento de bloco de rede (NVMe-oF ou iSCSI), oferecendo conexão e desconexão rápidas de volumes persistentes. Você pode começar pequeno e implantar recursos conforme necessário, certificando-se de que seus aplicativos não sejam prejudicados ou interrompidos, seja durante a inicialização ou na produção. A resiliência do aplicativo é melhorada com respawns pod em todo o cluster, exigindo movimento rápido de volumes persistentes. Usando protocolos de rede remotos, o Armazenamento de Contêiner do Azure combina perfeitamente com o ciclo de vida do pod para oferecer suporte a aplicativos com estado altamente resilientes e de alta escala no AKS.

  • Desempenho aprimorado para cargas de trabalho com monitoração de estado: o Armazenamento de Contêiner do Azure permite um desempenho de leitura superior e fornece desempenho de gravação próximo ao disco usando NVMe-oF sobre RDMA. Isso permite que os clientes atendam de forma econômica aos requisitos de desempenho para várias cargas de trabalho de contêiner, incluindo uso intensivo de E/S de nível 1, uso geral, sensível à taxa de transferência e desenvolvimento/teste. Acelere o tempo de conexão/desanexação de volumes persistentes e minimize o tempo de failover do pod.

  • Orquestração de volumes nativa do Kubernetes: crie pools de armazenamento e volumes persistentes, capture snapshots e gerencie todo o ciclo de vida dos volumes usando kubectl comandos sem alternar entre conjuntos de ferramentas para diferentes operações do plano de controle.

Azure NetApp Files

Como o AWS NetApp ONTAP, o Azure NetApp Files é um serviço de armazenamento de arquivos limitado, de alto desempenho e de classe empresarial. Os Arquivos NetApp do Azure são totalmente gerenciados no Azure usando soluções NetApp. Como os Arquivos do Azure, os Arquivos NetApp do Azure permitem que vários pods montem um volume. Você pode usar o Astra Trident, um orquestrador de armazenamento dinâmico de código aberto para Kubernetes, para configurar seu cluster AKS para usar os Arquivos NetApp do Azure.

Esteja ciente dos limites de recursos para arquivos NetApp do Azure. O tamanho mínimo de um pool de capacidade para Arquivos NetApp do Azure é 4 TiB. Os Arquivos NetApp do Azure cobram por tamanho provisionado em vez de capacidade usada.

Azure HPC Cache

O Cache HPC do Azure acelera o acesso aos seus dados para tarefas HPC, com toda a escalabilidade das soluções na nuvem. Se você escolher essa solução de armazenamento, certifique-se de implantar seu cluster AKS em uma região que ofereça suporte ao cache HPC do Azure.

Servidor NFS

A melhor opção para acesso NFS compartilhado é usar Arquivos do Azure ou Arquivos NetApp do Azure. Você também pode criar um Servidor NFS em uma VM do Azure que exporta volumes.

Lembre-se de que essa opção oferece suporte apenas ao provisionamento estático. Você deve provisionar os compartilhamentos NFS manualmente no servidor e não pode fazê-lo do AKS automaticamente.

Esta solução baseia-se na infraestrutura como serviço (IaaS) e não na plataforma como serviço (PaaS). Você é responsável por gerenciar o servidor NFS, incluindo atualizações do sistema operacional, alta disponibilidade, backups, recuperação de desastres e escalabilidade.

Disco de SO efémero

Por padrão, o Azure replica automaticamente o disco do sistema operacional de uma máquina virtual para o Armazenamento do Azure para evitar a perda de dados quando a VM é realocada para outro host. No entanto, como os contêineres não são projetados para que o estado local persista, esse comportamento oferece valor limitado enquanto fornece algumas desvantagens. Essas desvantagens incluem, mas não estão limitadas a, provisionamento de nó mais lento e latência de leitura/gravação mais alta.

Por outro lado, os discos efêmeros do sistema operacional são armazenados apenas na máquina host, assim como um disco temporário. Com essa configuração, você obtém menor latência de leitura/gravação, juntamente com escalonamento de nó mais rápido e atualizações de cluster.

Nota

Quando você não solicita explicitamente discos gerenciados do Azure para o sistema operacional, o AKS assume como padrão o sistema operacional efêmero, se possível, para uma determinada configuração de pool de nós.

Para obter mais informações, consulte:

Soluções de terceiros

Como o Amazon EKS, o AKS é uma implementação do Kubernetes e você pode integrar soluções de armazenamento Kubernetes de terceiros. Aqui estão alguns exemplos de soluções de armazenamento de terceiros para Kubernetes:

  • A Rook transforma sistemas de armazenamento distribuídos em serviços de armazenamento autogerenciáveis automatizando as tarefas do administrador de armazenamento. A Rook fornece seus serviços por meio de um operador Kubernetes para cada provedor de armazenamento.
  • O GlusterFS é um sistema de arquivos de rede escalável gratuito e de código aberto que usa hardware comum pronto para uso para criar soluções de armazenamento grandes e distribuídas para tarefas com uso intensivo de dados e largura de banda.
  • O Ceph fornece um serviço de armazenamento unificado confiável e escalável com interfaces de objetos, blocos e arquivos a partir de um único cluster construído a partir de componentes de hardware de mercadoria.
  • O armazenamento de objetos multicloud MinIO permite que as empresas criem infraestrutura de dados compatível com o AWS S3 em qualquer nuvem, fornecendo uma interface consistente e portátil para seus dados e aplicativos.
  • O Portworx é uma solução completa de armazenamento e gerenciamento de dados para projetos Kubernetes e iniciativas baseadas em contêineres. O Portworx oferece armazenamento granular de contêiner, recuperação de desastres, segurança de dados e migrações multicloud.
  • O Quobyte fornece armazenamento de arquivos e objetos de alto desempenho que você pode implantar em qualquer servidor ou nuvem para dimensionar o desempenho, gerenciar grandes quantidades de dados e simplificar a administração.
  • O Ondat oferece uma camada de armazenamento consistente em qualquer plataforma. Você pode executar um banco de dados ou qualquer carga de trabalho persistente em um ambiente Kubernetes sem precisar gerenciar a camada de armazenamento.

Considerações sobre armazenamento do Kubernetes

Considere os seguintes fatores ao escolher uma solução de armazenamento para Amazon EKS ou AKS.

Modos de acesso à classe de armazenamento

No Kubernetes versão 1.21 e mais recente, as classes de armazenamento AKS e Amazon EKS usam drivers CSI (Container Storage Interface) somente e por padrão.

Diferentes serviços suportam classes de armazenamento que têm diferentes modos de acesso.

Serviço ReadWriteOnce ReadOnlyMuitos ReadWriteMuitos
Discos do Azure X
Ficheiros do Azure X X X
Azure NetApp Files X X X
Servidor NFS X X X
Azure HPC Cache X X X

Provisionamento dinâmico vs estático

Provisione volumes dinamicamente para reduzir a sobrecarga de gerenciamento da criação estática de volumes persistentes. Defina uma política de recuperação correta para evitar ter discos não utilizados ao excluir pods.

Backup

Escolha uma ferramenta para fazer backup de dados persistentes. A ferramenta deve corresponder ao seu tipo de armazenamento, como instantâneos, Backup do Azure, Velero ou Kasten.

Otimização de custos

Para otimizar os custos de Armazenamento do Azure, use as reservas do Azure. Certifique-se de verificar quais serviços oferecem suporte às Reservas do Azure. Consulte também Gerenciamento de custos para um cluster Kubernetes.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos