Partilhar via


Práticas recomendadas para otimização de custos no Serviço Kubernetes do Azure (AKS)

A otimização de custos consiste em maximizar o valor dos recursos e, ao mesmo tempo, minimizar despesas desnecessárias em seu ambiente de nuvem. Esse processo envolve a identificação de opções de configuração econômicas e a implementação de práticas recomendadas para melhorar a eficiência operacional. Um ambiente AKS pode ser otimizado para minimizar os custos, levando em consideração os requisitos de desempenho e confiabilidade.

Neste artigo, você aprende sobre:

  • Acompanhamento holístico e práticas de FinOps.
  • Seleção estratégica de infraestruturas.
  • Ajuste dinâmico ao tamanho ideal e escalamento automático.
  • Aproveitar os descontos do Azure para obter economias substanciais.

Adote o FinOps para construir uma cultura de redução de custos

As operações financeiras (FinOps) são uma disciplina que combina responsabilidade financeira com gestão e otimização na nuvem. Ele se concentra em promover o alinhamento entre as equipes de finanças, operações e engenharia para entender e controlar os custos da nuvem. A fundação FinOps tem vários projetos notáveis, como o FinOps Framework e a FOCUS Specification.

Para obter mais informações, consulte O que é FinOps?

Preparar o ambiente do aplicativo

Avalie a família SKU

É importante avaliar os requisitos de recursos do seu aplicativo antes da implantação. Pequenas cargas de trabalho de desenvolvimento têm necessidades de infraestrutura diferentes das grandes cargas de trabalho prontas para produção. Embora uma combinação de configurações de CPU, memória e capacidade de rede influencie fortemente a relação custo-benefício de uma SKU, considere os seguintes tipos de máquina virtual (VM):

Família SKU Descrição Caso de utilização
Máquinas Virtuais do Azure Spot A escala de conjuntos de máquinas virtuais do Azure Spot oferece suporte a pools de nós Spot e é implantada num único domínio de falha, sem garantias de alta disponibilidade ou contrato de nível de serviço (SLA). As VMs spot permitem que você aproveite a capacidade não utilizada do Azure com descontos significativos (até 90%, em comparação com os preços pré-pagos). Se o Azure precisar recuperar capacidade, a infraestrutura do Azure desalojará os nós Spot. Ideal para ambientes de desenvolvimento/teste, cargas de trabalho que podem lidar com interrupções, como trabalhos de processamento em lote, e cargas de trabalho com tempo de execução flexível.
Processadores baseados na arquitetura Arm (Arm64) As VMs Arm64 são eficientes em termos de energia e econômicas, mas não comprometem o desempenho. Com o suporte ao pool de nós Arm64 no AKS, você pode criar nós de agente do Ubuntu Arm64 e até mesmo misturar nós de arquitetura Intel e ARM dentro de um cluster. Essas VMs ARM são projetadas para executar com eficiência cargas de trabalho dinâmicas e escaláveis e podem oferecer um desempenho de preço até 50% melhor do que VMs comparáveis baseadas em x86 para cargas de trabalho escaláveis. Ideal para servidores Web ou de aplicativos, bancos de dados de código aberto, aplicativos nativos da nuvem, servidores de jogos e muito mais.
SKUs otimizados para GPU Dependendo da natureza da sua carga de trabalho, considere o uso de SKUs de VM otimizadas para computação, memória, armazenamento ou até mesmo para unidades de processamento gráfico (GPU). Os tamanhos de VM de GPU são VMs especializadas que estão disponíveis com GPUs únicas, múltiplas e fracionárias. Os pools de nós Linux habilitados para GPU no AKS são melhores para cargas de trabalho de computação intensiva, como renderização gráfica, treinamento de modelos grandes e inferência.

Nota

O custo da computação varia entre as regiões. Ao escolher uma região menos dispendiosa para executar cargas de trabalho, esteja ciente do impacto potencial da latência, bem como dos custos de transferência de dados. Para saber mais sobre SKUs de VM e suas características, consulte Tamanhos para máquinas virtuais no Azure.

Consultar as opções de armazenamento

Para obter mais informações sobre opções de armazenamento e considerações de custo relacionadas, consulte os seguintes artigos:

