Práticas recomendadas para armazenamento e backups no Serviço de Kubernetes do Azure (AKS)

À medida que você cria e gerencia clusters no Serviço de Kubernetes do Azure (AKS), os aplicativos geralmente precisam de armazenamento. Compreenda as necessidades de desempenho de pod e os mecanismos de acesso a fim de poder escolher o melhor armazenamento para seu aplicativo. O tamanho do nó do AKS pode afetar suas opções de armazenamento. Planeje maneiras de fazer backup e testar o processo de restauração para o armazenamento anexado.

Este artigo de práticas recomendadas se concentra em considerações de armazenamento para operadores de cluster. Neste artigo, você aprende:

  • Quais tipos de armazenamento estão disponíveis.
  • Como dimensionar corretamente os nós do AKS para desempenho de armazenamento.
  • Diferenças entre o provisionamento dinâmico e estático de volumes.
  • Maneiras de fazer backup e proteger seus volumes de dados.

Escolher o tipo de armazenamento apropriado

Orientação de melhor prática

Compreenda as necessidades de seu aplicativo para escolher o armazenamento correto. Use armazenamento de alto desempenho com apoios de SSDs para cargas de trabalho de produção. Planeje um armazenamento baseado em rede quando precisar de várias conexões simultâneas.

Os aplicativos geralmente exigem diferentes tipos e velocidades de armazenamento. Determine o tipo de armazenamento mais adequado fazendo as perguntas a seguir.

  • Seus aplicativos precisam de armazenamento que se conecta a pods individuais?
  • Seus aplicativos precisam de armazenamento compartilhado entre vários pods?
  • O armazenamento é para acesso a dados somente leitura?
  • O armazenamento será utilizado para gravar grandes quantidades de dados estruturados?

A tabela a seguir descreve os tipos de armazenamento disponíveis e suas funcionalidades:

Caso de uso Plug-in de volume Ler/gravar uma vez Muitos somente leitura Muitos ler/gravar Suporte a contêiner do Windows Server
Configuração compartilhada Arquivos do Azure Sim Sim Sim Sim
Dados de aplicativo estruturados Discos do Azure Sim Não No Sim
Dados não estruturados, operações do sistema de arquivos BlobFuse Sim Sim Sim Não

O AKS oferece dois tipos primários de armazenamento seguro para volumes com suporte por Discos do Azure ou Arquivos do Azure. Os dois utilizam a SSE (Criptografia do Serviço de Armazenamento) do Azure que criptografa dados inativos. Os discos não podem ser criptografados usando a Criptografia de Disco do Azure no nível do nó do AKS. Nos compartilhamentos dos Arquivos do Azure, não há limite para o número de compartilhamentos que podem ser montados em um nó.

Tanto os Arquivos do Azure quanto os Discos do Azure estão disponíveis nos níveis de desempenho Standard e Premium:

  • Discos Premium
    • Com suporte por disco SSD de alto desempenho.
    • Recomendado para todas as cargas de trabalho de produção.
  • Discos Standard
    • Com suporte por HDDs (discos regulares).
    • Bom para dados de arquivo ou pouco acessados.

Embora a camada de armazenamento padrão para o driver CSI do Disco do Azure seja SSD Premium, seu StorageClass personalizado pode usar SSD Premium, SSD Standard ou HDD Standard.

Entenda as necessidades de desempenho do aplicativo e os padrões de acesso para escolher o nível de armazenamento apropriado. Para saber mais sobre os níveis de desempenho e os tamanhos dos Managed Disks, confira Visão geral dos Azure Managed Disks.

Criar e usar as classes de armazenamento para definir as necessidades do aplicativo

Defina o tipo de armazenamento que você deseja usando classes de armazenamento do Kubernetes. Em seguida, a classe de armazenamento é referenciada na especificação do pod ou da implantação. As definições de classe de armazenamento trabalham em conjunto para criar o armazenamento adequado e conectá-lo aos pods.

Para obter mais informações, confira Classes de armazenamento no AKS.

Dimensionar os nós para necessidades de armazenamento

Orientação de melhor prática

Cada tamanho de nó dá suporte a um número máximo de discos. Diferentes tamanhos de nós também fornecem quantidades diferentes de largura de banda de rede e de armazenamento local. Planeje de acordo com suas demandas de aplicativo para implantar o tamanho certo de nó.

Os nós do AKS são executados como vários tipos e tamanhos de VM do Azure. Cada tamanho de VM fornece:

  • Uma quantidade diferente de recursos principais, como CPU e memória.
  • Um número máximo de discos que podem ser anexados.

O desempenho do armazenamento também varia entre os tamanhos de VM para as IOPS (operações de entrada/saída por segundo) máximas do disco local e anexado.

Se seus aplicativos exigirem os Discos do Azure como solução de armazenamento, tenha uma estratégia adequada de um tamanho de VM do nó. A capacidade de armazenamento e as quantidades de CPU e memória têm um papel principal na decisão do tamanho de uma VM.

Por exemplo, embora os tamanhos de VM Standard_B2ms e Standard_DS2_v2 incluam uma quantidade semelhante de recursos de CPU e memória, o potencial de desempenho de armazenamento é diferente:

