Considerações de armazenamento sobre o AKS (Serviço de Kubernetes do Azure)

Para executar cargas de trabalho de aplicativos específicos, sua organização ou empresa precisa projetar recursos adequados no nível de plataforma do Serviço de Kubernetes do Azure (AKS). Essas cargas de trabalho provavelmente têm requisitos de armazenamento diferentes. Ao escolher a solução de armazenamento certa para seu aplicativo, você tem várias considerações, incluindo desempenho, disponibilidade, capacidade de recuperação, segurança e custo. O objetivo deste artigo é orientá-lo a escolher a opção certa ou a combinação de opções para sua carga de trabalho.

O Kubernetes pode executar cargas de trabalho sem monitoração de estado e com monitoração de estado. Cargas de trabalho com monitoração de estado geralmente exigem uma solução de armazenamento para armazenar o estado. O AKS oferece suporte a várias opções integradas para armazenamento nativo, que incluem bancos de dados gerenciados, discos (ou blocos) e armazenamento de arquivos e blob (ou objeto). Cada uma dessas opções oferece diferentes SKUs, tamanhos e características de desempenho. Escolher a opção correta requer uma consideração cuidadosa.

Este artigo descreve os fatores e as opções que você precisa considerar em Selecionar o serviço de armazenamento correto e Considerações de design. Ele fornece recomendações específicas em Recomendações de design.

Selecione os serviços corretos de armazenamento

Escolher os SKUs e tamanhos certos para suas implantações iniciais requer algumas avaliações e, potencialmente, um ambiente de prova de conceito ou teste. A seguir estão as diretrizes de alto nível para ajudá-lo a começar a usar o armazenamento para AKS:

  • Dados estruturados. Para dados estruturados que seu aplicativo pode armazenar em um banco de dados gerenciado que está disponível na plataforma (por exemplo, SQL do Azure), recomendamos o uso de um banco de dados gerenciado.

  • Dados não estruturados. Para dados não estruturados, como fotos, vídeos e documentos de texto, use o armazenamento de blob. Seu aplicativo pode fazer isso usando blobs que são montados como arquivos via NFS (Network File System) ou acessados como um sistema de arquivos virtual usando BlobFuse. Como alternativa, seu aplicativo pode ler e gravar diretamente no armazenamento de blob.

  • Dados de aplicativos compartilhados. Para dados de aplicativos compartilhados que exigem alto desempenho, use os Arquivos do Azure NetApp ou a camada premium dos Arquivos do Azure. Para dados de configuração compartilhada que exigem apenas desempenho limitado, use a camada padrão de Arquivos do Azure.

  • Largura de banda para solicitações de armazenamento e aplicativos de aplicativos. Certifique-se de que seus nós tenham largura de banda de rede suficiente para lidar com solicitações de aplicativos e solicitações de armazenamento. O tráfego de armazenamento passa pela pilha de rede, quer o protocolo para transferências seja SMB (Server Message Block) ou NFS.

  • Baixa latência, alta IOPS. Use discos para armazenamento se seu aplicativo precisar de latência consistentemente baixa para aplicativos de mensagens e altas operações de E/S por segundo (IOPS) e alta taxa de transferência para executar seus próprios bancos de dados no Kubernetes. Para obter o melhor desempenho, considere usar o SSD Premium do Azure, o SSD Premium do Azure v2 ou o Armazenamento em Disco Ultra do Azure.

Considerações sobre o design

As considerações a seguir são para projetar o armazenamento para AKS. Considere onde o armazenamento é necessário em seu ambiente AKS e determine a melhor solução para cada requisito.

Disco do SO (sistema operacional)

Para discos do sistema operacional (SO), considere os seguintes fatores:

  • Discos efêmeros para SO. Cada máquina virtual (VM) no Azure requer um disco para seu sistema operacional. Como os nós do Kubernetes são efêmeros, o AKS usa como padrão discos de sistema operacional efêmeros em tamanhos de VM suportados. Para obter mais informações sobre discos efêmeros do SO, consulte SO efêmeros.

  • Discos gerenciados para SO. Se sua carga de trabalho exigi-los, você pode usar discos gerenciados regulares para os nós em seu cluster AKS. Isso dá suporte a cargas de trabalho que exigem dados persistentes na unidade do sistema operacional. Para obter mais informações sobre opções para armazenamento persistente, consulte Opções de armazenamento para aplicativos no Serviço de Kubernetes do Azure (AKS).

  • Dimensionamento de discos gerenciados. Se você selecionar um disco gerenciado como o disco do sistema operacional, verifique se ele foi dimensionado adequadamente para oferecer suporte aos requisitos do sistema operacional, do sistema Kubernetes e da sua carga de trabalho. Para obter mais informações sobre opções e diferenças, consulte Tipos de disco gerenciado do Azure.

