Análise de custo do AKS (Serviço de Kubernetes do Azure)

Neste artigo, você aprenderá a habilitar a análise de custo no AKS (Serviço de Kubernetes do Azure) para exibir dados de custo detalhados dos recursos do cluster.

Visão geral da análise de custo do AKS

Os clusters do AKS dependem dos recursos do Azure, como VMs (máquinas virtuais), discos virtuais, balanceadores de carga e endereços IP públicos. Vários aplicativos podem usar esses recursos. Os padrões de consumo de recursos geralmente diferem para cada aplicativo, portanto, sua contribuição para o custo total dos recursos do cluster também pode variar. Alguns aplicativos podem ter presenças em vários clusters, o que pode representar um desafio ao realizar a atribuição e o gerenciamento de custos.

Ao habilitar a análise de custo no cluster do AKS, você poderá exibir a alocação de custos detalhada com escopo para constructos do Kubernetes, como clusters e namespaces, e recursos da Computação, Rede e Armazenamento do Azure. O complemento foi desenvolvido com base no OpenCost, um projeto de código aberto da Cloud Native Computing Foundation Incubating para coleta de dados de uso. Os dados de uso são reconciliados com os dados da fatura Azure para fornecer uma visão abrangente dos custos do cluster do AKS diretamente no portal Azure.

Para obter mais informações sobre o Gerenciamento de Custos da Microsoft, confira Iniciar a análise de custo no Azure.

Depois de habilitar o complemento de análise de custos e permitir até 24 horas para que os dados sejam coletados, você pode usar as informações em Entender o uso e os custos do AKS para ajudá-lo a entender seus dados.

Pré-requisitos

  • Seu cluster deve usar a camada Standard ou Premium, e não a camada Free.
  • Para exibir as informações de análise de custo, você deve ter uma das seguintes funções na assinatura que hospeda o cluster: Owner, Contributor, Reader, Cost Management Contributor ou Cost Management Reader
  • Identidade gerenciada configurada no seu cluster.
  • O driver CSI do Azure Disk Container Storage Interface está habilitado no seu cluster.
  • Se estiver usando a CLI do Azure, você deve ter a versão 2.61.0 ou posterior instalada.
  • Depois de habilitar a análise de custo, você não poderá fazer downgrade do cluster para a camada Free sem antes desabilitar a análise de custo.
  • Acesso à API do Azure, incluindo a API do Azure Resource Manager (ARM). Para uma lista de nomes de domínio totalmente qualificados (FQDNs) necessários, consulte FQDNs necessários para Análise de Custos do AKS.

Limitações

  • As exibições de custo do Kubernetes estão disponíveis apenas para os tipos de oferta do Microsoft Azure Contrato Enterprise e Contrato de Cliente da Microsoft. Para obter mais informações, consulte Ofertas do Microsoft Azure com Suporte.
  • Atualmente, não há suporte para nós virtuais.
  • O complemento não está disponível nas regiões usnateast, usnatwest, usseceast ou ussecwest. Para obter mais informações, consulte Problemas com o suplemento de análise de custos do AKS e solução de problemas.
  • O complemento de análise de custo do AKS dá suporte a cerca de 7.000 contêineres por cluster, com base no limite de memória atual de 4 GB e sujeito a alterações.

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:

  • Criando um cluster AKS da camada Standard ou Premium.
  • Atualizando um cluster do AKS existente da camada Standard ou Premium.
  • Atualizando um cluster Free para Standard ou Premium.
  • Atualizando um cluster Standard para Premium.
  • Rebaixando um cluster Premium para a camada Standard.

Habilitar a análise de custo em um novo cluster

Habilite a análise de custo em um novo cluster usando o comando az aks create com o sinalizador --enable-cost-analysis. O exemplo a seguir cria um novo cluster do AKS no nível Standard com a análise de custo habilitada:

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="AKSCostRG$RANDOM_SUFFIX"
export CLUSTER_NAME="AKSCostCluster$RANDOM_SUFFIX"
export LOCATION="WestUS2"
az group create --resource-group $RESOURCE_GROUP --location $LOCATION
az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --location $LOCATION --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis

