Opções de armazenamento para um cluster do 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.
Observação
Este artigo faz parte de uma série de artigos que ajudam profissionais familiarizados com o Amazon EKS a entender o Serviço Azure Kubernetes (AKS).
Opções de armazenamento do Amazon EKS
No Amazon EKS, após o Kubernetes versão 1.11, o cluster tem uma StorageClass padrão chamada 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 um complemento do Amazon EKS
- Complemento autogerenciado do CSI do Amazon EBS
- Driver CSI do Amazon EFS
- Driver CSI do Amazon FSx for Lustre
- Driver CSI do Amazon FSx for NetApp ONTAP
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. Esse serviço é semelhante ao Armazenamento em Disco do Azure, que tem vários SKUs como SSD Padrão, SSD Premium ou Armazenamento de Disco Ultra, dependendo do desempenho necessário.
O Amazon Elastic File System (Amazon EFS), que fornece acesso de 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 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 de Disco Ultra ou Azure HPC Cache para cargas de trabalho em que a velocidade é importante, como machine learning e HPC.
NetApp ONTAP, armazenamento ONTAP compartilhado e totalmente gerenciado na Amazon Web Services (AWS). O Azure NetApp Files é um serviço de armazenamento de arquivos semelhante no Azure criado com a 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 o SSD padrão de armazenamento em disco. O SSD padrão são uma opção econômica de armazenamento otimizado para cargas de trabalho que necessitam de desempenho consistente em operações de entrada-saída mais baixas por segundo (IOPS). - A classe
managed-csi-premium
usa discos gerenciados SSD Premium de armazenamento em disco. - A classe
azurefile-csi
usa Azure Files para fornecer acesso compartilhado simultâneo ao mesmo volume de armazenamento, usando SMB ou NFS. - A classe
azurefile-csi-premium
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 com armazenamento SSD.
Você pode estender essas opções adicionando outras classes de armazenamento e as integrando a outras soluções de armazenamento disponíveis, como:
- Armazenamento de Disco Ultra
- Azure NetApp Files
- HPC Cache
- Servidor NFS
- Soluções de armazenamento de terceiros
Armazenamento em Disco do Azure
Por padrão, um cluster AKS vem com classes de armazenamento managed-csi
e managed-csi-premium
que usam armazenamento em disco. Semelhante ao Amazon EBS, essas classes criam um disco gerenciado ou um dispositivo de bloco conectado ao nó para acesso ao pod.
As classes de disco permitem o provisionamento de volume estático e dinâmico. 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 armazenamento localmente redundante (LRS). O 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 mais barata, mas não oferece proteção contra uma falha no datacenter. Para reduzir esse risco, faça backups regulares ou instantâneos de dados de Armazenamento em Disco usando soluções como Velero ou Azure Backup que podem usar tecnologias de instantâneo incorporadas.
Ambas as classes de armazenamento são compatíveis com discos gerenciados e usam unidades de disco de estado sólido (SSD). É importante entender as diferenças entre discos Standard e Premium:
- Os preços dos discos padrão são calculados com base no tamanho e nas transações de armazenamento.
- Os discos Premium cobram apenas por tamanho, sendo mais baratos para cargas de trabalho que exigem um alto 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 primária, considere a SKU de máquina virtual (VM) escolhida para o cluster do Kubernetes. As VMs do Azure limitam o número de discos que você pode anexar a elas, e o limite varia de acordo com o tamanho da VM. Além disso, como os discos do Azure são montados como ReadWriteOnce
, eles são disponibilizados apenas para um único pod.
Discos gerenciados SSD Premium do Azure v2
Os discos SSD Premium v2 do Azure oferecem cargas de trabalho corporativas intensas de E/S, uma latência de disco de submilissegundo consistente e alta IOPS e taxa de transferência. 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 que mais cenários sejam econômicos ao atender às necessidades de desempenho. Para obter mais informações sobre como configurar um cluster do AKS novo ou existente para usar discos Azure Premium SSD v2, consulte Usar discos Azure Premium SSD v2 no Serviço de Kubernetes do Azure.
Armazenamento de Disco Ultra
O Armazenamento de Disco Ultra é uma camada de disco gerenciado do Azure que oferece alta taxa de transferência, alto IOPS e armazenamento em disco consistente de baixa latência para VMs do Azure. O Armazenamento em Disco do Azure destina-se a cargas de trabalho que são pesadas em dados e transações. Como outros SKUs de Armazenamento em Disco e o Amazon EBS, o Armazenamento de Disco Ultra monta um pod de cada vez e não fornece acesso simultâneo.
Use o sinalizador --enable-ultra-ssd
para habilitar o Armazenamento de Disco Ultra no cluster AKS.
Se você escolher o Armazenamento de Disco Ultra, esteja ciente das limitações e selecione um tamanho de VM compatível. O Armazenamento de Disco Ultra está disponível com replicação de armazenamento localmente redundante (LRS).
Trazer 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 ter mais controle sobre as chaves de criptografia, você pode fornecer chaves gerenciadas pelo cliente para usar na criptografia em repouso tanto para o sistema operacional quanto para os discos de dados para seus clusters AKS. Para obter mais informações, consulte Trazer suas próprias chaves (BYOK) com discos gerenciados do Azure no Serviço de Kubernetes do Azure (AKS).
Arquivos do Azure
O Armazenamento em Disco não pode fornecer acesso simultâneo a um volume, mas você pode usar o Azure Files para se conectar usando o protocolo SMB e, em seguida, montar um volume compartilhado com Armazenamento do Azure. Esse processo fornece um armazenamento conectado à rede semelhante ao Amazon EFS. Assim como no Armazenamento em Disco, há duas opções:
- O armazenamento do Azure Files Standard conta com unidades de disco rígido (HDDs) regulares.
- O armazenamento do Azure Files Premium faz backup do compartilhamento de arquivos com unidades SSD de alto desempenho. O tamanho mínimo de compartilhamento de arquivo para Premium é 100 GB.
O Azure Files têm as seguintes opções de replicação de conta de armazenamento para proteger seus dados em caso de falha:
- Standard_LRS: armazenamento padrão com redundância local (LRS)
- Standard_GRS: armazenamento com redundância geográfica (GRS) padrão
- Standard_ZRS: armazenamento com redundância de zona (ZRS) padrão
- Standard_RAGRS: armazenamento com redundância geográfica e acesso de leitura (RA-GRS) padrão
- Standard_RAGRS: armazenamento com redundância de zona geográfica e acesso de leitura (RA-GZRS) padrão
- Premium_LRS: armazenamento com redundância local (LRS) premium
- Premium_ZRS: armazenamento com redundância de zona (ZRS) premium
Para otimizar os custos do Azure Files, adquira reservas de capacidade do Azure Files.
Armazenamento de Contêineres do Azure
O Armazenamento de Contêineres do Azure é um serviço de gerenciamento de volume, implantação e orquestração baseado em nuvem criado nativamente para contêineres. Ele se integra ao Kubernetes, permitindo que você provisione volumes persistentes de forma dinâmica e automática para armazenar dados de aplicativos com estado em execução em clusters do Kubernetes.
O Armazenamento de Contêineres do Azure utiliza as ofertas existentes do Armazenamento do Azure para o armazenamento de dados real e oferece uma solução de gerenciamento e orquestração de volume criada especialmente para contêineres. As opções de armazenamento de suporte aceitas incluem:
- Discos do Azure: controle granular de SKUs e configurações de armazenamento. Eles são adequados para bancos 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 necessidade de durabilidade de dados ou com suporte interno à replicação de dados. O AKS descobre o armazenamento efêmero disponível em nós do AKS e os adquire para implantação de volumes.
- Azure Elastic SAN: provisione recursos totalmente gerenciados sob demanda. 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/2. Vários clusters podem acessar uma única SAN simultaneamente; no entanto, volumes persistentes só podem ser anexados por um consumidor de cada vez.
Até agora, fornecer armazenamento em nuvem para contêineres requeria o uso de drivers de interface de armazenamento de contêiner (CSI) individuais para utilizar os serviços de armazenamento destinados a cargas de trabalho centradas em infraestrutura como serviço (IaaS) e fazê-los funcionar para contêineres. Isso cria uma sobrecarga operacional e aumenta o risco de problemas com disponibilidade, escalabilidade, desempenho, usabilidade e custos de aplicativos.
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 gerenciada por meio de controladores de armazenamento baseados em microsserviços em um ambiente do Kubernetes, o Armazenamento de Contêineres do Azure permite um verdadeiro armazenamento nativo de contêiner.
O Armazenamento de Contêineres do Azure é adequado nos seguintes cenários:
Acelerar as iniciativas de VM para contêiner: o Armazenamento de Contêineres do Azure expõe o espectro completo de ofertas de armazenamento em bloco do Azure que antes só estavam disponíveis para VMs e as disponibiliza para os contêineres. Inclui um disco efêmero que fornece uma latência extremamente baixa para cargas de trabalho como o Cassandra e também o Azure Elastic SAN, que fornece uma iSCSI nativa e destinos provisionados compartilhados.
Simplificar o gerenciamento de volumes com o Kubernetes: ao fornecer a orquestração de volume por meio do painel 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 uma movimentação constante entre diferentes painéis de controle.
Reduzir o custo total de propriedade (TCO): aprimore a eficiência econômica aumentando a escala dos volumes persistentes com suporte, por pod ou por nó. Reduza os recursos de armazenamento necessários para o provisionamento compartilhando os recursos de armazenamento dinamicamente. Observe que não há suporte para o escalonamento vertical do pool de armazenamento propriamente dito.
O Armazenamento de Contêineres do Azure oferece os seguintes benefícios principais:
Rápido escalonamento horizontal de pods com estado: o Armazenamento de Contêineres do Azure monta volumes persistentes por meio de protocolos de armazenamento de rede em blocos (NVMe-oF ou iSCSI), oferecendo anexação e desanexação rápidas dos volumes persistentes. Você pode começar pequeno e implantar recursos conforme o necessário, garantindo, ao mesmo tempo, que seus aplicativos não fiquem à míngua nem sejam interrompidos durante a inicialização ou na produção. A resiliência do aplicativo é aprimorada com respawns (ressuscitação) de pods em todo o cluster, requerendo um movimento rápido de volumes persistentes. Usando protocolos de rede remota, o Armazenamento de Contêineres do Azure forma uma combinação estreita com o ciclo de vida do pod para dar suporte a aplicativos com estado sofisticados e altamente resilientes no AKS.
Desempenho aprimorado para cargas de trabalho com estado: o Armazenamento de Contêineres do Azure permite um desempenho de leitura superior e fornece um desempenho de gravação semelhante ao de um disco usando NVMe-oF por RDMA. Isso permite que os clientes cumpram os requisitos de desempenho com economia para vários tipos de cargas de trabalho de contêiner, incluindo o uso intensivo de E/S de nível 1, uso geral, sensível à taxa de transferência e desenvolvimento/teste. Acelere o tempo de anexaçã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 instantâneos e gerencie todo o ciclo de vida dos volumes usando comandos
kubectl
sem precisar alternar entre conjuntos de ferramentas para diferentes operações do painel de controle.
Azure NetApp Files
Assim como o AWS NetApp ONTAP, o Azure NetApp Files é um serviço de armazenamento medido de arquivos de alto desempenho de classe empresarial. O Azure NetApp Files é totalmente gerenciado no Azure usando soluções NetApp. Assim como o Azure Files, o Azure NetApp Files permite 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 o Azure NetApp Files.
Esteja ciente dos limites de recursos para Azure NetApp Files. O tamanho mínimo de um pool de capacidade para Azure NetApp Files é 4 TiB. Os Azure NetApp Files cobram por tamanho provisionado em vez de capacidade usada.
Azure HPC Cache
O Azure HPC Cache acelera o acesso aos seus dados para tarefas de HPC com toda a escalabilidade das soluções de nuvem. Se você escolher essa solução de armazenamento, implante seu cluster AKS em uma região que ofereça suporte ao Azure HPC Cache.
Servidor NFS
A melhor opção para acesso NFS compartilhado é usar Azure Files ou Azure NetApp Files. 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 a partir do AKS automaticamente.
Essa solução é baseada em infraestrutura como serviço (IaaS) em vez de plataforma como serviço (PaaS). Você é responsável por gerenciar o servidor NFS, incluindo atualizações do SO, alta disponibilidade, backups, recuperação de desastres e escalabilidade.
Disco do 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 perda de dados quando a VM é realocada para outro host. No entanto, como os contêineres não são projetados para ter o estado local persistido, esse comportamento agrega um valor limitado e tem algumas desvantagens. Essas desvantagens incluem, mas não se limitam a provisionamento de nó mais lento e maior latência de leitura/gravação.
Por outro lado, os discos de SO efêmero são armazenados apenas no computador host, assim como um disco temporário. Essa configuração proporciona menor latência de leitura/gravação, bem como escala de nós e atualizações de cluster mais rápidos.
Observação
Quando você não solicita explicitamente discos gerenciados do Azure para o SO, o AKS usa como padrão o SO efêmero, se possível, para uma determinada configuração de pool de nós.
Para saber mais, veja:
- Opções de Armazenamento para Aplicativos no Serviço Azure Kubernetes (AKS)
- Discos do SO efêmero para VMs do Azure.
Soluções de terceiros
Assim como o Amazon EKS, o AKS é uma implementação do Kubernetes e você pode integrar soluções de armazenamento Kubernetes de terceiros. Confira a seguir alguns exemplos de soluções de armazenamento de terceiros para o 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 os 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 grandes soluções de armazenamento distribuído para tarefas com uso intenso de dados e largura de banda.
- O Ceph fornece um serviço de armazenamento unificado confiável e escalável com interfaces de objeto, bloco e arquivo de um único cluster criado a partir de componentes de hardware básicos.
- O armazenamento de objetos em várias nuvens MinIO permite que as empresas criem uma 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 em 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 permanente 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 de classe de armazenamento
No Kubernetes versão 1.21 e mais recente, as classes de armazenamento AKS e Amazon EKS usam somente drivers de Interface de Armazenamento de Contêiner (CSI) por padrão.
Serviços diferentes oferecem suporte a classes de armazenamento que têm modos de acesso diferentes.
Serviço | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
Discos do Azure | X | ||
Arquivos 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 x 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 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, Azure Backup, Velero ou Kasten.
Otimização de custo
Para otimizar os custos de Armazenamento do Azure, use as reservas do Azure. Verifique quais serviços oferecem suporte ao Azure Reservations. Consulte também Gerenciamento de custos para um cluster Kubernetes.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Principais autores:
- Paolo Salvatori | Engenheiro-chefe de Sistemas
- Laura Nicolas | Arquiteto de Soluções de Nuvem
Outros colaboradores:
- Chad Kittel | Engenheiro de Software Principal
- Ed Price | Gerente sênior de programa de conteúdo
- Theano Petersen | Escritor técnico
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
- AKS para profissionais do Amazon EKS
- Gerenciamento de acesso e identidade do Kubernetes
- Monitoramento e registro em log do Kubernetes
- Acesso seguro de rede ao Kubernetes
- Gerenciamento de custos para Kubernetes
- Gerenciamento de nós e pool de nós do Kubernetes
- Governança de cluster