Editar

Compartilhar via


Arquitetura de linha de base para o Serviço de Kubernetes do Azure no Azure Stack HCI

Azure Stack HCI
Windows Server

Este cenário ilustra como projetar e implementar uma arquitetura de linha de base para o Serviço de Kubernetes do Microsoft Azure (AKS) em execução no Azure Stack HCI.

Este artigo inclui recomendações para rede, segurança, identidade, gerenciamento e monitoramento do cluster com base nos requisitos de negócios de uma organização. Ele faz parte de um conjunto de diretrizes de linha de base arquitetônica de dois artigos. Veja as recomendações para o design de rede aqui.

Importante

As informações neste artigo se aplicam ao AKS no Azure Stack HCI versão 22H2 e ao AKS-HCI no Windows Server. A versão mais recente do AKS é executada no Azure Stack HCI 23H2. Para obter mais informações sobre a versão mais recente, consulte a documentação do AKS no Azure Stack HCI versão 23H2.

Arquitetura

A imagem a seguir mostra a arquitetura de linha de base para o Serviço de Kubernetes do Azure no Azure Stack HCI ou clusters de failover de datacenter do Windows Server 2019/2022:

Imagem conceitual da arquitetura de linha de base para o serviço Azure Kubernetes no Azure Stack HCI.

Baixe um Arquivo Visio dessa arquitetura.

A arquitetura consiste nos componentes e recursos a seguir:

  • Azure Stack HCI (22H2). Uma solução de cluster de infraestrutura hiperconvergente (HCI) que hospeda cargas de trabalho virtualizadas do Windows e Linux e seu armazenamento em um ambiente local híbrido. O cluster do Azure Stack HCI é implementado como um cluster de 2 a 8 nós.
  • Serviço Azure Kubernetes (AKS) no Azure Stack HCI. Uma implementação local do AKS, que automatiza a execução de aplicativos em contêineres em escala.
  • O Azure Arc é um serviço baseado em nuvem que estende o modelo de gerenciamento baseado no Azure Resource Manager para recursos que não sejam do Azure, como máquinas virtuais (VMs) não Azure, clusters do Kubernetes e bancos de dados em contêineres.
  • Azure Policy. Um serviço baseado em nuvem que ajuda a impor padrões organizacionais e avaliar a conformidade em escala avaliando os recursos do Azure (incluindo habilitados para Arc) para as propriedades desses recursos para regras de negócios. Esses padrões também incluem a Política do Azure para Kubernetes, que aplica políticas às cargas de trabalho em execução dentro do cluster.
  • Azure Monitor. Um serviço baseado em nuvem que maximiza a disponibilidade e o desempenho de seus aplicativos e serviços, fornecendo uma solução abrangente para coletar, analisar e atuar na telemetria de seus ambientes locais e de nuvem.
  • Microsoft Defender para Nuvem. Um sistema unificado de gerenciamento de segurança de infraestrutura que fortalece a postura de segurança de seus data centers e fornece proteção avançada contra ameaças em suas cargas de trabalho híbridas na nuvem e no local.
  • Automação do Azure. Fornece um serviço de configuração e automação baseado em nuvem que dá suporte a gerenciamento consistente em seus ambientes do Azure e não do Azure.
  • Velero. Uma ferramenta de código aberto que oferece suporte a backup sob demanda e backup agendado e restaura todos os objetos no cluster do Kubernetes.
  • Armazenamento de Blobs do Azure. Armazenamento de objetos extremamente escalonável e seguro para cargas de trabalho nativas de nuvem, arquivos, data lakes, computação de alto desempenho e machine learning.

Componentes

Detalhes do cenário

Possíveis casos de uso

  • Implemente cargas de trabalho baseadas em contêiner altamente disponíveis em uma implementação local do Kubernetes do AKS.
  • Automatize a execução de aplicativos conteinerizados em escala.
  • Reduza o custo total de propriedade (TCO) por meio de soluções certificadas pela Microsoft, automação baseada em nuvem, gerenciamento centralizado e monitoramento centralizado.

Hardware certificado