Usar configurações predefinidas de agrupamento

Pode ser difícil escolher o SKU de VM certo, regiões, número de nós e outras opções de configuração. As configurações predefinidas de cluster no portal do Azure descarregam esse desafio inicial, fornecendo configurações recomendadas para diferentes ambientes de aplicativos que são conscientes dos custos e do desempenho. A predefinição Desenvolvimento/Teste é melhor para desenvolver novas cargas de trabalho ou testar cargas de trabalho existentes. A predefinição de Economia de Produção é melhor para atender ao tráfego de produção de forma económica se as suas cargas de trabalho puderem suportar interrupções. Os recursos não críticos estão desativados por padrão, e os valores predefinidos podem ser modificados a qualquer momento.

Considere a multitenância

O serviço AKS oferece flexibilidade na forma como o utilizador opera clusters multilocatários e isola recursos. Para uma multilocação amigável, você pode compartilhar clusters e infraestrutura entre equipes e unidades de negócios por meio do isolamento lógico. Os namespaces do Kubernetes formam o limite de isolamento lógico para cargas de trabalho e recursos. O compartilhamento da infraestrutura reduz a sobrecarga de gerenciamento de cluster e, ao mesmo tempo, melhora a utilização de recursos e a densidade de pods dentro do cluster. Para saber mais sobre multilocação no AKS e determinar se ela é adequada às suas necessidades organizacionais, consulte Considerações sobre AKS para multilocação e Projetar clusters para multilocação.

Aviso

Os ambientes Kubernetes não são totalmente seguros para multilocação hostil. Se algum locatário na infraestrutura compartilhada não puder ser confiável, é necessário mais planejamento para evitar que os locatários afetem a segurança de outros serviços.

Considere os limites do isolamento físico. Nesse modelo, equipes ou cargas de trabalho são atribuídas ao seu próprio cluster. A gestão adicional e o acréscimo nas despesas gerais financeiras representarão um compromisso.

Criar aplicações nativas da cloud

Torne o seu contentor o mais enxuto possível

Um contêiner enxuto refere-se à otimização do tamanho e da pegada de recursos do aplicativo conteinerizado. Verifique se a sua imagem de base é mínima e contém apenas as dependências necessárias. Remova todas as bibliotecas e pacotes desnecessários. Uma imagem de contêiner menor acelera os tempos de implantação e aumenta a eficiência das operações de dimensionamento. O Streaming de Artefactos no AKS permite-lhe transmitir imagens de contentor a partir do Azure Container Registry (ACR). Ele puxa apenas a camada necessária para a inicialização inicial do pod, reduzindo o tempo de tração para imagens maiores de minutos para segundos.

Impor cotas de recursos

As cotas de recursos fornecem uma maneira de reservar e limitar recursos em uma equipe de desenvolvimento ou projeto. As cotas são definidas em um namespace e podem ser definidas em recursos de computação, recursos de armazenamento e contagens de objetos. Quando você define cotas de recursos, isso impede que namespaces individuais consumam mais recursos do que os alocados. As cotas de recursos são úteis para clusters multilocatários onde as equipes estão compartilhando infraestrutura.

Usar início/paragem de cluster

Quando deixados sem supervisão, pequenos clusters de desenvolvimento/teste podem acumular custos desnecessários. Você pode desativar clusters que não precisam ser executados o tempo todo usando o recurso de início e parada de cluster. Esse recurso desliga todos os pools de nós do sistema e do usuário para que você não pague por computação extra. O estado do cluster e dos objetos é mantido quando você inicia o cluster novamente.

Utilizar reservas de capacidade

As reservas de capacidade permitem reservar capacidade de computação em uma região do Azure ou zona de disponibilidade por qualquer período de tempo. A capacidade reservada está disponível para uso imediato até que a reserva seja excluída. Associar um grupo de reservas de capacidade existente a uma pool de nós garante a capacidade alocada para a sua pool de nós e ajuda a evitar potenciais aumentos de preços sob demanda em períodos de alto consumo de capacidade computacional.

Monitore seu ambiente e gastos

Aumente a visibilidade com o Microsoft Cost Management

