Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Consultar dados de custo via Cost V2 API

Última atualização: Jun 27, 2026

Consulte custos estimados em tempo real para workloads do cluster usando a Cost V2 API. Aplique janelas de tempo flexíveis e filtros por pod, namespace, rótulo, nome do controlador ou tipo de controlador para analisar tendências de custo em tempo real com o endpoint GET /v2/cost, filtrando por pod, namespace, rótulo ou controlador.

Pré-requisitos

Conclua a configuração descrita em Visão geral da obtenção de dados de custo usando APIs.

Referência da API

Sintaxe da solicitação

GET /v2/cost

Parâmetros da solicitação

Parâmetro Tipo Obrigatório Descrição
window string Sim Intervalo de tempo da consulta. Formatos aceitos: <br>- today — dia atual <br>- yesterday — dia anterior <br>- week — semana atual <br>- lastweek — semana anterior <br>- month — mês atual <br>- lastmonth — mês anterior <br>- Duração: 30m (últimos 30 minutos), 12h (últimas 12 horas), 7d (últimos 7 dias) <br>- Intervalo de datas RFC3339: 2024-03-26T00:00:00Z,2024-03-27T00:00:00Z <br>- Intervalo de timestamp Unix (segundos): 1711382400,1711468800
filter string Não Filtra por categoria de recurso: namespace, controllerName (ex.: csi-plugin), controllerKind (ex.: DaemonSet, ReplicaSet, Job), pod, label (ex.: [app]:"nginx"). <br><br>Separe vários valores com vírgulas: namespace:"default","kube-system". <br><br>Combine categorias com +: namespace:"default"+label[app]:"nginx".
step string Não Intervalo de tempo para dividir os resultados em vários conjuntos de custos (ex.: 1d ou 1w ). Se omitido, toda a window retorna como um único conjunto de custos. < br >
Nota

Um conjunto de custos contém dados de custo de um objeto do Kubernetes (como um pod) durante um período específico.

aggregate string Não Dimensão de agregação. Valores aceitos: <br>- namespace — em todos os namespaces do cluster <br>- controller — por controlador individual <br>- controllerKind — por tipo de controlador (ex.: DaemonSet, ReplicaSet) <br>- label:<name> — por chave de rótulo <br>- node — por nó de computação
idle boolean Não Defina se inclui custos ociosos. Padrão: true.
shareIdle boolean Não Defina se distribui custos ociosos entre as alocações não ociosas. Padrão: false.
shareSplit string Não Política de alocação de custos ociosos. Valores válidos: <br>- weighted (padrão) <br>- even
idleByNode boolean Não Defina se agrega custos ociosos no nível do nó antes da distribuição. Aplica-se apenas quando aggregate=node e shareIdle=false. Padrão: false.
format string Não Formato de saída. Valores válidos: json (padrão), csv.

Parâmetros de resposta

Parâmetro Tipo Descrição
properties object Propriedades do objeto Kubernetes.
pod string Nome do pod.
node string Nome do nó.
namespace string Namespace.
controllerKind string Tipo de controlador (ex.: DaemonSet, ReplicaSet).
controller string Nome do controlador.
providerID string ID da instância ECS do nó.
labels map[string]string Rótulos do pod.
Nota

O Prometheus aceita apenas underscores (_) nos nomes dos rótulos. Hífens (-) e pontos (.) são convertidos para underscores.

start string Hora de início do conjunto de custos.
end string Hora de término do conjunto de custos.
cpuCoreRequestAverage float Média de núcleos de CPU solicitados no período.
cpuCoreUsageAverage float Média de núcleos de CPU usados no período.
ramByteRequestAverage float Média de memória solicitada no período, em bytes.
ramByteUsageAverage float Média de memória usada no período, em bytes.
cost float Custo estimado do período. Padrão: peso de CPU de 100%. Consulte Políticas de estimativa de custo para personalizar.
costRatio float Fração do custo total do cluster (custo do recurso / custo total do cluster).
customCost float Custo calculado com base em uma política de estimativa personalizada.

(Opcional) Etapa 1: Personalizar pesos de custo de recursos

Por padrão, a Cost V2 API aplica peso de CPU de 100% ({"cpu": "1.0", "memory": "0.0"}). Para ponderar CPU e memória simultaneamente, atualize o chart Helm do ack-alibaba-cloud-metrics-adapter.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em ACK consoleClusters.

  2. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, clique em Applications > Helm.

  3. Na página Helm, localize o ack-alibaba-cloud-metrics-adapter e clique em Update na coluna Actions.

  4. No arquivo yaml, atualize o parâmetro AlibabaCloudMetricsAdapter.costWeights e clique em OK.

    image

    Consulte Políticas de estimativa de custo.

