Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Call the Allocation API to query cost insights data

Última actualización: Oct 12, 2026

Consulta los datos de asignación de costos de un clúster por dimensión de carga de trabajo. Esta información se utiliza en la gobernanza financiera y la contabilidad.

Requisitos previos

Antes de empezar, asegúrese de cumplir con los requisitos previos descritos en Descripción general de cómo llamar a una API para consultar datos de costos.

Parámetros de solicitud y respuesta

Sintaxis de la solicitud

GET /v2/allocation

Parámetros de la solicitud

Parámetro

Tipo

Obligatorio

Descripción

window

string

Sí

El rango de tiempo que se va a consultar. El rango mínimo es de 24 horas. Acepta los siguientes formatos:

Palabras clave:week, month, yesterday, lastweek, lastmonth

Duración:24h, 7d

Par de fechas RFC3339 (separadas por comas): 2024-03-26T00:00:00Z,2024-03-27T00:00:00Z

Par de marcas de tiempo UNIX (separadas por comas, en segundos): 1711382400,1711468800

Ejemplos:

- window=yesterday — el día anterior

- window=lastweek — la semana anterior

- window=7d — los últimos 7 días

- window=2024-03-26T00:00:00Z,2024-03-27T00:00:00Z — un rango de fechas RFC3339 específico

filter

string

No

Filtra los resultados por carga de trabajo. Tipos de filtro compatibles:

- namespace

- controllerName (como csi-plugin y node-exporter)

- controllerKind (como ReplicaSet, DaemonSet y Job)

- pod

- label (como [app]:"nginx")

Para filtrar por varios valores del mismo tipo, sepárelos con comas: namespace:"default","kube-system"

Para combinar varios tipos de filtro, sepárelos con un signo más (+): namespace:"default"+label[app]:"nginx"

step

string

No

El intervalo que se usa para dividir el rango de tiempo en conjuntos de costos. Un conjunto de costos incluye los datos de costo de un objeto de Kubernetes, como un pod, dentro del intervalo. Valor predeterminado: el valor de window (devuelve un solo conjunto de costos para toda la ventana).

Ejemplos:

- step=1d — conjuntos de costos diarios (útil con window=lastweek o window=month)

- step=1w — conjuntos de costos semanales

aggregate

string

No

Agrega los resultados según la dimensión especificada. Valores compatibles:

- namespace — agrega por namespace

- controller — agrega por controlador individual

- controllerKind — agrega por tipo de controlador (DaemonSet, ReplicaSet, Job, etc.)

- label:<name> — agrega por el nombre de etiqueta especificado

- node — agrega por nodo de cómputo

idle

boolean

No

Indica si se incluyen los costos inactivos en los resultados. Valor predeterminado: true.

shareIdle

boolean

No

Indica si se distribuyen los costos inactivos entre las cargas de trabajo. Valor predeterminado: false.

shareSplit

string

No

La política de distribución de costos inactivos. Valores compatibles:

- weighted (predeterminado) — distribuye los costos inactivos de forma proporcional al uso de recursos de cada carga de trabajo

- even — distribuye los costos inactivos por igual entre todas las cargas de trabajo

idleByNode

boolean

No

Indica si se agregan los costos inactivos a nivel de nodo en lugar de a nivel de clúster. Solo surte efecto cuando aggregate=node y shareIdle=false. Valor predeterminado: false.

targetType

string

No

El alcance de la asignación de costos. Valores compatibles:

- cluster (predeterminado) — asigna los costos de todos los recursos del clúster

- node — asigna los costos a nivel de nodo

format

string

No

El formato de salida. Valores compatibles:

- json (predeterminado)

- csv

idleByNode solo surte efecto cuando se cumplen tanto aggregate=node como shareIdle=false . Si shareIdle=true , los costos inactivos ya se distribuyeron entre las cargas de trabajo y no se pueden agregar por nodo.

Parámetros de la respuesta

Parámetro Tipo Descripción
properties object Las propiedades del objeto de Kubernetes asociado.
pod string El nombre del pod.
node string El nombre del nodo.
namespace string El namespace.
controllerKind string El tipo de controlador.
controller string El nombre del controlador.
providerID string El ID de instancia de Elastic Compute Service (ECS) del nodo.
labels map[string]string Las etiquetas del pod.
Nota

Prometheus solo permite guiones bajos (_) en los nombres de las etiquetas. Si una etiqueta contiene guiones (-) o puntos (.), Prometheus los convierte en guiones bajos.

start string La hora de inicio del conjunto de costos.
end string La hora de finalización del conjunto de costos.
cpuCoreRequestAverage float El número promedio de vCPU solicitadas.
cpuCoreUsageAverage float El número promedio de vCPU en uso.
ramByteRequestAverage float La cantidad promedio de memoria solicitada, en bytes.
ramByteUsageAverage float La cantidad promedio de memoria en uso, en bytes.
cost float El costo asignado al servicio a partir del costo total del clúster.
costRatio float La proporción del costo asignado respecto al costo total del clúster.
customCost float El costo personalizado.

Consultar datos de análisis de costos

Todos los ejemplos usan curl para acceder a la API de Kubernetes. Para ver las instrucciones de configuración, consulte Usar la API de Kubernetes.

Consultar el costo asignado a un DaemonSet a partir del costo del clúster del día anterior

A continuación se muestra el comando que consulta el costo del día anterior para los pods del namespace kube-system que pertenecen al DaemonSet terway-eniip.

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/allocation" | jq .

Respuesta de ejemplo:

{
  "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.039,
        "cost": 4.497,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-j8c87": {
        "name": "kube-system/terway-eniip-j8c87",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-j8c87"
        },
        "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": 186293944.32,
        "cost": 6.504,
        "costRatio": 0.023,
        "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": 2.337,
        "costRatio": 0.008,
        "customCost": 0.505
      }
    }
  ]
}