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 |
|
|
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: Duración: Par de fechas RFC3339 (separadas por comas): Par de marcas de tiempo UNIX (separadas por comas, en segundos): Ejemplos: - - - - |
|
|
string |
No |
Filtra los resultados por carga de trabajo. Tipos de filtro compatibles: - - - - - Para filtrar por varios valores del mismo tipo, sepárelos con comas: Para combinar varios tipos de filtro, sepárelos con un signo más ( |
|
|
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 Ejemplos: - - |
|
|
string |
No |
Agrega los resultados según la dimensión especificada. Valores compatibles: - - - - - |
|
|
boolean |
No |
Indica si se incluyen los costos inactivos en los resultados. Valor predeterminado: |
|
|
boolean |
No |
Indica si se distribuyen los costos inactivos entre las cargas de trabajo. Valor predeterminado: |
|
|
string |
No |
La política de distribución de costos inactivos. Valores compatibles: - - |
|
|
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 |
|
|
string |
No |
El alcance de la asignación de costos. Valores compatibles: - - |
|
|
string |
No |
El formato de salida. Valores compatibles: - - |
idleByNodesolo surte efecto cuando se cumplen tantoaggregate=nodecomoshareIdle=false. SishareIdle=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 ( |
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
}
}
]
}