O Microsoft Cost Management oferece um amplo conjunto de recursos para ajudar com orçamento, previsão e visibilidade de custos dentro e fora do cluster. A visibilidade adequada é essencial para decifrar tendências de gastos, identificar oportunidades de otimização e aumentar a responsabilidade entre desenvolvedores de aplicativos e equipes de plataforma. Habilite o suplemento AKS Cost Analysis para um detalhamento granular dos custos do cluster por construções do Kubernetes, juntamente com as categorias de Computação, Rede e Armazenamento do Azure.

Azure Monitor

Se você estiver ingerindo dados métricos por meio do Container insights, recomendamos migrar para o Prometheus gerenciado, que oferece uma redução significativa de custos. Você pode desabilitar as métricas do Container insights usando a regra de coleta de dados (DCR) e implantar o complemento Prometheus gerenciado, que dá suporte à configuração por meio do Azure Resource Manager, da CLI do Azure, do portal do Azure e do Terraform.

Para obter mais informações, consulte as Práticas recomendadas de Azure Monitor e a gestão de custos para insights de contentores.

Análise de Registos

Para logs de plano de controle, considere desabilitar as categorias de que não precisa e/ou usar a API de Logs Básicos quando aplicável para reduzir os custos do Log Analytics. Para obter mais informações, consulte logs do plano de controlo/recurso do Serviço Kubernetes do Azure (AKS). Para os registos do plano de dados ou registos de aplicações, considere ajustar as configurações de otimização de custos.

Você também pode usar Transformações no Azure Monitor para filtrar ou modificar o plano de controle e os logs do plano de dados antes que eles sejam enviados para um espaço de trabalho do Log Analytics. Para obter mais informações sobre como criar uma transformação, consulte Criar uma transformação no Azure Monitor.

Recomendações de custos do Assistente do Azure

As recomendações de custo do AKS no Azure Advisor fornecem recomendações para ajudá-lo a alcançar a eficiência de custos sem sacrificar a confiabilidade. O Advisor analisa suas configurações de recursos e recomenda soluções de otimização. Para obter mais informações, consulte Obter recomendações de custo do Serviço Kubernetes do Azure (AKS) no Azure Advisor.

Otimize cargas de trabalho por meio do dimensionamento automático

Estabelecer uma linha de base

Antes de definir suas configurações de dimensionamento automático, você pode usar o Teste de Carga do Azure para estabelecer uma linha de base para seu aplicativo. O teste de carga ajuda você a entender como seu aplicativo se comporta sob diferentes condições de tráfego e identificar gargalos de desempenho. Depois de ter uma linha de base, você pode definir as configurações de dimensionamento automático para garantir que seu aplicativo possa lidar com a carga esperada.

Habilitar o dimensionamento automático de aplicativos

Dimensionamento automático de pods verticais

Solicitações e limites superiores ao uso real podem resultar em cargas de trabalho provisionadas em excesso e recursos desperdiçados. Por outro lado, solicitações e limites muito baixos podem resultar em problemas de limitação e carga de trabalho devido à insuficiência de memória. O Vertical Pod Autoscaler (VPA) permite ajustar os recursos de CPU e memória exigidos pelos seus pods. O VPA fornece valores recomendados para solicitações e limites de CPU e memória com base no histórico de uso do contêiner, que você pode definir manualmente ou atualizar automaticamente. Ideal para aplicações com demandas de recursos flutuantes. O modo apenas para recomendações desativado do VPA permite que as equipas analisem as sugestões de recursos sem as impor automaticamente. Esse modo pode ser ativado durante o teste, e as recomendações de VPA podem ser usadas para definir a solicitação de CPU e memória e os limites para ambientes de produção.

Dimensionamento automático horizontal do pod

O Horizontal Pod Autoscaler (HPA) dimensiona dinamicamente o número de réplicas de pods com base em métricas observadas, como a utilização da CPU ou da memória. Durante períodos de alta demanda, a HPA dimensiona-se, adicionando mais réplicas de pods para distribuir a carga de trabalho. Durante períodos de baixa demanda, o HPA é dimensionado, reduzindo o número de réplicas para conservar recursos. Ideal para aplicações com exigências de recursos previsíveis.

