Aceda a estatísticas de gastos importantes para a atribuição de recursos do GKE e os custos dos clusters


Esta página mostra como obter estatísticas de gastos importantes para fundamentar as suas decisões de otimização de custos e atribuição de recursos através da atribuição de custos do Google Kubernetes Engine (GKE). Saiba mais sobre a diferença entre a atribuição de custos do GKE e a medição da utilização do cluster, as limitações da atribuição de custos do GKE, como ativar a atribuição de custos do GKE em clusters novos e existentes, e como filtrar e consultar a exportação do BigQuery da faturação do Google Cloud.

Esta página destina-se a operadores, arquitetos da nuvem, programadores e administradores de dados que precisam de gerir os custos à medida que criam e configuram clusters e implementam cargas de trabalho no GKE. Para saber mais sobre as funções comuns, consulte o artigo Funções e tarefas comuns do utilizador do GKE.

Antes de ler esta página, recomendamos que se familiarize com as práticas recomendadas para executar aplicações Kubernetes otimizadas em termos de custos no GKE

Potencial aumento do volume de dados

A ativação da atribuição 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 etiquetas e espaços de nomes que usa em pods e clusters.

A ativação da atribuição de custos do GKE não altera o custo total da sua utilização do GKE. A soma dos itens de linha de custos na exportação é a mesma, e as consultas e os relatórios existentes que criou na exportação da faturação devolvem os mesmos valores.

Medição de utilização do cluster e atribuição de custos do GKE

A atribuição de custos do GKE difere da medição de utilização do cluster nos seguintes aspetos:

  • A atribuição de custos do GKE oferece uma alternativa à medição da utilização do cluster para obter informações do cluster.
  • A atribuição de custos do GKE calcula os custos do cluster na sua conta do Cloud Billing, em vez de agregar os dados num modelo do Looker Studio.
  • A atribuição de custos do GKE permite-lhe ver os dados de custos de um cluster na consola do Cloud Billing Google Cloud e na exportação detalhada do Cloud Billing.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Limitações e restrições

  • Só pode ver os dados de atribuição de custos do GKE na exportação de dados de custos de utilização detalhados do BigQuery da faturação do Google Cloud.
  • Tem de ter a versão 392.0.0 ou posterior da Google Cloud CLI
  • Se ativar a atribuição de custos do GKE, a exportação de faturação começa a incluir elementos publicitários adicionais para os seus recursos do GKE a partir dessa data. A exportação da faturação não preenche dados.
  • Se desativar a atribuição de custos do GKE, a exportação de faturação deixa de incluir elementos publicitários adicionais, mas não modifica nem remove os elementos publicitários anteriores que foram gerados enquanto a funcionalidade estava ativada.
  • Os dados de atribuição de custos do GKE baseiam-se em pedidos de recursos e não em recursos consumidos. Para saber mais sobre as diferenças entre pedidos de recursos, limites de recursos e consumo de recursos, consulte o artigo Práticas recomendadas do Kubernetes: pedidos e limites de recursos.
  • A atribuição de custos do GKE suporta os seguintes tipos de SKU de recursos:
    • SKUs de vCPU de instâncias de VM do Compute Engine
    • SKUs de RAM de instâncias de VM do Compute Engine
    • SKUs de RAM de instâncias alargadas personalizadas de VMs do Compute Engine
    • SKUs de GPU de instâncias de VM do Compute Engine
    • SKUs de capacidade de PD do Compute Engine
    • SKUs de instâncias do Cloud TPU
  • Se um Pod tiver mais de 50 etiquetas do Kubernetes, nenhuma dessas etiquetas vai estar disponível na secção de faturação na nuvem da consola ou na exportação detalhada da faturação na nuvem. Google Cloud
  • Depois de ativar a atribuição de custos do GKE, a apresentação dos dados na Faturação na nuvem pode demorar até três dias.
  • A atribuição de custos do GKE inclui dados de discos persistentes com as seguintes exceções:
    • Só suporta recursos PersistentVolume aprovisionados dinamicamente através de PersistentVolumeClaims ou volumes efémeros genéricos.
    • Só suporta recursos PersistentVolume aprovisionados pelo controlador CSI do disco persistente do Compute Engine ou com o plug-in de armazenamento kubernetes.io/gce-pd descontinuado com o modo de acesso ReadWriteOnce ou ReadWriteOncePod.
    • Os discos persistentes com um tempo de atividade inferior a 30 minutos podem não ser monitorizados. Os discos persistentes com, pelo menos, 30 minutos de tempo de atividade são sempre monitorizados.
  • A versão do Cloud TPU tem de ser o Cloud TPU v4 ou posterior.

Veja os custos do cluster do GKE

Quando ativa a atribuição de custos do GKE, o nome do cluster e o espaço de nomes das suas cargas de trabalho do GKE aparecem no campo labels da exportação da faturação para o BigQuery:

Chave da etiqueta de recurso (labels.key) Valor da etiqueta do recurso (labels.value)
Descrição As etiquetas do Kubernetes têm o seguinte formato: k8s-label/${k8s-label-key}, onde ${k8s-label-key} é a chave da etiqueta do Kubernetes do pod. A etiqueta de faturação k8s-label/${k8s-label-key} tem o mesmo valor que a etiqueta do pod do Kubernetes correspondente. Se uma chave de etiqueta do Kubernetes entrar em conflito com uma chave de etiqueta da VM, o valor da etiqueta do Kubernetes substitui o valor da etiqueta da VM. As etiquetas de recursos de clusters e conjuntos de nós são aplicadas aos recursos com a seguinte prioridade, da mais alta para a mais baixa:
  • Recurso individual, como uma instância ou um armazenamento
  • Node pool
  • Cluster
Nome do cluster goog-k8s-cluster-name [cluster-name]
Espaço de nomes 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, consulte o artigo Esquema dos dados detalhados de custos de utilização.

Além disso, os seguintes espaços de nomes são usados para acompanhar os custos gerais e os recursos não atribuídos:

  • kube:system-overhead: isto representa os recursos de nós que não estão disponíveis para os pods. Estes recursos são reservados pelo sistema para executar a framework Kubernetes (incluindo, entre outros, kubelet, kube-proxy e containerd). Esta é a diferença entre a capacidade do nó e os recursos atribuíveis.
  • kube:unallocated: os recursos não são pedidos por cargas de trabalho nem pedidos para sobrecarga do sistema.

Se o GKE não conseguir determinar a atribuição de custos de um recurso, a exportação inclui um dos seguintes valores:

  • goog-k8s-unknown: o Cloud Billing não conseguiu processar a SKU. Isto pode ocorrer quando está a ser aprovisionada uma nova instância do Compute Engine. Pode esperar alguns valores goog-k8s-unknown durante o arranque e o encerramento do nó, por exemplo, quando o GKE dimensiona automaticamente um cluster.
  • goog-k8s-unsupported-sku: a atribuição de custos do GKE não suporta esta SKU. Trate isto da mesma forma que <blank>/NULL. Não existe garantia de que um SKU seja sempre etiquetado com este valor.
  • <blank>/NULL: a atribuição de custos do GKE não acompanha este recurso. Isto pode ocorrer quando a atribuição de custos do GKE não está ativada ou o recurso não pertence a um cluster gerido do GKE.

Os custos dos discos persistentes são monitorizados quando o armazenamento de apoio dos discos persistentes é reivindicado pelos pods.PersistentVolumeClaims Os custos do disco persistente herdam todos os metadados, como as etiquetas e os espaços de nomes do pod de reivindicação, até que os respetivos PersistentVolumeClaims sejam eliminados. Para os PersistentVolumeClaims eliminados, mas que retêm PersistentVolumes de acordo com a política de recuperação, os custos dos discos persistentes são monitorizados como não atribuídos.

As etiquetas aplicadas diretamente a PersistentVolumeClaims não aparecem na secção Faturação do Google Cloud da Google Cloud consola nem na exportação detalhada da Faturação do Google Cloud.

Para a RAM expandida, a mesma proporção do custo total é atribuída a uma carga de trabalho para os SKUs de RAM normal e RAM expandida com base no recurso pedido.

Ative a atribuição de custos do GKE

Pode ativar a atribuição de custos do GKE num cluster novo ou existente através da CLI gcloud ou da Google Cloud consola.

gcloud

Atualize um cluster com a flag --enable-cost-allocation:

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

Substitua CLUSTER_NAME pelo nome do cluster.

Também pode usar a flag --enable-cost-allocation quando criar um novo cluster através do comando gcloud container clusters create.

Consola

Para ativar a atribuição de custos do GKE num cluster existente, faça o seguinte:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola. Aceda ao Google Kubernetes Engine
  2. Clique no nome do cluster que quer modificar.
  3. Na página Clusters, na secção Funcionalidades, clique em junto a Atribuição de custos.
  4. Na caixa de diálogo Editar atribuição de custos, selecione a caixa de verificação Ativar atribuição de custos.
  5. Clique em Guardar alterações.

Verifique se a atribuição de custos do GKE está ativada

gcloud

Descreva o cluster:

gcloud container clusters describe CLUSTER_NAME

O resultado é semelhante ao seguinte:

...
costManagementConfig:
  enabled: true
...

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

Consola

Para verificar se a atribuição de custos do GKE está ativada num cluster existente, faça o seguinte:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola. Aceda ao Google Kubernetes Engine
  2. Clique no nome do cluster que quer modificar.
  3. Na página Clusters, na secção Funcionalidades, junto a Atribuição de custos, é apresentado se a atribuição de custos do GKE está ativada.

Filtre dados de custos do GKE

As consultas de exemplo seguintes mostram como filtrar e agrupar os custos do GKE para tipos de recursos suportados por nome do cluster, espaço de nomes e etiqueta.

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

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

Limpar

Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, desative a atribuição de custos do GKE para o cluster:

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

Também pode eliminar o cluster que criou.

O que se segue?