Dados do aplicativo

Algumas cargas de trabalho precisam de um armazenamento de dados consistente para armazenamento de dados de aplicativos. Se seu aplicativo exigir um banco de dados, considere explorar os bancos de dados gerenciados no Azure, que incluem as seguintes opções:

Soluções de armazenamento em AKS

Se um banco de dados gerenciado não atender às necessidades do seu aplicativo, considere usar outra opção de armazenamento disponível para o AKS para armazenar dados consistentes. As opções incluem soluções baseadas em disco, discos efêmeros, soluções baseadas em arquivos, armazenamento de blob e outras opções que não são abordadas neste artigo.

Soluções baseadas em disco

Os discos, ou armazenamento em bloco, são ideais para armazenar dados diretamente em um dispositivo bruto baseado em blocos. O armazenamento baseado em disco é ideal para armazenar dados para bancos de dados que seu cluster Kubernetes hospeda. No Azure, os discos gerenciados são a solução para obter armazenamento baseado em blocos.

  • Armazenamento em disco estático ou criado dinamicamente. Considere se você deseja usar um disco estático criado fora do AKS ou se deseja que o AKS crie dinamicamente o armazenamento em disco como um pod ou pods que o exijam. O armazenamento criado dinamicamente também pode ser excluído dinamicamente. Para saber mais, veja:

  • Redundância e desempenho. Considere a redundância de armazenamento e o desempenho que sua carga de trabalho exige. Para saber mais, veja:

  • Disco compartilhado. Considere se você precisa de um disco compartilhado. Para obter mais informações sobre opções, consulte Compartilhar um disco gerenciado do Azure.

  • Tamanho do nó para discos e taxa de transferência. Considere o tamanho do nó do Kubernetes. Ele deve ser grande o suficiente para oferecer suporte ao número de discos e aos requisitos de taxa de transferência agregada. Para obter informações sobre tamanhos e características, consulte Tamanhos para máquinas virtuais no Azure.

  • Tamanho do disco e desempenho necessário. Considere se o disco gerenciado está dimensionado adequadamente para os requisitos de desempenho da carga de trabalho. O desempenho aumenta à medida que o tamanho do disco aumenta para HDD padrão, SSD padrão e SSD Premium v1. Para obter mais informações sobre discos gerenciados, consulte Tipos de disco gerenciado do Azure.

Soluções de discos efêmeros

Considere se seu aplicativo requer armazenamento temporário não persistente ou onde você deseja usar as unidades de alto desempenho nas VMs otimizadas para armazenamento. Para se conectar a um volume efêmero, você pode usar a opção emptyDir no Kubernetes ou o driver para um volume local efêmero CSI. Recomendamos emptyDir para dados efêmeros, como espaço de rascunho. Para armazenamento na série VM otimizada para armazenamento, recomendamos usar CSI com um volume local efêmero. Para obter mais informações sobre drivers CSI, consulte Drivers CSI (Container Storage Interface) no Serviço de Kubernetes do Azure (AKS).

Soluções baseadas em arquivos

Considere se seus pods precisam compartilhar um sistema de arquivos. Um sistema de arquivos compartilhado é ideal para dados de aplicativos e configurações que são lidos e compartilhados por vários pods no cluster do Kubernetes. O armazenamento de arquivos expõe um sistema de arquivos compartilhado via NFS ou SMB/Common Internet File System (CIFS). O Azure tem duas soluções para armazenamento baseado em arquivo: Arquivos do Azure e Arquivos do Azure NetApp.

Arquivos do Azure

Para Arquivos do Azure, considere as seguintes opções:

  • Compartilhamento de arquivos estático ou criado dinamicamente. Considere se você deseja usar um compartilhamento de arquivos estático criado fora do AKS ou se deseja que o AKS crie o compartilhamento de arquivos dinamicamente em seu nome. Para saber mais, veja:

  • Desempenho padrão ou premium. Avalie se o desempenho padrão é suficiente ou se você precisa de desempenho premium do Azure Files.

  • SMB/CIFS ou NFS. Para acessar os Arquivos do Azure, avalie se sua carga de trabalho deve usar a API para o protocolo padrão, SMB/CIFS, ou se sua carga de trabalho requer suporte a NFS.

  • Modelo de rede para acesso. Considere o modelo de rede que você deseja usar para acessar os Arquivos do Azure: acesso por meio de endereço IP público direto, um ponto de extremidade de serviço ou um link privado.