Aviso

Você não deve usar o VPA com o HPA nas mesmas métricas de CPU ou memória. Essa combinação pode levar a conflitos, já que ambos os ajustadores automáticos tentam responder a mudanças na procura usando as mesmas métricas. No entanto, você pode usar o VPA para CPU ou memória com o HPA para métricas personalizadas para evitar sobreposições e garantir que cada dimensionador automático se concentre em aspetos distintos do dimensionamento da carga de trabalho.

Dimensionamento automático controlado por eventos do Kubernetes

O complemento Kubernetes Event-driven Autoscaler (KEDA) oferece flexibilidade extra para dimensionamento com base em várias métricas orientadas a eventos que se alinham com o comportamento do seu aplicativo. Por exemplo, para um aplicativo Web, o KEDA pode monitorizar o tráfego de solicitações HTTP de entrada e ajustar o número de réplicas de pod para garantir que o aplicativo permaneça responsivo. Para trabalhos de processamento, o KEDA pode dimensionar o aplicativo com base no comprimento da fila de mensagens. O suporte gerenciado é fornecido para todos os Azure Scalers. O KEDA também permite reduzir para 0 réplicas, especialmente útil para cargas de trabalho esporádicas orientadas a eventos, cargas de trabalho periódicas de aprendizado de máquina (ML) ou GPU e ambientes de desenvolvimento/teste ou de baixo tráfego.

Habilitar o dimensionamento automático da infraestrutura

Dimensionamento automático de cluster

Para acompanhar a demanda de aplicativos, o Cluster Autoscaler observa pods que não podem ser agendados devido a restrições de recursos e dimensiona o número de nós no pool de nós de acordo. Quando os nós não têm pods em execução, o Cluster Autoscaler reduz o número de nós. As configurações de perfil do Autoscaler de cluster aplicam-se a todos os pools de nós habilitados para autoscaler em um cluster. Para obter mais informações, consulte Práticas recomendadas e considerações sobre o Autoscaler de cluster.

Autoprovisionamento de nós

Cargas de trabalho complicadas podem exigir vários pools de nós com diferentes configurações de tamanho de VM para acomodar os requisitos de CPU e memória. A seleção e o gerenciamento com precisão de várias configurações de pool de nós aumentam a complexidade e a sobrecarga operacional. O NODE Autoprovision (NAP) simplifica o processo de seleção de SKU e decide a configuração ideal da VM com base nos requisitos de recursos de pod pendentes para executar cargas de trabalho da maneira mais eficiente e econômica.

Poupe com descontos do Azure

Azure Reservations

Se sua carga de trabalho for previsível e existir por um longo período de tempo, considere comprar uma Reserva do Azure para reduzir ainda mais seus custos de recursos. As Reservas do Azure operam em um período de um ou três anos, oferecendo até 72% de desconto em comparação com os preços pré-pagos para computação. As reservas aplicam-se automaticamente aos recursos correspondentes. Ideal para cargas de trabalho comprometidas com a execução nas mesmas SKUs e regiões durante um longo período de tempo.

Plano de Poupança do Azure

Se tiveres gastos consistentes, mas a utilização de recursos distintos entre SKUs e regiões tornar inviáveis as Reservas do Azure, considera comprar um Plano de Economia do Azure. Tal como as Reservas do Azure, os Planos de Poupança do Azure operam num período de um ou três anos e aplicam-se automaticamente a quaisquer recursos dentro do âmbito do benefício. Você se compromete a gastar um valor fixo por hora em recursos de computação, independentemente da SKU ou região. Ideal para cargas de trabalho que utilizam diferentes recursos e/ou diferentes regiões de data center.

Benefício Híbrido do Azure

O Benefício Híbrido do Azure para o Serviço Kubernetes do Azure (AKS) permite maximizar suas licenças locais sem custo extra. Use quaisquer licenças locais qualificadas que também tenham um Software Assurance (SA) ativo ou uma assinatura qualificada para obter VMs do Windows no Azure a um custo reduzido.

Próximos passos

A otimização de custos é um esforço contínuo e iterativo. Saiba mais revisando as seguintes recomendações e orientações de arquitetura: