Práticas recomendadas para otimização de custo no Azure Kubernetes Service (AKS)
A otimização de custos é sobre maximizar o valor dos recursos, minimizando 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 melhores práticas para aprimorar a eficiência operacional. Um ambiente do AKS pode ser otimizado para minimizar o custo, levando em conta os requisitos de desempenho e confiabilidade.
Neste artigo, você aprenderá sobre:
- Práticas holísticas de monitoramento e FinOps.
- Seleção de infraestrutura estratégica.
- Correção dinâmica de tamanho e dimensionamento automático.
- Aproveitamento de descontos do Azure para ter uma economia substancial.
Adotar FinOps para criar uma cultura de economia de custos
FinOps (operações financeiras) é uma disciplina que combina responsabilidade financeira com gerenciamento e otimização de nuvem. Ela se concentra em impulsionar o alinhamento entre as equipes de finanças, operações e engenharia para entender e controlar os custos de nuvem. A fundação FinOps tem vários projetos notáveis, como o FinOps Framework e a Especificação FOCUS.
Para obter mais informações, consulte O que é FinOps?
Preparar o ambiente de aplicativo
Avaliar a família do 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 cargas de trabalho grandes prontas para produção. Embora uma combinação de configurações de CPU, memória e capacidade de rede influencie fortemente o custo-benefício de um SKU, considere os seguintes tipos de VM (máquinas virtuais):
Família do SKU | Descrição | Caso de uso |
---|---|---|
Máquinas Virtuais Spot do Azure | Os conjuntos de dimensionamento de Máquinas Virtuais Spot do Azure retornam pools de nós Spot e são implantadas em um domínio de falha única sem garantias de SLA (contrato de nível de serviço) ou alta disponibilidade. 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 de pagamento conforme o uso). Se o Azure precisar de capacidade de volta, a infraestrutura do Azure removerá os nós Spot. | Melhor 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 no ARM do Ampere Altra (ARM64) | As VMs do ARM64 são eficientes 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 combinar nós de arquitetura Intel e ARM em um cluster. Essas VMs ARM são projetadas para executar cargas de trabalho dinâmicas e escalonáveis com eficiência e podem fornecer até 50% melhor desempenho de preço do que VMs comparáveis baseadas em x86 para cargas de trabalho de expansão. | Melhor para servidores Web ou de aplicativos, bancos de dados de código aberto, aplicativos nativos de nuvem, servidores de jogos e muito mais. |
SKUs otimizados para GPU | Dependendo da natureza da carga de trabalho, considere o uso de SKUs de VM otimizados para computação, otimizados para memória, otimizados para armazenamento ou até mesmo SKUs de VM otimizados para GPU (unidade de processamento gráfico). Os tamanhos de VM com otimização de GPU são VMs especializadas que estão disponíveis com GPUs individuais, múltiplas e fracionárias. | Os pools de nós do Linux habilitados para GPU no AKS são melhores para cargas de trabalho com uso intensivo de computação, como renderização de gráficos, treinamento de modelos grandes e inferência. |
Observação
O custo da computação varia entre diferentes regiões. Ao escolher uma região menos cara para executar cargas de trabalho, lembre-se do impacto potencial da latência, bem como dos custos de transferência de dados. Para saber mais sobre SKUs de VM e as características deles, consulte Tamanhos para máquinas virtuais no Azure.
Examinar as opções de armazenamento
Para obter mais informações sobre as opções de armazenamento e as considerações sobre custo relacionadas, confira os seguintes artigos:
- Práticas recomendadas para armazenamento e backups no Serviço de Kubernetes do Azure (AKS)
- Opções de Armazenamento para Aplicativos no Serviço Azure Kubernetes (AKS)
Usar configurações predefinidas do cluster
Pode ser difícil acertar na escolha da SKU de VM, das regiões, do número de nós e das outras opções de configuração. A opção de Configurações predefinidas de cluster do portal do Azure ajuda a facilitar esse desafio inicial, fornecendo configurações recomendadas econômicas e eficientes para diferentes ambientes de aplicativo. A predefinição de Desenvolvimento/Teste é melhor para desenvolver novas cargas de trabalho ou testar cargas de trabalho existentes. A predefinição Economia de Produção é melhor para atender ao tráfego de produção de maneira consciente de custos se suas cargas de trabalho puderem tolerar 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 multilocação
O AKS oferece flexibilidade em como você executa clusters multilocatário e isola recursos. Para uma arquitetura multilocatário de uso amigável, compartilhe os clusters e a 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. A infraestrutura de compartilhamento reduz a sobrecarga de gerenciamento de cluster, ao mesmo tempo em que aprimora a utilização de recursos e a densidade do pod dentro do cluster. Para saber mais sobre arquitetura multilocatário no AKS e determinar se ela é adequada para suas necessidades organizacionais, consulte Considerações do AKS para arquitetura multilocatário e Projetar clusters para multilocatário.
Aviso
Os ambientes do Kubernetes não são completamente seguros para arquitetura multilocatário hostil. Se algum locatário na infraestrutura compartilhada não for confiável, será necessário mais planejamento para impedir que os locatários afetem a segurança de outros serviços.
Considere estabelecer limites de isolamento físico. Neste modelo, as equipes ou cargas de trabalho são atribuídas ao cluster delas. A administração adicional e a sobrecarga financeira serão uma compensação.
Criar aplicativos nativos de nuvem
Torne o seu contêiner o mais enxuto possível
Um contêiner enxuto refere-se à otimização do tamanho e do volume de recursos do aplicativo conteinerizado. Verifique se a imagem base é mínima e contém apenas as dependências necessárias. Remova quaisquer 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 Artefatos no AKS permite transmitir imagens de contêiner do ACR (Registro de Contêiner do Azure) para o AKS. Ele efetua pull apenas da camada necessária para a inicialização inicial do pod, reduzindo de minutos para segundos o tempo de pull para imagens maiores.
Enforce resource quotas
As cotas de recursos fornecem uma maneira para reservar e limitar os recursos em uma equipe de desenvolvimento ou um 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 o consumo de mais recursos do que os alocados por parte de namespaces individuais. As cotas de recursos são úteis para clusters multilocatário em que as equipes compartilham a infraestrutura.
Usar a parada e a inicialização de cluster
Quando deixados de maneira não assistida, pequenos clusters de desenvolvimento/teste podem acumular custos desnecessários. Você pode desabilitar os clusters que não precisam ser executados o tempo todo usando o recurso de parada e inicialização de cluster. Esse recurso desliga todos os pools de nós do sistema e do usuário para que você não pague pela computação extra. O estado do cluster e dos objetos é mantido quando você inicia o cluster novamente.
Usar reservas de capacidade
As reservas de capacidade sob demanda permitem reservar capacidade de computação em uma região do Azure ou uma zona de disponibilidade por qualquer período. A capacidade reservada fica disponível para uso imediato até que a reserva seja excluída. Associar um grupo de reserva de capacidade existente a um pool de nós garante a capacidade alocada para o pool de nós e ajuda a evitar possíveis picos de preço sob demanda durante períodos de alta demanda de computação.
Monitorar seu ambiente e gasto
Aumentar a visibilidade com o Gerenciamento de Custos da Microsoft
O Gerenciamento de Custos da Microsoft oferece um amplo conjunto de recursos para ajudar no orçamento, previsão e visibilidade da nuvem para os custos dentro e fora do cluster. Uma 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 complemento de Análise de Custo do AKS para detalhamento de custo de cluster granular por constructos do Kubernetes, juntamente com as categorias de Computação, Rede e Armazenamento do Azure.
Azure Monitor
Se você estiver ingerindo dados de métrica por meio dos Insights de contêiner, recomendamos migrar para o Prometheus gerenciado, que oferece uma redução significativa de custos. Você pode desabilitar as métricas de insights de contêiner usando a DCR (regra de coleta de dados) e implantar o complemento do 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, confira Melhores práticas do Azure Monitor e Gerenciamento de custos dos Insights de contêiner.
Log Analytics
Para os logs do painel de controle, considere a desabilitação das categorias de que você não precisa e/ou o uso da API de Logs Básicos quando aplicável para reduzir os custos do Log Analytics. Para obter mais informações, confira o painel de controle/logs de recursos do AKS (Serviço de Kubernetes do Azure). No caso de logs do plano de dados ou logs de aplicativo, considere o ajuste das configurações de otimização de custo.
Otimizar cargas de trabalho por meio do dimensionamento automático
Estabelecer uma linha de base
Antes de definir as configurações de dimensionamento automático, você poderá 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 em diferentes condições de tráfego e a identificar os gargalos de desempenho. Depois de ter uma linha de base, você poderá definir as configurações de dimensionamento automático para garantir que o aplicativo possa lidar com a carga esperada.
Habilitar o dimensionamento automático do aplicativo
Dimensionamento automático de pod vertical
Solicitações e limites maiores do que o uso real podem resultar em cargas de trabalho superprovisionadas e no desperdício de recursos. Por outro lado, solicitações e limites muito baixos podem resultar em problemas de limitação e carga de trabalho devido à falta de memória. O VPA (Dimensionador Automático de Pod Vertical) permite ajustar os recursos de CPU e memória exigidos pelos pods. A VPA fornece valores recomendados para solicitações de CPU e memória e limites com base no uso histórico do contêiner, que você pode definir manualmente ou atualizar automaticamente. Melhor para aplicativos com demandas flutuantes de recursos.
Dimensionamento horizontal automático de pod
O HPA (Dimensionador Horizontal Automático de Pod) escala dinamicamente o número de réplicas de pod com base em métricas observadas, como utilização de CPU ou memória. Durante períodos de alta demanda, o HPA é expandido horizontalmente, adicionando mais réplicas de pod para distribuir a carga de trabalho. Durante períodos de baixa demanda, o HPA é reduzido horizontalmente, reduzindo o número de réplicas para conservar recursos. Melhor para aplicativos com demandas previsíveis de recursos.
Aviso
Você não deve usar o VPA com o HPA nas mesmas métricas de CPU ou de memória. Essa combinação pode levar a conflitos, pois ambos os dimensionadores automáticos tentam responder às alterações na demanda usando as mesmas métricas. No entanto, você pode usar o VPA para CPU ou memória com o HPA para métricas personalizadas, a fim de evitar a sobreposição e garantir que cada dimensionador automático se concentre em aspectos distintos da escala da carga de trabalho.
KEDA (Kubernetes Event-driven Autoscaling)
O complemento KEDA (Kubernetes Event-driven Autoscaling) fornece flexibilidade extra para escala de acordo com várias métricas controladas por eventos que se alinham ao comportamento do aplicativo. Por exemplo, para um aplicativo Web, o KEDA pode monitorar 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 Dimensionadores do Azure.
Habilitar o dimensionamento automático de infraestrutura
Dimensionamento automático do cluster
Para acompanhar a demanda do aplicativo, o Dimensionador Automático de Cluster inspeciona os pods que não podem ser agendados devido a restrições de recursos e escala adequadamente o número de nós no pool de nós. Quando os nós não têm pods em execução, o Dimensionador Automático de Cluster reduz verticalmente o número de nós. As configurações de perfil do Dimensionador Automático de Cluster se aplicam a todos os pools de nós habilitados para dimensionamento automático em um cluster. Para obter mais informações, confira Melhores práticas e considerações sobre o Dimensionador Automático de Cluster.
Provisionamento automático 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. Selecionar e gerenciar com precisão várias configurações de pool de nós adiciona complexidade e sobrecarga operacional. O NAP (Provisionamento Automático de Nós) simplifica o processo de seleção de SKU e decide qual será a configuração ideal da VM, com base nos requisitos de recursos de pod pendentes, para executar as cargas de trabalho da maneira mais eficiente e econômica.
Observação
Para obter mais informações sobre melhores práticas de escala, confira Desempenho e escala para cargas de trabalho pequenas e médias no AKS (Serviço de Kubernetes do Azure) e Melhores práticas de desempenho e escala para cargas de trabalho grandes no AKS (Serviço de Kubernetes do Azure) .
Economizar com descontos do Azure
Reservas do Azure
Se sua carga de trabalho for previsível e existir por um longo período de tempo, considere a compra de uma Reserva do Azure para reduzir ainda mais os custos de recursos. As Reservas do Azure operam por um período de um ou três anos, oferecendo até 72% de desconto em comparação com os preços de pagamento conforme o uso para computação. As reservas se aplicam automaticamente aos recursos correspondentes. Melhor para cargas de trabalho que estão comprometidas com a execução nos mesmos SKUs e regiões durante um longo período de tempo.
Plano de Economia do Azure
Se você tiver gastos consistentes, mas seu uso de recursos diferentes entre SKUs e regiões tornar as Reservas do Azure inviáveis, considere a compra de um Plano de Economia do Azure. Assim como as Reservas do Azure, os Planos de Economia do Azure operam em um período de um ou três anos e se aplicam automaticamente a todos os recursos no escopo do benefício. Você se compromete a gastar um valor fixo por hora em recursos de computação, independentemente de SKU ou região. Melhor para cargas de trabalho que utilizam recursos diferentes e/ou regiões de datacenter diferentes.
Benefício Híbrido do Azure
O Benefício Híbrido do Azure para AKS (Serviço de Kubernetes do Azure) permite maximizar suas licenças locais sem nenhum custo adicional. Use quaisquer licenças locais qualificadas que também têm Software Assurance (SA) ativa ou uma assinatura qualificada para obter VMs do Windows no Azure a um custo reduzido.
Próximas etapas
A otimização de custo é um esforço contínuo e iterativo. Saiba mais examinando as seguintes recomendações e diretrizes de arquitetura:
Azure Kubernetes Service