Ver detalhamento dos custos do cluster


Nesta página, mostramos como visualizar os custos do cluster do Google Kubernetes Engine (GKE) na exportação do BigQuery do Cloud Billing usando a alocação de custos do GKE.

É possível usar essas informações para distribuir os custos de um cluster para os usuários.

Possível aumento no volume de dados

Ativar o detalhamento de custos do GKE pode aumentar os custos de armazenamento e consulta no BigQuery. O aumento exato depende do número de combinações distintas de rótulos e namespaces que você usa em pods e clusters.

Ativar o detalhamento de custos do GKE não altera o custo total do uso do GKE. A soma dos itens de linha de custo na exportação é a mesma, e as consultas e relatórios que você criou na exportação de faturamento retornam os mesmos valores.

Alocação de custos do GKE e medição de uso do cluster

A alocação de custos do GKE é diferente da medição de uso de clusters das seguintes maneiras:

  • A alocação de custos do GKE fornece uma alternativa à medição de uso do cluster para receber informações do cluster.
  • A alocação de custos do GKE calcula os custos do cluster na sua conta do Cloud Billing, em vez de agregar os dados em um modelo do Looker Studio.
  • Com a alocação de custos do GKE, é possível ver os dados de custo dos clusters no Console do Google Cloud do Cloud Billing e na exportação detalhada do Cloud Billing.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update.

Limitações e restrições

  • Só é possível ver os dados de detalhamento de custos do GKE na exportação detalhada de dados de custo de uso do BigQuery do Cloud Billing.
  • É necessário ter a CLI do Google Cloud versão 392.0.0 ou posterior
  • Se você ativar o detalhamento de custos do GKE, a exportação de faturamento começará a incluir outros itens de linha para seus recursos do GKE a partir dessa data. A exportação de faturamento não preenche os dados.
  • Se você desativar o detalhamento de custos do GKE, a exportação de faturamento parará de incluir itens de linha adicionais, mas não modificará nem removerá itens anteriores que foram gerados enquanto o recurso estava ativado.
  • Os dados de alocação de custos do GKE são baseados em solicitações de recursos, não em recursos consumidos. Para saber mais sobre as diferenças entre solicitações de recursos, limites de recursos e consumo de recursos, consulte Práticas recomendadas do Kubernetes: solicitações e limites de recursos.
  • O detalhamento de custos do GKE é compatível com os seguintes tipos de SKU de recurso:
    • SKUs de vCPU da instância de VM do Compute Engine
    • SKUs de RAM da instância de VM do Compute Engine
    • SKUs de GPU da instância de VM do Compute Engine
    • SKUs de capacidade de DP do Compute Engine
  • Se um pod tiver mais de 50 identificadores do Kubernetes, nenhum deles estará disponível na seção do Cloud Billing do console do Google Cloud ou na exportação detalhada do Cloud Billing.
  • Depois de ativar a alocação de custos do GKE, pode levar até três dias para que os dados apareçam no Cloud Billing.
  • A alocação de custos do GKE inclui dados de discos permanentes, com as seguintes exceções:
    • Compatível apenas com recursos PersistentVolume provisionados dinamicamente pelo PersistentVolumeClaims ou Volumes temporários genéricos.
    • Compatível apenas com recursos PersistentVolume provisionados pelo Driver CSI de disco permanente do Compute Engineou com o plugin de armazenamento kubernetes.io/gce-pd descontinuado com modo de acesso ReadWriteOnce ou ReadWriteOncePod.
    • Discos permanentes com tempo de atividade inferior a 30 minutos podem não ser rastreados. Os discos permanentes com pelo menos 30 minutos de tempo de atividade são sempre rastreados.

Ver os custos do cluster do GKE

Quando você ativa o detalhamento de custos do GKE, o nome do cluster e o namespace das cargas de trabalho do GKE aparecem no campo labels da exportação de faturamento para o BigQuery:

Chave do rótulo do recurso (labels.key) Valor do rótulo de recurso (labels.value)
Descrição Os rótulos do Kubernetes têm o seguinte formato: k8s-label/${k8s-label-key}, em que ${k8s-label-key} é a chave do rótulo do Kubernetes do pod. O rótulo de faturamento k8s-label/${k8s-label-key} tem o mesmo valor que o rótulo do pod do Kubernetes correspondente. Se uma chave de rótulo do Kubernetes conflita com uma de chave de rótulo da VM, o valor do rótulo do Kubernetes substitui esse valor. Os rótulos de recurso do cluster e do pool de nós são aplicados aos recursos usando esta prioridade, da maior para a menor:
  • Recurso individual, como instância ou armazenamento
  • Pool de nós
  • Cluster
Nome do cluster goog-k8s-cluster-name [cluster-name]
Namespace k8s-namespace [namespace]
Tipo de carga de trabalho k8s-workload-type [workload-type]
(por exemplo, apps/v1-Deployment,apps/v1-StatefulSet,apps/v1-DaemonSet,apps/v1-ReplicaSet,batch/v1-Job,batch/v1-CronJob,core/v1-Pod)
Nome da carga de trabalho k8s-workload-name [workload-name]