Azure NetApp Files

Para Arquivos NetApp do Azure, considere as seguintes opções:

Armazenamento de Blobs

Considere a quantidade de dados não estruturados que seu aplicativo precisa armazenar. O armazenamento de Blobs do Azure pode ser acessado por meio de uma API HTTP ou dos SDKs. A montagem do armazenamento de blob como um sistema de arquivos em um contêiner ou pod é ideal para cargas de trabalho de aplicativos que têm grandes quantidades de dados não estruturados, como arquivos de log, imagens, documentos, mídia de streaming e dados de recuperação de desastres.

  • Redundância de dados. Considere qual redundância de dados se adequa ao seu aplicativo. Para mais informações, confira Redundância do Armazenamento do Microsoft Azure. A redundância de dados é selecionada no nível da conta de armazenamento.

  • Nível de desempenho. Considere qual camada de desempenho do armazenamento de blob seu aplicativo requer. Para obter mais informações, confira Camadas de acesso quente, frio e de arquivos para dados de blob.

  • Método de autenticação para acesso. Considere qual método de autenticação seu aplicativo deve usar para acessar o armazenamento de blob: chave de armazenamento, SAS ou ID do Microsoft Entra. Para saber mais, confira Autorizar o acesso a dados no Armazenamento do Azure.

  • API para armazenamento abstrato de blob. Considere qual API usar. Normalmente, os aplicativos que acessam o armazenamento de blob usam a API no aplicativo por meio de um dos SDKs, que abstrai a interação com o armazenamento de blob do cluster Kubernetes. Para obter mais informações sobre bibliotecas para várias linguagens de programação, consulte Introdução ao armazenamento de Blobs do Azure.

  • Armazenamento de blob estático ou criado dinamicamente. Considere se você deseja usar um contêiner de armazenamento de blob estático criado fora do AKS ou se deseja que o AKS crie o contêiner de armazenamento de blob dinamicamente em seu nome. Para saber mais, veja:

  • Driver para acessar o armazenamento. Considere como seu aplicativo deve acessar o armazenamento de blob. Para acessá-lo como um sistema de arquivos, você pode usar o driver CSI de blob no Kubernetes. Esse driver permite o acesso ao armazenamento de blob por meio do protocolo NFSv3 ou por meio de um driver de fusível.

Outras soluções de armazenamento

Considere outros tipos de armazenamento se seu aplicativo exigir algo que não esteja descrito neste artigo. Há várias soluções de armazenamento especializadas no Azure que podem se integrar ao Kubernetes. Este artigo não aborda esses itens, mas a lista a seguir identifica possíveis soluções:

  • Cache HPC do Azure. O Cache HPC acelera o acesso aos seus dados para tarefas de computação de alto desempenho (HPC). Ao armazenar arquivos em cache no Azure, o Azure HPC Cache traz a escalabilidade da computação em nuvem para seu fluxo de trabalho existente. Para obter mais informações, consulte Integrar o Cache HPC do Azure com o Serviço Kubernetes do Azure.

  • Azure Data Lake Storage Gen2. O Data Lake Storage Gen2 é um tipo especial de armazenamento de blob otimizado para cargas de trabalho de big data, como Hadoop e Spark. Para obter mais informações, confira Introdução ao Azure Data Lake Storage Gen2.

Recomendações sobre design

Esta seção fornece recomendações baseadas no que provou ser eficaz para os clientes do Azure.

  • Use o Link Privado do Azure. Por segurança, recomendamos usar o Link Privado do Azure para todas as soluções de armazenamento que oferecem suporte a ele. O Azure Private Link permite o acesso aos Serviços do Azure, como o Armazenamento do Azure e o Banco de Dados SQL, e aos serviços hospedados pelo Azure em um ponto de extremidade privado em sua rede virtual. Para obter mais informações, confira O que é o Link Privado do Azure?

  • Use discos efêmeros para SO. Para discos do sistema operacional, recomendamos o uso de discos efêmeros. Para se beneficiar desse recurso, selecione um tamanho de VM que tenha um disco temporário de tamanho adequado. Para obter mais informações, consulte Discos do sistema operacional efêmero para VMs do Azure.

  • Use bancos de dados gerenciados. Para dados de aplicativos, recomendamos o uso de bancos de dados gerenciados. Para obter uma lista de opções de banco de dados, consulte Tipos de bancos de dados no Azure.

As seções a seguir descrevem mais recomendações para discos do Azure, Arquivos do Azure e armazenamento de blob.

