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 ( |
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.
Faça login no ACK console. No painel de navegação à esquerda, clique em ACK consoleClusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, clique em Applications > Helm.
Na página Helm, localize o
ack-alibaba-cloud-metrics-adaptere clique em Update na coluna Actions.-
No arquivo yaml, atualize o parâmetro
AlibabaCloudMetricsAdapter.costWeightse clique em OK.
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
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
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
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.