Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Obter dados de custo usando a Cost API

Última atualização: Jun 27, 2026

Use a Cost API para consultar estimativas de custo em tempo real e dados de uso de recursos de pods ou namespaces em um cluster ACK.

Pré-requisitos

Antes de começar, verifique se você:

Dimensões de consulta compatíveis

A Cost API oferece suporte às seguintes dimensões de consulta:

  • Pod: consulte por pod individual, vários pods ou pods filtrados por rótulo

  • Namespace: consulte por namespace individual ou todos os namespaces

Use DimensionType e Dimension juntos para definir um escopo específico. Adicione LabelSelector para filtrar por rótulo em qualquer dimensão. Os parâmetros LabelSelector e DimensionType combinam-se com lógica AND.

Parâmetros

Todos os exemplos usam kubectl get --raw no seguinte endpoint:

/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost

Anexe parâmetros de consulta a este endpoint para filtrar resultados.

Parâmetro

Descrição

Padrão

Valores válidos

DimensionType

Dimensão para consulta dos dados de custo

Pod (todos os pods)

Namespace, Pod

Dimension

Filtra resultados para um namespace ou pod específico. Omita para retornar todos. Para consultar vários pods, use valores separados por vírgula: pod=<nome1>,pod=<nome2>

Todos

Nome de um namespace ou nome de um pod

LabelSelector

Filtra pods pelo rótulo app

—

app=<valor-do-rotulo>

TimeUnit

Intervalo de tempo dos dados de custo a retornar

hour

hour, day, week, month

Summary

Se definido como true, retorna dados de custo agregados para todos os pods correspondentes em vez de dados individuais por pod

false

true, false

Métricas de dados de custo

Cada entrada da resposta inclui as seguintes métricas de custo:

Campo

Unidade

Descrição

cpu

vCores

Uso de CPU

gpu

Contagem

Quantidade de GPUs

memory

KB

Uso de memória

perCorePricing

$ (Site internacional)

Preço unitário de vCores no nó que hospeda o pod ou aplicação

costRatio

—

Proporção do custo deste pod ou aplicação em relação ao custo total do cluster. Por exemplo, 0.2 significa 20% do custo total do cluster

cost

$ (Site internacional)

Custo total do pod ou aplicação no intervalo de tempo consultado

customCost

—

Custo personalizado do pod ou aplicação no intervalo de tempo consultado

Cada entrada também inclui os subcampos request, usage e limit para cpu, memory, gpu e gpuMem:

Subcampo

Descrição

request

Quantidade de recursos solicitada pelo pod

usage

Consumo real de recursos do pod

limit

Limite de recursos configurado para o pod

Exemplos

Exemplo 1: Consultar todos os pods no cluster na última hora

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost"

Expandir para visualizar a saída esperada

[
  {
    "metadata": {
      "timestamp": "2023-02-14T03:27:18Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "arms-springboot-demo-subcomponent-7f94c7f597-5l8tc"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.022,
      "memory": 1538784,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T03:27:18Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "thanos-query-74cfcd459f-pf54n"
    },
    "request": {
      "cpu": 0.1,
      "memory": 131072,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.001,
      "memory": 90780,
      "gpu": 0,
      "gpuMem": 0
    },
    ...
  }
]

Exemplo 2: Consultar todos os pods em um namespace na última hora

Substitua default pelo nome do namespace desejado.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Namespace&Dimension=default" | jq .

Expandir para visualizar a saída esperada

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:08:15Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": "test60-test-chart-v2-5cd85b946c-ntcct"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 18336,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0,
    "costRatio": 0,
    "cost": 0
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:08:15Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": "nginx"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    ...
  }
]

Exemplo 3: Consultar um pod específico na última hora

Substitua o nome do pod pelo valor real.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Pod&Dimension=pod=nginx-deployment-basic-75d6678cbb-lg8v5" | jq .

Expandir para visualizar a saída esperada

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:09:50Z",
      "timeUnit": "hour",
      "DimensionType": "Pod",
      "Dimension": "pod=nginx-deployment-basic-75d6678cbb-lg8v5",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.002,
      "memory": 50148,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  }
]

Exemplo 4: Consultar pods por rótulo

O comando a seguir consulta todos os pods com o rótulo app=nginx na última hora. Substitua o valor do rótulo pelo valor real.

LabelSelector e DimensionType combinam-se com lógica AND. A omissão de DimensionType consulta todos os pods correspondentes ao rótulo.
kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?LabelSelector=app=nginx" | jq .

Expandir para visualizar a saída esperada

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:24Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.002,
      "memory": 50148,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:24Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-675b8d6f54-vqxvd"
    },
    "request": {
      "cpu": 0.25,
      "memory": 524288,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 13548,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.005335609860207022,
    "cost": 0.05
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:25Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-deployment-basic-7456bcd48d-r87rz"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 223492,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0,
    "costRatio": 0,
    "cost": 0
  }
]

Exemplo 5: Consultar o custo de um pod no último dia

Substitua o nome do pod pelo valor real.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Pod&Dimension=pod=nginx-deployment-basic-75d6678cbb-lg8v5&TimeUnit=day" | jq .

Expandir para visualizar a saída esperada

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:11:04Z",
      "timeUnit": "day",
      "DimensionType": "Pod",
      "Dimension": "pod=nginx-deployment-basic-75d6678cbb-lg8v5",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.001,
      "memory": 50196,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010571112959515542,
    "cost": 2.402
  }
]

Exemplo 6: Consultar custo agregado para um namespace

Defina Summary=true para obter uma única entrada agregada para todos os pods no namespace, em vez de resultados individuais por pod. Substitua default pelo nome do namespace desejado.

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Namespace&Dimension=default&Summary=true" | jq .

Clique em para visualizar a saída esperada

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:12:48Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": ""
    },
    "request": {
      "cpu": 12,
      "memory": 7045120,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.053,
      "memory": 4901208,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 6553600,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 4.061,
    "costRatio": 0.01609432143753053,
    "cost": 3.657
  }
]

Próximos passos

Referências