Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo apresenta uma visão geral sobre a execução e migração de cargas de trabalho com estado no Azure Kubernetes Service (AKS): padrões de design, opções de armazenamento e rampas de migração para bases de dados e serviços com estado.
O que são cargas de trabalho com estado?
Uma carga de trabalho com estado é uma aplicação que usa armazenamento de dados persistente para preservar o estado em várias instâncias, garantindo uma experiência de utilizador fluida e personalizada. Esse design é vital para serviços como serviços bancários on-line, compras on-line e e-mail, onde a consistência de dados, o histórico de sessões e a confiabilidade são cruciais. As cargas de trabalho stateful também oferecem eficiência em cenários de processamento de alto desempenho e quase em tempo real, que tiram partido de funcionalidades avançadas, como failover e recuperação, garantindo a continuidade dos negócios.
Embora as 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 da sobrecarga e dos custos de desempenho. É importante que você compreenda e considere as necessidades específicas do seu aplicativo para ajudar a determinar o equilíbrio certo entre estado e apatridia.
Dada a função crítica das cargas de trabalho com estado mantido, o Azure fornece várias abordagens para executá-las de forma eficiente. Esta seção descreve as práticas recomendadas para implantar cargas de trabalho com monitoração de estado no Serviço Kubernetes do Azure (AKS), ajudando desenvolvedores e organizações a escolher a opção mais adequada para suas necessidades.
Migração de cargas de trabalho com estado para AKS
Se estiver a migrar aplicações com estado persistente existentes para o AKS, siga este breve guia de migração para reduzir o risco e acelerar a disponibilização:
- Avalie os requisitos de armazenamento e disponibilidade: Documente IOPS, throughput, latência, durabilidade e necessidades de HA para os seus dados. Identifique se a sua carga de trabalho precisa de bloco (Azure Disk), ficheiro (Ficheiros do Azure) ou armazenamento especializado suportado por CSI.
- Escolha um driver CSI e uma topologia de armazenamento: Escolha o driver CSI suportado por AKS que cumpra esses requisitos (por exemplo, Azure Disk CSI para armazenamento em blocos, Ficheiros do Azure CSI para armazenamento partilhado, ou um CSI de terceiros para funcionalidades avançadas). Verifique se os requisitos de instantâneo de volume e de replicação são suportados.
- Implementar usando StatefulSets ou um operador: migrar réplicas com StatefulSets ou usar um operador de base de dados para gerir failover, adesão e backups. Valide o comportamento da restauração, do failover e da atualização faseada num ambiente de teste antes da entrada em produção.
Para 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 armazenamento, IOPS e HA, escolha armazenamento replicado em blocos ou CSI, e implemente com um operador StatefulSet ou PostgreSQL. Consulte as orientações PostgreSQL.
- MongoDB: Validar a topologia de write-concern, journaling e conjuntos de réplicas; selecionar armazenamento que cumpra os requisitos de rendimento e durabilidade, e implementar usando StatefulSets ou o operador MongoDB. Consulte as orientações do MongoDB.
Pilha de estrutura com estado do Kubernetes
A estrutura stateful do Kubernetes começa com uma pilha de base comum. Neste caso, utilize a stack KATE , uma stack popular e padronizada utilizada em muitos projetos de infraestrutura. A pilha KATE usa as seguintes ferramentas de código aberto:
Os guias AKS não implementam ArgoCD ou Terraform porque estão concebidos para operações iniciais. No entanto, à medida que a sua implementação se expande e os seus requisitos evoluem, deve ser mais fácil para si integrar o ArgoCD e o Terraform, já que os guias usam parte da pilha KATE.
Estrutura com estado do Kubernetes para Azure
Com a pilha de base estabelecida, agora precisamos aprimorar a estrutura para suportar cargas de trabalho com estado no Azure, especificamente integrando os recursos essenciais para operar a infraestrutura de dados no Serviço Kubernetes do Azure (AKS).
O suporte a cargas de trabalho com monitoração de estado complexas, como bancos de dados ou filas de mensagens, requer recursos de armazenamento que excedem as opções efêmeras. Especificamente, precisa de sistemas que ofereçam maior resiliência e disponibilidade para lidar com vários eventos, como falhas de aplicações ou reatribuições de cargas de trabalho para diferentes hosts. Pode alcançar esta resiliência utilizando o subsistema PersistentVolume, que compreende três recursos Kubernetes interligados: PersistentVolumes, PersistentVolumeClaims e StorageClasses. Este subsistema fornece uma API para usuários e administradores abstraírem os detalhes de como o armazenamento é fornecido a partir 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 utilizador, senhas e certificados. O Azure Key Vault fornece um armazenamento seguro para segredos que utilizamos para guardar os segredos necessários de estruturas com estado.
Também precisamos de um Controlador Kubernetes ou Operador Kubernetes, como o Secrets Store CSI Driver ou o External Secrets Operator para sincronizar os segredos do armazenamento de forma a criá-los como Segredos do Kubernetes.
Projetar e implantar cargas de trabalho com monitoração de estado no Azure
Se estiver a migrar uma carga de trabalho com estado para o AKS, comece pelo guia de introdução à migração de cargas de trabalho com estado para o AKS para rever as etapas de avaliação e validação específicas da migração.
As seções a seguir fornecem links para informações sobre design e implementação para cenários de carga de trabalho com estado no Azure.
MongoDB
- Visão geral do projeto de carga de trabalho com estado do MongoDB
- Criar a infraestrutura para executar um cluster MongoDB no Serviço Kubernetes do Azure (AKS)
- Configurar e implantar um cluster MongoDB no Serviço Kubernetes do Azure (AKS)
- Implantar um aplicativo cliente para se conectar a um cluster MongoDB no Serviço Kubernetes do Azure (AKS)
- Validar a resiliência de um cluster MongoDB no Serviço Kubernetes do Azure (AKS)
- Validar a resiliência do MongoDB durante uma atualização do pool de nós do Serviço Kubernetes do Azure (AKS)
- Configurar o monitoramento para um cluster MongoDB no Serviço Kubernetes do Azure (AKS)
PostgreSQL
- Visão geral do design da carga de trabalho com estado do PostgreSQL
- Criar a infraestrutura para executar um banco de dados PostgreSQL altamente disponível no Serviço Kubernetes do Azure (AKS)
- Implantar um banco de dados PostgreSQL altamente disponível no Serviço Kubernetes do Azure (AKS)
Valkey
- Visão geral do design de carga de trabalho com estado da Valkey
- Criar a infraestrutura para executar um cluster Valkey no Serviço Kubernetes do Azure (AKS)
- Configurar e implantar um cluster Valkey no Serviço Kubernetes do Azure (AKS)
- Validar a resiliência de um cluster Valkey no Serviço Kubernetes do Azure (AKS)
- Validar a resiliência do Valkey durante uma atualização do pool de nós do Serviço Kubernetes do Azure (AKS)
Apache Airflow
- Visão geral do design de cargas de trabalho com estado do Apache Airflow
- Criar a infraestrutura para executar o Apache Airflow no Serviço Kubernetes do Azure (AKS)
- Configurar e implantar o fluxo de ar no Serviço Kubernetes do Azure (AKS)
Apache Kafka com Strimzi
- Implantar um cluster Kafka no Serviço Kubernetes do Azure (AKS) usando a visão geral do Strimzi
- Preparar a infraestrutura para implantar o Kafka no Serviço Kubernetes do Azure (AKS)
- Configurar e implantar componentes Strimzi e Kafka no Serviço Kubernetes do Azure (AKS)
- Configurar monitoramento e rede para um cluster Kafka no Serviço Kubernetes do Azure (AKS)
Ações do GitHub com arquivos do Azure
- Visão geral da solução para implantar ações do GitHub altamente disponíveis no Serviço Kubernetes do Azure (AKS)
- Criar a infraestrutura para implantar ações do GitHub altamente disponíveis no Serviço Kubernetes do Azure (AKS)
- Implantar e testar ações do GitHub no Serviço Kubernetes do Azure (AKS)
Nota
Embora os StatefulSets forneçam identidades persistentes e armazenamento, os pools de nós Azure Spot não são recomendados para cargas de trabalho com estado crítico em produção. As VMs spot podem ser despejadas com pouco aviso quando o Azure recupera capacidade, resultando numa terminação abrupta de nós e potenciais atrasos na recuperação de volumes ou reescalonamento de pods. Para cargas de trabalho que dependem de dados persistentes e alta disponibilidade, utilize pools de nós regulares e mecanismos adequados de resiliência de armazenamento. Os conjuntos de nós do Azure Spot devem ser reservados para cargas de trabalho interrompíveis que possam tolerar a perda inesperada de um nó.
Contribuidores
A Microsoft mantém este artigo. Os seguintes colaboradores escreveram-no originalmente:
- Don High | Engenheiro Principal de Clientes
- Colin Mixon | Gerente de Produto
- Erin Schaffer | Desenvolvedora de Conteúdo 2