Discos do Azure

Para discos do Azure, recomendamos as seguintes opções de design:

  • Use discos Premium ou Ultra. Na maioria dos casos, recomendamos discos Premium ou Ultra para garantir o desempenho adequado. Para obter mais informações, consulte Armazenamento em disco do Azure.

  • Dimensione o nó para discos e taxa de transferência. Recomendamos garantir que o tamanho do nó do Kubernetes seja grande o suficiente para suportar o número de discos e a quantidade de taxa de transferência agregada. Para obter informações sobre tamanhos e características, consulte Tamanhos para máquinas virtuais no Azure.

  • Crie instantâneos de volumes persistentes. Recomendamos tirar instantâneos de volumes persistentes, seja para provisionar novos volumes pré-preenchidos com os dados de instantâneo ou para restaurar um volume existente para um estado anterior usando o recurso de instantâneo do driver CSI do Azure Disks. Para obter mais informações, consulte Instantâneos de volume.

  • Evite a distribuição de discos entre discos. Recomendamos que você evite o striping em vários discos no Kubernetes.

  • Use PV/PVC. Recomendamos o uso de PV e PVC no Kubernetes para criar discos dinamicamente quando necessário. Para obter mais informações sobre armazenamento persistente, consulte Opções de armazenamento para aplicativos no Serviço de Kubernetes do Azure (AKS).

Arquivos do Azure

Para Arquivos do Azure, recomendamos as seguintes opções de design:

  • Escolha Premium. Se o desempenho for crítico, recomendamos o uso da camada Premium.

  • Crie contas de armazenamento dedicadas. Recomendamos fornecer contas de armazenamento dedicadas para seus compartilhamentos de arquivos.

  • Escolha compartilhamentos de arquivos estáticos ou criados dinamicamente. Recomendamos que você considere cuidadosamente se você deseja que o AKS crie os compartilhamentos de arquivos ou se deseja criá-los estaticamente fora do Kubernetes. O armazenamento criado dinamicamente também pode ser excluído dinamicamente. Para obter mais informações sobre como permitir que o AKS crie compartilhamentos de arquivos dinamicamente, consulte Criar e usar dinamicamente um volume persistente com Arquivos do Azure.

Azure NetApp Files

Para Arquivos NetApp do Azure, recomendamos as seguintes opções de design:

  • Escolha uma camada de desempenho com base nos requisitos do aplicativo. O Azure NetApp Files oferece 3 camadas de desempenho que oferecem classes variadas de desempenho. Para obter mais informações, confira Considerações de desempenho para Azure NetApp Files.

  • Crie pools de capacidade na mesma região do Azure que o cluster AKS. Para obter mais informações, consulte Criar um pool de capacidade para arquivos do Azure NetApp.

  • Use o tipo Auto QoS para pools de capacidade.

  • Planeje sua rede. Existem duas opções para o design de rede:

    1. Se você usar a mesma rede virtual para AKS e Arquivos do Azure NetApp, crie uma sub-rede dedicada para Arquivos do Azure NetApp e delegue a sub-rede para Microsoft.NetApp/Volumes.
    2. Se você usar VNets diferentes, estabeleça o emparelhamento de VNet entre elas.

Armazenamento de Blobs

Para armazenamento de blob, recomendamos as seguintes opções de design:

  • Use um SDK para fazer interface com o armazenamento. Recomendamos o uso de um SDK no nível do aplicativo para fazer a interface com o armazenamento de blob.

  • Use CSI com NFS para fazer interface com o armazenamento. Se você não puder usar um SDK no nível do aplicativo para fazer interface com o armazenamento de blob, recomendamos usar a opção NFS v3 no driver CSI de blob. Para obter mais informações, consulte Usar o driver CSI (Container Storage Interface) de armazenamento de Blobs do Azure.

  • Use o Microsoft Entra ID para acesso. Recomendamos o uso do Microsoft Entra ID para autorizar o acesso ao armazenamento de blob. Evite usar uma chave de conta de armazenamento compartilhada. Para obter mais informações, consulte Autorizar o acesso a blobs usando o Microsoft Entra ID.

  • Ajuste os níveis de camada. Recomendamos o uso de políticas de gerenciamento do ciclo de vida para mover dados acessados com pouca frequência para uma camada de acesso mais fria. Para obter mais informações, confira Camadas de acesso quente, frio e de arquivos para dados de blob.

Próximas etapas

Saiba como definir o escopo da alocação de custos para uma implantação, um serviço, um rótulo, um pod ou um namespace no AKS usando o Kubecost.