Receba insights importantes sobre gastos para sua alocação de recursos do GKE e custos de cluster

Nesta página, mostramos como receber insights importantes sobre gastos para informar suas decisões de alocação de recursos e otimização de custos usando a alocação de custos do Google Kubernetes Engine (GKE). Saiba mais sobre a diferença entre a alocação de custos do GKE e a medição de uso do cluster, as limitações da alocação de custos do GKE, como ativar a alocação de custos do GKE em clusters novos e atuais e como filtrar e consultar a exportação do BigQuery do Cloud Billing.

Esta página é destinada a operadores, arquitetos de nuvem, desenvolvedores e administradores de dados que precisam gerenciar custos ao criar e configurar clusters e implantar cargas de trabalho no GKE. Para saber mais sobre papéis comuns, consulte Tarefas e funções de usuário comuns do GKE.

Antes de ler esta página, familiarize-se com as Práticas recomendadas para executar aplicativos do Kubernetes otimizados para custo no GKE

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 Cloud Billing Google Cloud 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 CLI do Google Cloud para essa tarefa, instale e inicialize a gcloud CLI. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

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 RAM da instância estendida personalizada da VM do Compute Engine
    • SKUs de GPU da instância de VM do Compute Engine
    • SKUs de capacidade de DP do Compute Engine
    • SKUs de instâncias do Cloud TPU
  • Se um pod tiver mais de 50 identificadores do Kubernetes, nenhum deles estará disponível na seção do Cloud Billing do console 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.
  • A versão do Cloud TPU precisa ser a Cloud TPU v4 ou mais recente.

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.

Para a RAM estendida, a mesma proporção do custo total é alocada a uma carga de trabalho para as SKUs de RAM regular e RAM estendida com base no recurso solicitado.

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 Google Cloud .

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.

Também é possível usar a flag --enable-cost-allocation ao criar um cluster com o comando gcloud container clusters create.

Console

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

  1. Acesse a página do Google Kubernetes Engine no Google Cloud console. 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 do Google Kubernetes Engine no Google Cloud console. 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