Análise de custo do Serviço de Kubernetes do Azure

Um cluster do Serviço de Kubernetes do Azure (AKS) depende de recursos do Azure, como máquinas virtuais, discos virtuais, balanceadores de carga e endereços IP públicos. Vários aplicativos podem usar esses recursos, que podem ser mantidos por equipes diferentes em sua organização. Os padrões de consumo de recursos para esses aplicativos geralmente são variáveis, portanto, sua contribuição para o custo total de recursos do cluster também pode variar. Alguns aplicativos também podem ter volumes em vários clusters, o que pode representar um desafio ao executar a atribuição de custos e o gerenciamento de custos.

Anteriormente, o MCM (Gerenciamento de Custos da Microsoft) agregava o consumo de recursos de cluster no grupo de recursos do cluster. Você poderia usar o MCM para analisar os custos, mas havia vários desafios:

  • Não havia nenhuma funcionalidade nativa do Azure para exibir o uso de recursos de cluster em um nível mais granular do que um cluster. Não houve detalhamento em categorias discretas, como computação (incluindo núcleos de CPU e memória), armazenamento e rede.

  • Não havia nenhuma funcionalidade nativa do Azure para distinguir entre tipos de custos, por exemplo, entre custos individuais de aplicativo e custos compartilhados. O MCM relatou o custo dos recursos, mas não houve informações sobre quanto do custo do recurso foi usado para executar aplicativos individuais, reservado para processos do sistema exigidos pelo cluster ou qual era custo ocioso associado ao cluster.

  • Não havia nenhum mecanismo nativo do Azure para analisar os custos em vários clusters no mesmo escopo de assinatura.

Como resultado, você pode ter usado soluções de terceiros para coletar e analisar o consumo de recursos e os custos por níveis de granularidade específicos do Kubernetes, como por namespace ou pod. No entanto, as soluções de terceiros exigem esforços para implantar, ajustar e manter em cada cluster do AKS. Em alguns casos, você ainda precisa pagar por recursos avançados, aumentando o custo total de propriedade do cluster.

Para enfrentar esse desafio, o AKS integrou-se ao MCM para oferecer detalhamento de custos com escopo para constructos do Kubernetes, como cluster e namespace, além de categorias de Computação, Rede e Armazenamento do Azure.

O complemento de análise de custo do AKS é criado com base no OpenCost, um projeto de área restrita do Cloud Native Computing Foundation de software livre para coleta de dados de uso. A análise de custo é reconciliada com os dados da fatura do Azure. Os dados pós-processados ficam visíveis diretamente na experiência do portal de Análise de Custos do MCM.

Pré-requisitos e limitações

  • Seu cluster deve ser da camada Standard ou Premium, não pode ser da camada Free.

  • Para exibir informações de análise de custo, você deve ter uma das seguintes funções na assinatura que hospeda o cluster: Proprietário, Colaborador, Leitor, Colaborador de gerenciamento de custos ou Leitor de gerenciamento de custos.

  • Depois de habilitar a análise de custo, você não poderá fazer downgrade do cluster para o nível Free sem desabilitar primeiro a análise de custo.

  • Seu cluster deve ser implantado com uma ID de carga de trabalho do Microsoft Entra configurada.

  • Se estiver usando a CLI do Azure, você deverá ter a versão 2.44.0 ou posterior instalada e a aks-previewversão da extensão da CLI do Azure0.5.155 ou posterior instalada.

  • As exibições de custo do Kubernetes estão disponíveis apenas para os tipos de Oferta do Microsoft Azure a seguir. Para obter mais informações sobre tipos de oferta, consulte Ofertas do Microsoft Azure com suporte.

    • Contrato Enterprise
    • Contrato de Cliente da Microsoft
  • Não há suporte para nós virtuais no momento.

Instalar ou atualizar a extensão aks-preview da CLI do Azure

Instale a extensão aks-preview da CLI do Azure usando o comando az extension add.

az extension add --name aks-preview

Se você precisar atualizar a versão da extensão, poderá fazer isso usando o comando az extension update.

az extension update --name aks-preview

Habilitar a análise de custos em seu cluster do AKS

Você pode habilitar a análise de custo com o sinalizador --enable-cost-analysis durante uma das seguintes operações:

  • Criar um cluster do AKS do nível Standard ou Premium.

  • Atualizar um cluster do AKS que já esteja na camada Standard ou Premium.

  • Atualizar um cluster Free para Standard ou Premium.

  • Atualizar um cluster Standard para Premium.

  • Fazer downgrade de um cluster Premium para camada Standard.

O exemplo a seguir cria um novo cluster do AKS no nível Standard com a análise de custo habilitada:

az aks create --resource-group <resource-group> --name <cluster-name> --location <location> --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis

O exemplo a seguir atualiza um cluster do AKS existente no nível Standard para habilitar a análise de custos:

az aks update --resource-group <resource-group> --name <cluster-name> --enable-cost-analysis

Aviso

O uso de memória do complemento de análise de custo do AKS depende do número de contêineres implantados. O consumo de memória pode ser vagamente aproximado em 200 MB + 0,5 MB por contêiner. O limite de memória atual é definido como 4 GB, que dará suporte a aproximadamente 7 mil contêineres por cluster, mas pode ser mais ou menos dependendo de vários fatores. Essas estimativas estão sujeitas a alterações.

Desabilitar a análise de custo

Você pode desabilitar a análise de custo a qualquer momento usando az aks update.

az aks update --name myAKSCluster --resource-group myResourceGroup --disable-cost-analysis

Observação

Se você pretende fazer downgrade do cluster das camadas Standard ou Premium para a camada Free enquanto a análise de custo estiver habilitada, primeiro desabilite explicitamente a análise de custo, como mostrado aqui.

Exibir os dados de custo

Você pode exibir os dados de alocação de custo no portal do Azure. Para saber mais sobre como navegar na exibição da interface do usuário da análise de custos, confira a documentação do Gerenciamento de Custos.

Definições de custo

Nas exibições de namespaces e ativos do Kubernetes, você verá os seguintes preços:

  • Preços ociosos: representa o custo da capacidade de recurso disponível que não foi usada por nenhuma carga de trabalho.
  • Preços de serviço: representa os preços associados ao serviço, como SLA de tempo de atividade, Microsoft Defender para Contêineres etc.
  • Preços de sistema: representa o custo da capacidade reservada pelo AKS em cada nó para executar os processos do sistema exigidos pelo cluster, incluindo o kubelet e o runtime do contêiner. Saiba mais.
  • Preços não alocados: representa o custo dos recursos que não puderam ser alocados para namespaces.

Observação

Pode levar até um dia para que os dados sejam finalizados. Após 24 horas, qualquer flutuação nos custos do dia anterior terá se estabilizado.

Solução de problemas

Consulte o guia a seguir para solução de problemas de complemento de análise de custo do AKS.

Saiba mais

A visibilidade é um elemento de gerenciamento de custos. Consulte Otimizar Custos no Serviço de Kubernetes do Azure (AKS) para obter outras melhores práticas sobre como obter controle do custo do kubernetes.