Resultados:

{
    "id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
    "location": "WestUS2",
    "name": "AKSCostClusterxxxx",
    "properties": {
        "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.ContainerService/managedClusters"
}

Habilitar a análise de custo em um cluster existente

Habilite a análise de custo em um cluster existente usando o comando az aks update com o sinalizador --enable-cost-analysis. O exemplo a seguir atualiza um cluster AKS existente na camada Standard para habilitar a análise de custos. Substitua $RESOURCE_GROUP e $CLUSTER_NAME com seus nomes de cluster e grupo de recursos ou defina-os como variáveis de ambiente.

az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-cost-analysis

Resultados:

{
    "id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
    "name": "AKSCostClusterxxxx",
    "properties": {
        "provisioningState": "Succeeded"
    }
}

Observação

Um agente é implantado no cluster quando você habilita o complemento. O agente consome uma pequena quantidade de recursos de CPU e memória.

Aviso

O uso de memória do complemento de análise de custo do AKS depende do número de contêineres implantados. Você pode aproximar o consumo de memória usando 200 MB + 0,5 MB por contêiner. O limite de memória atual é definido como 4 GB, que dá suporte a aproximadamente 7.000 contêineres por cluster. Essas estimativas estão sujeitas a alterações.

Observação

Habilitar a análise de custo também cria uma identidade gerenciada nomeada cost-analysis-identity com acesso de leitura ao grupo de recursos de nó do cluster e a atribui aos pools de nós no cluster. Isso é usado para coletar os identificadores ARM de ativos de cluster para os relatórios.

Como o pool de nós já tem uma identidade gerenciada, todos os comandos no nó que usam identidades gerenciadas precisam especificar a identidade a ser usada em vez de depender da identidade gerenciada do pool de nós.

Por exemplo, az login --identity --resource-id <resource ID of identity>.

Desabilitar a análise de custo em seu cluster do AKS

Desabilite a análise de custo usando o comando az aks update com o sinalizador --disable-cost-analysis.

az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --disable-cost-analysis

Resultados:

{
    "id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
    "name": "AKSCostClusterxxxx",
    "properties": {
        "provisioningState": "Succeeded"
    }
}

Observação

Se quiser fazer downgrade do cluster da camada Standard ou Premium para a camada Free enquanto a análise de custo estiver habilitada, você deverá primeiro desabilitar a análise de custo.

Exibir os dados de custo

Você pode exibir os dados de alocação de custo no portal do Azure.

No portal do Azure, acesse a assinatura de Azure que hospeda o cluster do AKS. Em Gerenciamento de Custos, selecione Análise de custo. Na lista Exibir, selecione o item da lista suspensa e, em seguida, selecione Clusters do Kubernetes.

Para obter mais informações, confira Exibir os custos do AKS no Gerenciamento de Custos da Microsoft.

Definições de custo

Nas exibições de namespaces e ativos do Kubernetes, você poderá ver uma das seguintes cobranças:

Tipo de cobrança Descrição
Cobranças por inatividade O custo da capacidade de recurso disponível que não é usada por nenhuma carga de trabalho.
Encargos de serviço As cobranças associadas ao serviço, como SLA de disponibilidade, Microsoft Defender para Contêineres etc.
Encargos do sistema 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 de contêiner. Saiba mais.
Encargos não alocados O custo dos recursos que não puderam ser alocados para namespaces.

Observação

Normalmente, o sistema finaliza e disponibiliza dados de custo e uso dentro de 8 a 24 horas.

Solução de problemas

Se você estiver enfrentando problemas, como o pod cost-agent ficando OOMKilled ou preso em um estado Pending, consulte Solucionar problemas do complemento de análise de custo do AKS.

Próximas etapas

Para obter mais informações sobre o custo no AKS, confira Entenda o uso e os custos do AKS (Serviço de Kubernetes do Azure).