Cargas de trabalho com estado no AKS (Serviço de Kubernetes do Azure)

Este artigo fornece uma visão geral sobre como executar e migrar cargas de trabalho com estado no AKS (Serviço de Kubernetes do Azure): padrões de arquitetura, opções de armazenamento e abordagens iniciais de migração para bancos de dados e serviços com estado.

O que são cargas de trabalho com estado?

Uma carga de trabalho com estado é um aplicativo que usa o armazenamento de dados persistente para preservar o estado em várias instâncias, garantindo uma experiência de usuário perfeita e personalizada. Esse design é vital para serviços como bancos online, compras online e email, em que a consistência dos dados, o histórico de sessão e a confiabilidade são cruciais. Cargas de trabalho com estado também oferecem eficiência em cenários de processamento quase em tempo real e de alto desempenho que se beneficiam de recursos avançados, como failover e recuperação, garantindo a continuidade dos negócios.

Embora cargas de trabalho com estado ofereçam muitos benefícios, elas também apresentam certos desafios. Por exemplo, cargas de trabalho com estado geralmente introduzem padrões de processamento complexos que podem levar a um aumento dos custos com sobrecarga e desempenho. É importante que você entenda e considere as necessidades específicas do aplicativo para ajudar a determinar o equilíbrio certo entre o uso com estado e sem estado.

Dada a função crítica das cargas de trabalho com estado, o Azure fornece várias abordagens para executá-las de maneira eficaz. Esta seção descreve as práticas recomendadas para implantar cargas de trabalho com estado no AKS (Serviço de Kubernetes do Azure), ajudando desenvolvedores e organizações a escolher a opção mais adequada para as necessidades deles.

Migrando cargas de trabalho com estado para o AKS

Se você estiver migrando aplicativos com estado existentes para o AKS, siga este breve guia de migração para reduzir riscos e acelerar a entrega:

  1. Avaliar os requisitos de armazenamento e disponibilidade: IOPS do documento, taxa de transferência, latência, durabilidade e necessidades de HA para seus dados. Identifique se sua carga de trabalho precisa de armazenamento em bloco (Azure Disk), armazenamento de arquivos (Arquivos do Azure) ou armazenamento especializado com suporte de CSI.
  2. Escolha um driver CSI e uma topologia de armazenamento: escolha o driver CSI compatível com AKS que corresponda a esses requisitos (por exemplo, Azure Disk CSI para armazenamento em bloco, Arquivos do Azure CSI para armazenamento de arquivos compartilhados ou um CSI de terceiros para recursos avançados). Verifique se os requisitos de instantâneo de volume e replicação são suportados.
  3. Implantar usando StatefulSets ou um operador: Migre as réplicas com StatefulSets ou use um operador de banco de dados para gerenciar failover, associação e backups. Valide o comportamento de restauração, failover e atualização contínua em um ambiente de teste antes da implantação.

Para obter mais informações, consulte Considerações para migrar cargas de trabalho com estado para o AKS.

Cenários comuns de migração com estado

  • PostgreSQL: avalie as necessidades de IOPS de armazenamento e ha, escolha o armazenamento replicado com suporte de bloco ou CSI e implante com um StatefulSet ou um operador PostgreSQL. Consulte as diretrizes do PostgreSQL.
  • MongoDB: Valide o controle de gravação, o registro em diário e a topologia do conjunto de réplicas; selecione o armazenamento que atenda aos requisitos de throughput e durabilidade e implante usando StatefulSets ou o operador do MongoDB. Consulte as diretrizes do MongoDB.

Pilha de base de estrutura com estado do Kubernetes

A estrutura com estado do Kubernetes começa com uma pilha de base comum. Nesse caso, use a pilha KATE uma pilha popular e padronizada usada em muitos projetos de infraestrutura. A pilha KATE usa as seguintes ferramentas de código aberto:

Os guias do AKS não implementam o ArgoCD ou o Terraform porque foram projetados para operações de dia seguinte. No entanto, à medida que as escalas de implantação e os requisitos evoluem, deve ser mais fácil integrar o ArgoCD e o Terraform, pois os guias usam parte da pilha KATE.

Estrutura com estado do Kubernetes para o Azure

Com a pilha de base estabelecida, agora precisamos aprimorar a estrutura para dar suporte a cargas de trabalho com estado no Azure, especificamente integrando os recursos essenciais para executar a infraestrutura de dados no AKS (Serviço de Kubernetes do Azure).

O suporte a cargas de trabalho complexas com estado, como bancos de dados ou filas de mensagens, requer recursos de armazenamento que excedem as opções efêmeras. Especificamente, você precisa de sistemas que ofereçam maior resiliência e disponibilidade para lidar com vários eventos, como falhas de aplicativo ou reatribuções de carga de trabalho para hosts diferentes. Você pode obter essa resiliência usando o subsistema PersistentVolume, que inclui três recursos do Kubernetes interconectados: PersistentVolumes, PersistentVolumeClaims e StorageClasses. Esse subsistema fornece uma API para usuários e administradores abstraírem os detalhes de como o armazenamento é fornecido de como o armazenamento é consumido.

A maioria das cargas de trabalho com estado precisa de dados de segredos, como cadeias de conexão, nomes de usuário, senhas e certificados. O Azure Key Vault fornece um repositório seguro para segredos que usamos para armazenar os segredos de estruturas com estado necessários.

Também precisamos de um Controlador do Kubernetes ou Operador Kubernetes, como o Driver do CSI do Repositório de Segredos ou o Operador de Segredos Externos para sincronizar segredos do repositório secreto como Segredos do Kubernetes.

Captura de tela de um diagrama mostrando a estrutura com estado do Kubernetes para o Azure.

Projetar e implantar cargas de trabalho com estado no Azure

Se você estiver migrando uma carga de trabalho stateful existente para o AKS, comece com o Guia de migração de cargas de trabalho stateful para o AKS para revisar as etapas de avaliação e validação específicas da migração.

As seções a seguir fornecem links para informações de design e implantação para cenários de carga de trabalho com estado no Azure.

MongoDB

PostgreSQL

Valkey

Fluxo de ar do Apache

Apache Kafka com Strimzi

GitHub Actions com Arquivos do Azure

Note

Embora os StatefulSets forneçam identidades e armazenamento persistentes, os pools de nós Spot do Azure não são recomendados para cargas de trabalho com estado críticas para produção. As VMs Spot podem ser removidas com pouco aviso prévio quando o Azure recupera capacidade, resultando em encerramento abrupto do nó e possíveis atrasos na recuperação do volume ou no reagendamento do pod. Para cargas de trabalho que dependem de dados persistentes e alta disponibilidade, use pools de nós regulares e mecanismos de resiliência de armazenamento apropriados. Os pools de nós Spot do Azure devem ser reservados para cargas de trabalho interrompíveis que podem tolerar a perda inesperada de nós.

Colaboradores

A Microsoft atualiza este artigo. Os seguintes colaboradores o escreveram originalmente:

  • Don High | Engenheiro de Cliente Principal
  • Colin Mixon | Gerente de Produto
  • Erin Schaffer | Desenvolvedora de Conteúdo 2