Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
- 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.
- 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.
- 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.
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
- Visão geral do design de carga de trabalho com estado do MongoDB
- Criar a infraestrutura para executar um cluster do MongoDB no AKS (Serviço de Kubernetes do Azure)
- Configurar e implantar um cluster do MongoDB no AKS (Serviço de Kubernetes do Azure)
- Implantar um aplicativo cliente para se conectar a um cluster do MongoDB no Serviço de Kubernetes do Azure (AKS)
- Validar a resiliência de um cluster do MongoDB no Serviço de Kubernetes do Azure (AKS)
- Validar a resiliência do MongoDB durante uma atualização do pool de nós do Serviço de Kubernetes do Azure (AKS)
- Configurar o monitoramento para um cluster do MongoDB no Serviço de Kubernetes do Azure (AKS)
PostgreSQL
- Visão geral do design de carga de trabalho com estado do PostgreSQL
- Criar a infraestrutura para executar um banco de dados PostgreSQL altamente disponível no AKS (Serviço de Kubernetes do Azure)
- Implantar um banco de dados PostgreSQL altamente disponível no AKS (Serviço de Kubernetes do Azure)
Valkey
- Visão geral do design de carga de trabalho com estado do Valkey
- Criar a infraestrutura para executar um cluster do Valkey no AKS (Serviço de Kubernetes do Azure)
- Configurar e implantar um cluster do Valkey no AKS (Serviço de Kubernetes do Azure)
- Validar a resiliência de um cluster do Valkey no Serviço de Kubernetes do Azure (AKS)
- Validar a resiliência do Valkey durante uma atualização do pool de nós do Serviço de Kubernetes do Azure (AKS)
Fluxo de ar do Apache
- Visão geral do design de carga de trabalho com estado do Apache Airflow
- Criar a infraestrutura para executar o Apache Airflow no Serviço de Kubernetes do Azure (AKS)
- Configurar e implantar o Airflow no Serviço de Kubernetes do Azure (AKS)
Apache Kafka com Strimzi
- Implantar um cluster Kafka no AKS (Serviço de Kubernetes do Azure) usando a visão geral do Strimzi
- Preparar a infraestrutura para implantar o Kafka no AKS (Serviço de Kubernetes do Azure)
- Configurar e implantar componentes Strimzi e Kafka no AKS (Serviço de Kubernetes do Azure)
- Configurar o monitoramento e a rede para um cluster Kafka no AKS (Serviço de Kubernetes do Azure)
GitHub Actions com Arquivos do Azure
- Visão geral da solução para implantar o GitHub Actions altamente disponível no AKS (Serviço de Kubernetes do Azure)
- Criar a infraestrutura para implantar o altamente disponível GitHub Actions no AKS (Serviço de Kubernetes do Azure)
- Implantar e testar o GitHub Actions no AKS (Serviço de Kubernetes 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