Tamanho e tipo de nó vCPU Memória (GiB) Discos de dados máximos IOPS de discos com taxa de transferência sem cache Taxa de transferência máxima não armazenada em cache (MBps)
Standard_B2ms 2 8 4 1.920 22,5
Standard_DS2_v2 2 7 8 6.400 96

Neste exemplo, Standard_DS2_v2 oferece duas vezes mais discos anexados e três ou quatro vezes mais a quantidade de IOPS e taxa de transferência de disco. Se você comparasse apenas recursos de computação principais e custos, talvez escolhesse o tamanho de VM Standard_B2ms, com baixo desempenho de armazenamento e limitações.

Trabalhe com sua equipe de desenvolvimento de aplicativos para entender suas necessidades de capacidade de armazenamento e desempenho. Escolha o tamanho de VM apropriado para os nós do AKS para atender ou superar suas necessidades de desempenho. Crie aplicativos de linha de base regularmente para ajustar o tamanho da VM conforme necessário.

Observação

Por padrão, o tamanho e o desempenho dos discos gerenciados são atribuídos de acordo com a contagem de SKU e vCPU da VM selecionada. O dimensionamento padrão do disco do sistema operacional só é usado em novos clusters ou pools de nós quando não há suporte para discos do sistema operacional efêmero e um tamanho de disco padrão do sistema operacional não foi especificado. Para obter mais informações, consulte o Dimensionamento padrão do disco do sistema operacional.

Para obter mais informações sobre os tamanhos de VMs disponíveis, confira Tamanhos das máquinas virtuais do Linux no Azure.

Provisionar volumes dinamicamente

Orientação de melhor prática

Para reduzir a sobrecarga de gerenciamento e permitir a colocação em escala, evite criar e atribuir estaticamente volumes persistentes. Use o provisionamento dinâmico. Nas classes de armazenamento, defina a política de recuperação apropriada para minimizar os custos de armazenamento desnecessários depois que os pods forem excluídos.

Para anexar armazenamentos a pods, use volumes persistentes. Os volumes persistentes podem ser criados de forma manual ou dinâmica. A criação manual de volumes persistentes adiciona sobrecarga de gerenciamento e limita sua capacidade de dimensionar. Use o provisionamento persistente do volume dinamicamente para simplificar o gerenciamento do armazenamento e permitir que seus aplicativos se desenvolvam e sejam dimensionados conforme necessário.

Persistent volume claims in an Azure Kubernetes Services (AKS) cluster

Uma declaração de volume persistente (PVC) permite criar dinamicamente o armazenamento conforme necessário. Os discos do Azure subjacentes são criados conforme as solicitações dos pods. Na definição do pod, solicite que um volume seja criado e anexado a um caminho de montagem projetado.

No caso dos conceitos sobre como criar e usar volumes dinamicamente, confira Declarações de Volumes Persistentes.

Para ver esses volumes em ação, veja como criar e usar dinamicamente um volume persistente com os Discos do Azure ou os Arquivos do Azure.

Como parte de suas definições de classe de armazenamento, defina o reclaimPolicy adequado. Essa reclaimPolicy controla o comportamento do recurso de armazenamento do Azure subjacente quando o pod é excluído. O recurso de armazenamento subjacente pode ser excluído ou retido para uso futuro por um pod. Defina reclaimPolicy como retain ou delete.

Entenda as necessidades do seu aplicativo e implemente verificações constantes de armazenamento retido para minimizar a quantidade de armazenamento não utilizado, mas cobrado.

Para obter mais informações sobre as opções de classe de armazenamento, confira políticas de recuperação do armazenamento.

Proteja e faça backup de seus dados

Orientação de melhor prática

Faça backup dos seus dados usando uma ferramenta adequada ao seu tipo de armazenamento, como Velero ou Backup do Azure. Verifique a integridade e a segurança desses backups.

Quando seus aplicativos armazenam e consomem dados persistentes em discos ou arquivos, você precisa fazer backups ou instantâneos regulares desses dados. Os Discos do Azure podem usar tecnologias internas de instantâneo. Seus aplicativos talvez precisem liberar gravações no disco antes de executar a operação de instantâneo. O Velero pode fazer o backup de volumes persistentes juntamente com recursos e configurações adicionais do cluster. Se você não puder remover o estado de seus aplicativos, faça o backup dos dados de volumes persistentes e teste regularmente as operações de restauração para verificar a integridade dos dados e os processos necessários.

Entenda as limitações das diferentes abordagens de backups de dados e se será preciso desativar os dados antes de tirar o instantâneo. Os backups de dados não necessariamente permitem que você restaure seu ambiente de aplicativo da implantação do cluster. Para saber mais sobre esses cenários, confira Práticas recomendadas para a continuidade dos negócios e recuperação de desastres no AKS.

Próximas etapas

Este artigo se concentra nas práticas recomendadas de armazenamento de no AKS. Para obter mais informações sobre conceitos básicos de armazenamento no Kubernetes, confira Conceitos de armazenamento para aplicativos no AKS.