Considerações de armazenamento do Azure Kubernetes Service (AKS)

Para executar cargas de trabalho de aplicativos específicas, sua organização ou empresa precisa projetar recursos adequados no nível da plataforma do Serviço 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 é guiá-lo para 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 e com monitoração de estado. As cargas de trabalho com monitoração de estado geralmente exigem uma solução de armazenamento para armazenar o estado. O AKS suporta várias opções integradas para armazenamento nativo, que incluem bancos de dados gerenciados, discos (ou blocos) e arquivos e armazenamento de blob (ou objeto). Cada uma dessas opções oferece diferentes SKUs, tamanhos e características de desempenho. Selecionar a opção certa 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 o serviço de armazenamento certo

Escolher os SKUs e tamanhos certos para suas implantações iniciais requer algumas avaliações e, potencialmente, uma prova de conceito ou ambiente de 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 disponível na plataforma (por exemplo, Azure SQL), 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 blobs. Seu aplicativo pode fazer isso usando blobs que são montados como arquivos via Network File System (NFS) ou acessados como um sistema de arquivos virtual usando BlobFuse. Como alternativa, seu aplicativo pode ler e gravar diretamente no armazenamento de blobs.

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

  • Largura de banda para solicitações de aplicativo e armazenamento. 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, IOPS alta. Use discos para armazenamento se seu aplicativo precisar de latência consistentemente baixa para aplicativos de mensagens e IOPS (operações de E/S por segundo) altas 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 de 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.

Discos do sistema operacional (SO)

Para discos de 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 o uso de discos efêmeros do sistema operacional em tamanhos de VM suportados. Para obter mais informações sobre discos de SO efêmeros, consulte SO efêmero.

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

  • Dimensionamento de discos gerenciados. Se você selecionar um disco gerenciado como o disco do sistema operacional, certifique-se de que ele esteja dimensionado adequadamente para suportar os 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 de aplicação

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 o cluster do 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 o exigem. O armazenamento criado dinamicamente também pode ser excluído dinamicamente. Para obter mais informações, consulte:

  • Redundância e desempenho. Considere a redundância de armazenamento e o desempenho que sua carga de trabalho exige. Para obter mais informações, consulte:

  • 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 suportar o número de discos e os 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 o uso de CSI com um volume local efêmero. Para obter mais informações sobre drivers CSI, consulte Drivers CSI (Container Storage Interface) no Serviço Kubernetes do Azure (AKS).

Soluções baseadas em ficheiros

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 em seu cluster Kubernetes. O armazenamento de arquivos expõe um sistema de arquivos compartilhado por meio de NFS ou SMB/CIFS (Common Internet File System). O Azure tem duas soluções para armazenamento baseado em ficheiros: Azure Files e Azure NetApp Files.

Ficheiros 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 obter mais informações, consulte:

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

  • SMB/CIFS ou NFS. Para aceder aos Ficheiros do Azure, avalie se a sua carga de trabalho deve utilizar a API para o protocolo predefinido, SMB/CIFS, ou se a sua carga de trabalho requer suporte 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 Blob do Azure pode ser acessado por meio de uma API HTTP ou por meio 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 obter mais informações, veja 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 de armazenamento de blob seu aplicativo requer. Para obter mais informações, consulte Camadas de acesso quente, legal e de arquivamento 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 obter mais informações, consulte Autorizar o acesso a dados no Armazenamento do Azure.

  • API para armazenamento de blob abstrato. 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 do Kubernetes. Para obter mais informações sobre bibliotecas para várias linguagens de programação, consulte Introdução ao armazenamento de Blob 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 obter mais informações, consulte:

  • 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. Este driver permite o acesso ao armazenamento de blob através do protocolo NFSv3 ou através 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 ser integradas ao Kubernetes. Este artigo não aborda essas questões, 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 colocar os ficheiros em cache no Azure, o Azure HPC Cache traz a escalabilidade da computação na cloud para o 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, consulte Introdução ao Azure Data Lake Storage Gen2.

Recomendações de design

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

  • Use o Azure Private Link. Por segurança, recomendamos o uso do Azure Private Link 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 serviços hospedados pelo Azure em um ponto de extremidade privado em sua rede virtual. Para obter mais informações, consulte O que é o Azure Private Link?

  • 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 efêmeros do sistema operacional 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 blobs.

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 de Discos do Azure. Para obter mais informações, consulte Instantâneos de volume.

  • Evite a distribuição de discos entre discos. Recomendamos que você evite distribuir 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 Kubernetes do Azure (AKS).

Ficheiros do Azure

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

  • Escolha Premium. Se o desempenho for crítico, recomendamos o uso do nível 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 uma consideração cuidadosa 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. Os Arquivos NetApp do Azure oferecem 3 camadas de desempenho que oferecem classes variadas de desempenho. Para obter mais informações, consulte Considerações de desempenho para o 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 NetApp do Azure.

  • Use o tipo de QoS automático para pools de capacidade.

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

    1. Se você usar a mesma VNet para AKS e Arquivos NetApp do Azure, crie uma sub-rede dedicada para Arquivos NetApp do Azure 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 blobs, recomendamos as seguintes opções de design:

  • Use um SDK para interagir com o armazenamento. Recomendamos o uso de um SDK no nível do aplicativo para interagir com o armazenamento de blobs.

  • Use CSI com NFS para interagir com o armazenamento. Se você não puder usar um SDK no nível do aplicativo para interagir 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 (Interface de Armazenamento de Contêiner) de armazenamento de Blob do Azure.

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

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

Próximos passos

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