Use o hardware certificado pelo Azure Stack HCI, que fornece configurações de Inicialização Segura, UEFI (United Extensible Firmware Interface) e TPM (Trusted Platform Module) prontas para uso. Os requisitos de computação dependem do aplicativo e do número de nós de trabalho executados no AKS no cluster. Use vários nós físicos para implantação do Azure Stack HCI ou pelo menos um cluster de failover do Windows Server Datacenter de dois nós para obter alta disponibilidade. É necessário que todos os servidores tenham o mesmo fabricante e modelo, usando processadores Intel Nehalem de 64 bits, AMD EPYC ou posteriores compatíveis com SLAT (conversão de endereços de segundo nível).

Estratégias de implantação de cluster

O AKS simplifica a implantação local do Kubernetes fornecendo assistentes ou cmdlets do PowerShell que você pode usar para configurar o Kubernetes e complementos essenciais do Azure Stack HCI. Um cluster AKS tem os seguintes componentes no Azure Stack HCI:

  • Cluster de gerenciamento. Implante o cluster de gerenciamento em uma máquina virtual (VM) altamente disponível que esteja sendo executada no Azure Stack HCI ou em cluster de failover do Windows Server 2019/2022 Datacenter. O cluster de gerenciamento é responsável por implantar e gerenciar vários clusters de carga de trabalho e inclui os seguintes componentes:
    • Servidor API. Interage com as ferramentas de gestão.
    • Balanceador de carga. Gerencia regras de balanceamento de carga para o servidor de API do cluster de gerenciamento.
  • Clusters de carga de trabalho. Implemente componentes de plano de controle e componentes de nó de trabalho altamente disponíveis. Os aplicativos em contêineres são executados em um cluster de carga de trabalho. Para obter o isolamento de aplicativos, você pode implantar até oito clusters de carga de trabalho. O cluster de carga de trabalho consiste nos seguintes componentes:
    • Painel de controle. É executado em uma distribuição do Linux e contém componentes do servidor de API para interação com a API do Kubernetes e um repositório de chave-valor distribuído, etcd, para armazenar toda a configuração e os dados do cluster.
    • Balanceador de carga. É executado em uma VM do Linux e fornece serviços com balanceamento de carga para o cluster de carga de trabalho.
    • Nós de trabalho. Executado em um sistema operacional Windows ou Linux que hospeda aplicativos em contêineres.
    • Recursos do Kubernetes. Os pods representam uma única instância do aplicativo, que geralmente tem um mapeamento 1:1 com um contêiner, mas determinados pods podem conter vários contêineres. As implantações representam um ou mais pods idênticos. Pods e implantações são agrupados logicamente em um namespace que controla o acesso ao gerenciamento dos recursos.

Requisitos de rede

O Kubernetes fornece uma camada de abstração para a rede virtual conectando os nós do Kubernetes à rede virtual. Ele também fornece conectividade de entrada e saída para pods por meio do componente kube-proxy . A plataforma Azure Stack HCI fornece maior simplificação da implantação configurando a VM do balanceador de carga HAProxy .

Observação

Para obter informações sobre como projetar e implementar conceitos de rede para implantar nós AKS em clusters do Azure Stack HCI e Windows Server, consulte o segundo artigo desta série, Arquitetura de rede.

A arquitetura usa uma rede virtual que aloca endereços IP usando uma das seguintes opções de rede:

  • Rede IP estática. Usa um pool de endereços estático e definido para todos os objetos na implantação. Ele adiciona benefícios extras e garante que a carga de trabalho e a aplicação estejam sempre acessíveis. Esse é o método recomendado.
  • Rede DHCP. Aloca endereços IP dinâmicos para os nós Kubernetes, VMs subjacentes e balanceadores de carga usando um servidor DHCP (Dynamic Host Configuration Protocol).

Um pool IP virtual é um intervalo de endereços IP reservados usado para alocar endereços IP para o servidor de API de cluster do Kubernetes e para serviços do Kubernetes.

Use o Project Calico for Kubernetes para obter outros recursos de rede, como diretiva de rede e controle de fluxo.

Requisitos de armazenamento

Para cada servidor no cluster, use os mesmos tipos de unidades que são do mesmo tamanho e modelo. O Azure Stack HCI funciona com unidades de memória SATA (Serial Advanced Technology Attachment), SAS (Serial Attached SCSI), NVMe (Non-Volatile Memory Express) ou unidades de memória persistentes fisicamente conectadas a um servidor cada. Para volumes de cluster, a HCI usa a tecnologia de armazenamento definido por software (Storage Spaces Direct) para combinar os drives físicos no pool de armazenamento para tolerância a falhas, escalabilidade e desempenho. Os aplicativos executados no Kubernetes no Azure Stack HCI geralmente esperam que as seguintes opções de armazenamento estejam disponíveis para eles:

  • Volumes. Representa uma maneira de armazenar, recuperar e persistir dados entre pods e por meio do ciclo de vida do aplicativo.
  • Volumes persistentes. Um recurso de armazenamento criado e gerenciado pela API do Kubernetes e que pode existir além da vida útil de um pod individual.