Para mais informações, acesse Esquema dos dados detalhados de custo de uso.

Além disso, os namespaces a seguir são usados para rastrear sobrecarga e recursos não alocados:

  • kube:system-overhead: considera recursos de nó que não estão disponíveis para os pods. Esses recursos são reservados pelo sistema para executar o framework do Kubernetes (incluindo, mas não se limitando a, kubelet, kube-proxy, containerd). Essa é a diferença entre a capacidade do nó e os recursos alocáveis.
  • kube:unallocated: os recursos não são solicitados por cargas de trabalho nem solicitados para a sobrecarga do sistema.

Se o GKE não puder determinar a alocação de custos de um recurso, a exportação vai incluir um destes valores:

  • goog-k8s-unknown: o Cloud Billing não conseguiu processar a SKU. Isso pode acontecer durante o provisionamento de uma nova instância do Compute Engine. Alguns valores de goog-k8s-unknown podem ser esperados durante a inicialização e o desligamento do nó, por exemplo, quando o GKE escalona um cluster automaticamente.
  • goog-k8s-unsupported-sku: a alocação de custos do GKE não funciona com essa SKU. Trate isso da mesma forma que <blank>/NULL. Não há garantia de que uma SKU será sempre rotulada com esse valor.
  • <blank>/NULL: a alocação de custos do GKE não rastreia esse recurso. Isso pode ocorrer quando a alocação de custos do GKE não está ativada ou o recurso não pertence a um cluster gerenciado do GKE.

Os custos de discos permanentes são rastreados quando o PersistentVolumeClaims de apoio do disco permanente é reivindicado pelos pods. Os custos do Persistent Disk herdam todos os metadados do pod declarante, como rótulos e namespaces do pod, até que os PersistentVolumeClaims sejam excluídos. Para PersistentVolumeClaims que são excluídos, mas mantêm PersistentVolumes de acordo com a política de recuperação, os custos dos Persistent Disks são rastreados como não alocados.

Os rótulos aplicados diretamente a PersistentVolumeClaims não aparecem na seção "Cloud Billing" do Console do Google Cloud ou na exportação detalhada do Cloud Billing.

Ativar a alocação de custos do GKE

É possível ativar a alocação de custos do GKE em um cluster novo ou atual usando a CLI gcloud ou o console do Google Cloud.

Criar um novo cluster

gcloud

Crie um cluster usando a sinalização --enable-cost-allocation:

gcloud container clusters create CLUSTER_NAME \
    --enable-cost-allocation \
    --region=COMPUTE_REGION

Substitua:

  • CLUSTER_NAME: o nome do novo cluster;
  • COMPUTE_REGION: a região do Compute Engine do cluster. Para clusters zonais, use --zone=COMPUTE_ZONE.

Console

Para ativar a alocação de custos do GKE ao criar um novo cluster, faça o seguinte:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Clique em Criar.

  3. Configure seu cluster.

  4. No painel de navegação, em Cluster, clique em Recursos.

  5. Na seção Outros, marque a caixa de seleção Ativar alocação de custos.

  6. Configure o cluster conforme necessário e clique em Criar.

Atualize um cluster

gcloud

Atualize um cluster usando a sinalização --enable-cost-allocation:

gcloud container clusters update CLUSTER_NAME \
    --enable-cost-allocation

Substitua CLUSTER_NAME pelo nome do cluster.

Console

Para ativar a alocação de custos do GKE em um cluster atual, faça o seguinte:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud. Acessar o Google Kubernetes Engine
  2. Clique no nome do cluster que você quer modificar.
  3. Na página Clusters, na seção Recursos, clique em ao lado de Alocação de custos.
  4. Na caixa de diálogo Editar alocação de custos, marque a caixa de seleção Ativar alocação de custos.
  5. Clique em Salvar alterações.

Verificar se a alocação de custos do GKE está ativada

gcloud

Descreva o cluster:

gcloud container clusters describe CLUSTER_NAME

O resultado será assim:

...
costManagementConfig:
  enabled: true
...

Nesta saída, costManagementConfig indica que a alocação de custos do GKE está ativada.

Console

Para verificar se a alocação de custos do GKE está ativada em um cluster atual, faça o seguinte:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud. Acessar o Google Kubernetes Engine
  2. Clique no nome do cluster que você quer modificar.
  3. Na página Clusters, na seção Recursos, ao lado de Alocação de custos, será mostrado se a alocação de custos do GKE estiver ativada.

Filtrar os dados de custo do GKE

Os exemplos de consultas a seguir mostram como filtrar e agrupar os custos do GKE de acordo com os tipos de recursos compatíveis por nome, namespace e rótulo do cluster.

Substitua BILLING_DATASET_TABLE pelo nome do conjunto de dados que você criou no BigQuery.

O nome da tabela é semelhante a gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, desative a alocação de custo do GKE no cluster:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-cost-allocation

Também é possível excluir o cluster que você criou.

A seguir