Etapa 2: Consultar dados de custo

Os exemplos abaixo usam curl com autenticação por certificado de cliente. Para obter instruções de configuração, consulte Usar a API do Kubernetes.

Exemplo 1: Consultar custos de DaemonSet do dia anterior

Este exemplo filtra por namespace, tipo de controlador e rótulo para retornar dados de custo por pod referentes ao dia anterior.

Solicitação

curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
  -d 'window=yesterday' \
  -d 'filter=namespace:"kube-system"+controllerKind:"DaemonSet"+label[app]:"terway-eniip"' \
  "$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .

Resposta de exemplo

Visualize a resposta de exemplo

{
  "data": [
    {
      "kube-system/terway-eniip-88286": {
        "name": "kube-system/terway-eniip-88286",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-88286"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 65815511.04,
        "cost": 1.622,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-fqxk8": {
        "name": "kube-system/terway-eniip-fqxk8",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-fqxk8"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 72787722.24,
        "cost": 1.622,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-xjsr8": {
        "name": "kube-system/terway-eniip-xjsr8",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-xjsr8"
        },
        "start": "2024-03-25T00:00:00+08:00",
        "end": "2024-03-26T00:00:00+08:00",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 53661380.923,
        "cost": 0.843,
        "costRatio": 0.008,
        "customCost": 0.505
      }
    }
  ]
}

Exemplo 2: Consultar custos horários de pods em uma janela de 3 horas

Neste caso, o parâmetro step=1h divide uma janela de 3 horas em três conjuntos de custos horários.

Solicitação

curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
  -d 'window=2024-03-24T00:00:00Z,2024-03-24T03:00:00Z' \
  -d 'step=1h' \
  -d 'filter=namespace:"kube-system"+pod:"terway-eniip-kz68n"' \
  "$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .

Resposta de exemplo

Visualize a resposta de exemplo

{
  "data": [
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T00:00:00Z",
        "end": "2024-03-24T01:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63583378.285,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    },
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T01:00:00Z",
        "end": "2024-03-24T02:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63111168,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    },
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T02:00:00Z",
        "end": "2024-03-24T03:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63430656,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    }
  ]
}

Exemplo 3: Consultar custos agregados pelo rótulo app

Aqui, o uso de aggregate=label:app agrupa os custos pelo rótulo app.

Solicitação

curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
  -d 'window=2h' \
  -d 'aggregate=label:app' \
  "$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .

Resposta de exemplo

Visualize a resposta de exemplo

{
  "data": [
    {
      "__idle__": {
        "name": "__idle__",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 0,
        "cpuCoreUsageAverage": 0,
        "ramByteRequestAverage": 0,
        "ramByteUsageAverage": 0,
        "cost": 3.8230000000000004,
        "costRatio": 0.6371666666666664,
        "customCost": 0
      },
      "__unallocated__": {
        "name": "__unallocated__",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 1.135,
        "cpuCoreUsageAverage": 0.024,
        "ramByteRequestAverage": 1901068288,
        "ramByteUsageAverage": 646283264,
        "cost": 0.6000000000000001,
        "costRatio": 0.09999999999999999,
        "customCost": 0
      },
      "ack-alibaba-cloud-metrics-adapter": {
        "name": "ack-alibaba-cloud-metrics-adapter",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 0.24,
        "cpuCoreUsageAverage": 0.004,
        "ramByteRequestAverage": 482344960,
        "ramByteUsageAverage": 96964608,
        "cost": 0.064,
        "costRatio": 0.010666666666666666,
        "customCost": 0
      },
      "terway-eniip": {
        "name": "terway-eniip",
        "start": "2024-12-17T09:50:30+08:00",
        "end": "2024-12-17T11:50:30+08:00",
        "cpuCoreRequestAverage": 1.0499999999999998,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 629145600,
        "ramByteUsageAverage": 122054656,
        "cost": 0.5609999999999999,
        "costRatio": 0.0935,
        "customCost": 0
      }
    }
  ]
}

Próximas etapas

A Allocation API combina dados de faturamento e custos do cluster para reconciliação de custos amortizados. Consulte Obter dados usando a Allocation API.