Considere a definição de classes de armazenamento para diferentes níveis e locais para otimizar o custo e o desempenho. As classes de armazenamento oferecem suporte ao provisionamento dinâmico de volumes persistentes e definem a reclaimPolicy para especificar a ação do recurso de armazenamento subjacente para gerenciar volumes persistentes quando o pod é excluído.

Gerenciar AKS no Azure Stack HCI

Você pode gerenciar o AKS no Azure Stack HCI usando as seguintes opções de gerenciamento:

  • Windows Admin Center. Oferece uma interface do usuário intuitiva para o operador do Kubernetes gerenciar o ciclo de vida dos clusters do Serviço Kubernetes do Azure no Azure Stack HCI.
  • PowerShell. Facilita o download, a configuração e a implantação do AKS no Azure Stack HCI. O módulo PowerShell também oferece suporte à implantação, configuração de outros clusters de carga de trabalho e reconfiguração de clusters existentes.

Requisitos do Active Directory

Integre o AKS nos clusters de failover do Azure Stack HCI ou do Windows Server Datacenter com um ambiente dos Serviços de Domínio Active Directory (AD DS) para um gerenciamento ideal. Quando possível, use unidades organizacionais separadas para os servidores e serviços do AKS no Azure Stack HCI para fornecer acesso e permissões de controle mais granulares. A integração do Active Directory com o Serviço Kubernetes do Azure no Azure Stack HCI permite que um usuário em uma máquina ingressada no domínio do Windows se conecte ao servidor de API (com kubectl) usando suas credenciais de logon único (SSO).

Recomendações

As seguintes recomendações aplicam-se à maioria dos cenários. Siga as recomendações, a menos que você tenha um requisito específico que o substitua.

Integrar o AKS em implantações de HCI com o Azure Arc

Para minimizar o TCO, integre implantações do AKS ao Azure Arc. Considere usar os seguintes serviços do Azure:

  • Insights de Contêiner do Azure Monitor. Monitora o desempenho de cargas de trabalho de contêiner em execução em clusters Linux e Windows. Ele coleta métricas de memória e processador, de controladores, nós e contêineres por meio da API de métrica. Com o Insights de contêiner, você pode identificar a utilização da memória e do processador, detectar o desempenho geral do pod, entender o comportamento do cluster e configurar alertas para monitoramento proativo.
  • Recursos de automação. O AKS fornece uma ampla gama de recursos de automação, com atualizações do sistema operacional combinadas com atualizações de pilha completa, incluindo firmware e drivers fornecidos por fornecedores e parceiros do Azure Stack HCI. Você pode executar o Windows PowerShell localmente de um dos servidores HCI do Azure Stack ou remotamente de um computador de gerenciamento. A integração com a Automação do Azure e o Azure Arc facilita uma ampla variedade de cenários de automação para cargas de trabalho virtualizadas e em contêineres .
  • Velero e Azure Blob Storage. Velero é uma ferramenta de código aberto que suporta backup sob demanda, backup agendado e restauração de todos os objetos no cluster Kubernetes para quaisquer recursos definidos e armazenados em um banco de dados etcd como uma definição de recurso personalizado (CRD) do Kubernetes. Ele fornece backup de recursos e volumes do Kubernetes para um cluster inteiro ou parte de um cluster usando namespaces ou seletores de rótulo. Armazene o conjunto de backup criado com a ferramenta Velero em uma conta de armazenamento do Azure em um contêiner de blob.
  • Cluster do Kubernetes habilitado para Azure Arc Fornece representação do Azure Resource Manager do AKS no cluster HCI do Azure Stack. Implante agentes habilitados para Arco do Azure em um namespace do Kubernetes para coletar logs e métricas, coletar metadados de cluster, versão do cluster e contagem de nós e garantir que os agentes estejam exibindo o desempenho ideal.
  • Azure Policy. Implante e imponha políticas de segurança internas no cluster AKS usando a Política do Azure. Você também pode usar a definição de política personalizada para impor o GitOps, que é a prática de declarar o estado desejado da configuração do Kubernetes (implantações, namespaces e assim por diante) em um repositório Git.
  • Azure Policy para Kubernetes. Gerencie políticas de cluster internas implementadas pelo Gatekeeper, implante a definição de política no cluster como modelo de restrição e relate o estado de conformidade de seus clusters Kubernetes de um só lugar.
  • RBAC do Azure. Use para atribuição de função e para gerenciar o acesso ao Kubernetes habilitado para Azure Arc.

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Confiabilidade

  • Implemente uma VM altamente disponível para o cluster de gerenciamento e múltiplos hosts no cluster Kubernetes para atender ao nível mínimo de disponibilidade para cargas de trabalho.
  • Backup e restauração de clusters de carga de trabalho com o Velero e Armazenamento de Blobs do Azure. Defina metas de disponibilidade e recuperação para atender aos requisitos de negócio.
  • As implantações do AKS usam clustering de failover e a migração dinâmica para alta disponibilidade e tolerância a falhas. A migração dinâmica é um recurso do Hyper-V que permite mover de forma transparente as máquinas virtuais em execução de um host do Hyper-V para outro sem tempo de inatividade percebido.
  • Configure implantações para usar recursos do Kubernetes, como Implantações, Mapeamento de Afinidade e ReplicaSets, para garantir que os pods sejam resilientes em cenários de interrupção.
  • Você deve garantir que os serviços referenciados na seção de Arquitetura tenham suporte na região na qual o Azure Arc está implantado.
  • Considere limitar o uso de imagens de contêiner público e extrair apenas de registros de contêiner para os quais você tenha controle sobre o SLA, como o ACR.

Segurança

Concentre-se em toda a pilha protegendo o host e os contêineres.

Segurança da infraestrutura

  • Use o hardware certificado HCI do Azure Stack que fornece configurações de Inicialização Segura, UEFI e TPM prontas para uso. Essas tecnologias, combinadas com a segurança baseada em virtualização (VBS), ajudam a proteger cargas de trabalho sensíveis à segurança. Visite as soluções HCI do Azure Stack para obter soluções validadas.
  • Use a Inicialização Segura para garantir que o servidor inicialize apenas o software confiável de um fabricante de equipamento original.
  • Use UEFI para controlar o processo de inicialização do servidor.
  • Use o TPM para armazenar chaves criptográficas e isolar todas as funções relacionadas à segurança baseadas em hardware.
  • A Criptografia de Unidade de Disco BitLocker permite criptografar volumes de Espaços de Armazenamento Diretos em repouso.
  • Configure as diretivas de rede do Calico para definir regras de isolamento de rede entre contêineres.
  • Para obter maiores requisitos de segurança, considere a implantação de um cluster de carga de trabalho em um servidor Windows dedicado.
  • Use o Microsoft Defender for Cloud, disponível por meio do Windows Admin Center, para gerenciar centralmente as configurações de segurança para servidores e clusters. Ele fornece proteção contra ameaças para seus clusters Kubernetes habilitados para Arc. A extensão do Microsoft Defender for Cloud coleta dados de todos os nós (mestre) do painel de controle no cluster e os envia para o back-end do Azure Defender para Kubernetes na nuvem para análise posterior.
  • Proteger a comunicação com certificados.
  • Gire as chaves de criptografia do armazenamento secreto do Kubernetes (etcd) usando o plug-in KMS (Servidor de Gerenciamento de Chaves).

Segurança de aplicativo

  • Use a extensão do provedor Azure Key Vault Secrets em seu AKS no Azure Stack HCI para proteger ainda mais seus segredos usados por diferentes aplicativos, armazenando-os no serviço Azure Key Vault.
  • Use o complemento Open Service Mesh AKS para proteger a comunicação serviço a serviço habilitando o TLS mútuo (mTLS). Você também pode usar esse complemento para definir e executar políticas de controle de acesso refinadas para serviços.
  • Use a Política do Azure para Kubernetes para impor políticas de segurança de cluster, como nenhum pod privilegiado.
  • Use um Registro de Contêiner do Azure que contenha a verificação de vulnerabilidades em seu repositório de contêiner.
  • Use contas de segurança gerenciadas por grupo para cargas de trabalho do Windows com um host que não ingressou no domínio. (Aplicável somente para o Windows Server.)

Segurança do contêiner

  • Proteja o ambiente de host e daemon removendo serviços desnecessários.
  • Mantenha os segredos fora das imagens e monte-os apenas através do mecanismo de orquestração de contêineres.
  • Proteja as imagens em um Registro de Contêiner do Azure que ofereça suporte à verificação de vulnerabilidades e ao RBAC.
  • Use o isolamento de contêineres e evite executar contêineres no modo privilegiado para evitar que invasores escalem os privilégios se o contêiner for comprometido.

Otimização de custo

Excelência operacional

  • Assistente para Criar Cluster. Experimente uma experiência simplificada de provisionamento e gerenciamento com o Windows Admin Center. O Assistente para Criar Cluster no Windows Admin Center fornece uma interface com assistente que orienta você pelo processo de criação de um cluster HCI do Azure Stack. O Assistente para Criar Cluster é uma compensação para facilitar a criação de scripts de implantação que você pode controlar o código-fonte para auditoria e repetibilidade em várias implantações. Da mesma forma, o Windows Admin Center simplifica o processo de gerenciamento de VMs HCI do Azure Stack.
  • Azure Arc. Integre-se ao Azure Arc ou a uma variedade de serviços do Azure que fornecem recursos adicionais de gerenciamento, manutenção e resiliência (por exemplo, Azure Monitor e análise de log).
  • GitOps. Em vez de configurar manualmente os componentes do Kubertnets, use ferramentas automatizadas para aplicar configurações a um cluster do Kubernetes, pois essas configurações são verificadas em um repositório de origem. Esse processo geralmente é chamado de GitOps e as soluções populares do GitOps para Kubernetes incluem Flux e Argo CD. Nessa arquitetura, recomendamos usar a extensão GitOps fornecida pela Microsoft, que é baseada no Flux.
  • Open Service Mesh (OSM) habilitado para o Azure Arc Uma malha de serviço leve, extensível e nativa da nuvem que permite aos usuários gerenciar, proteger e obter recursos de observabilidade prontos para uso de maneira uniforme para ambientes de microsserviços altamente dinâmicos.

Eficiência de desempenho

  • Use o hardware certificado pelo Azure Stack HCI para melhorar o tempo de atividade e o desempenho do aplicativo, simplificar o gerenciamento e as operações e ter o menor custo total de propriedade.
  • Entenda os limites do AKS no Azure Stack HCI. A Microsoft oferece suporte ao AKS em implantações do Azure Stack com um máximo de oito servidores físicos por cluster, oito clusters Kubernetes e 200 VMs.
  • O dimensionamento do AKS no Azure Stack HCI depende do número de nós de trabalho e clusters de destino. Para dimensionar corretamente o hardware para os nós de trabalho, você precisa antecipar o número de pods, contêineres e nós de trabalho em um cluster de destino. Você deve garantir que pelo menos 15% da capacidade de HCI do Azure Stack esteja reservada para falhas planejadas e não planejadas. Para eficiência de desempenho, use os recursos de computação de forma eficiente para atender aos requisitos do sistema e manter essa eficiência à medida que a demanda muda e as tecnologias evoluem. A regra geral é que, se um nó ficar offline durante a manutenção ou durante uma falha não planejada, os nós restantes poderão ter capacidade suficiente para gerenciar o aumento da carga.
  • Considere aumentar o tamanho da VM do balanceador de carga se você estiver executando muitos serviços Kubernetes em cada cluster de destino.
  • O AKS no Azure Stack HCI distribui os nós de trabalho para cada pool de nós em um cluster de destino usando a lógica de posicionamento HCI do Azure Stack.
  • Planeje reservas de endereço IP para configurar hosts do AKS, clusters de carga de trabalho, servidores de API do cluster, Serviços do Kubernetes e serviços de aplicativo. A Microsoft recomenda reservar um mínimo de 256 endereços IP para implantação do AKS no Azure Stack HCI.
  • Considere implementar um controlador de entrada que funcione na Camada 7 e use regras mais inteligentes para distribuir o tráfego do aplicativo.
  • Implemente a otimização do desempenho da rede para alocação de largura de banda de tráfego.
  • Use a aceleração da GPU (unidade de processamento gráfico) para cargas de trabalho extensas.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autores principais:

Outros colaboradores:

Próximas etapas