Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 11, 2026

Interrogez les données de répartition des coûts d'un cluster par dimension de charge de travail, à des fins de gouvernance financière et de comptabilité.

Prérequis

Avant de commencer, assurez-vous de respecter les prérequis décrits dans la rubrique Vue d'ensemble de l'appel d'une API pour interroger les données de coût.

Paramètres de requête et de réponse

Syntaxe de la requête

GET /v2/allocation

Paramètres de requête

Paramètre Type Obligatoire Description
window string Oui

Plage de temps à interroger. La plage minimale est de 24 heures. Formats acceptés :

Mots-clés : week, month, yesterday, lastweek, lastmonth

Durée : 24h, 7d

Paire de dates RFC3339 (séparées par une virgule) : 2024-03-26T00:00:00Z,2024-03-27T00:00:00Z

Paire d'horodatages UNIX (séparés par une virgule, en secondes) : 1711382400,1711468800

Exemples :

- window=yesterday : jour précédent

- window=lastweek : semaine précédente

- window=7d : 7 derniers jours

- window=2024-03-26T00:00:00Z,2024-03-27T00:00:00Z : plage de dates RFC3339 spécifique

filter string Non

Filtre les résultats par charge de travail. Types de filtres pris en charge :

- namespace

- controllerName (par exemple csi-plugin et node-exporter)

- controllerKind (par exemple ReplicaSet, DaemonSet et Job)

- pod

- label (par exemple [app]:"nginx")

Pour filtrer par plusieurs valeurs du même type, séparez les valeurs par des virgules : namespace:"default","kube-system"

Pour combiner plusieurs types de filtres, séparez-les par un signe plus (+) : namespace:"default"+label[app]:"nginx"

step string Non

Intervalle utilisé pour diviser la plage de temps en ensembles de coûts. Un ensemble de coûts inclut les données de coût d'un objet Kubernetes, tel qu'un pod, au sein de l'intervalle. Valeur par défaut : valeur de window (renvoie un seul ensemble de coûts pour toute la fenêtre).

Exemples :

- step=1d : ensembles de coûts quotidiens (utile avec window=lastweek ou window=month)

- step=1w : ensembles de coûts hebdomadaires

aggregate string Non

Agrège les résultats selon la dimension spécifiée. Valeurs prises en charge :

- namespace : agrégation par namespace

- controller : agrégation par contrôleur individuel

- controllerKind : agrégation par type de contrôleur (DaemonSet, ReplicaSet, Job, etc.)

- label:<name> : agrégation par nom de libellé spécifié

- node : agrégation par nœud de calcul

idle boolean Non Indique s'il faut inclure les coûts inactifs dans les résultats. Valeur par défaut : true.
shareIdle boolean Non Indique s'il faut répartir les coûts inactifs entre les charges de travail. Valeur par défaut : false.
shareSplit string Non

Politique de répartition des coûts inactifs. Valeurs prises en charge :

- weighted (par défaut) : répartit les coûts inactifs proportionnellement à l'utilisation des ressources de chaque charge de travail

- even : répartit les coûts inactifs également entre toutes les charges de travail

idleByNode boolean Non Indique s'il faut agréger les coûts inactifs au niveau du nœud plutôt qu'au niveau du cluster. Prend effet uniquement lorsque aggregate=node et shareIdle=false. Valeur par défaut : false.
targetType string Non

Étendue de la répartition des coûts. Valeurs prises en charge :

- cluster (par défaut) : répartit les coûts pour toutes les ressources du cluster

- node : répartit les coûts au niveau du nœud

format string Non

Format de sortie. Valeurs prises en charge :

- json (par défaut)

- csv

idleByNode prend effet uniquement lorsque aggregate=node et shareIdle=false . Si shareIdle=true , les coûts inactifs sont déjà répartis entre les charges de travail et ne peuvent pas être agrégés par nœud.

Paramètres de réponse

Paramètre Type Description
properties object Propriétés de l'objet Kubernetes associé.
pod string Nom du pod.
node string Nom du nœud.
namespace string Namespace.
controllerKind string Type de contrôleur.
controller string Nom du contrôleur.
providerID string ID d'instance Elastic Compute Service (ECS) du nœud.
labels map[string]string Libellés du pod.
Remarque

Prometheus n'autorise que les underscores (_) dans les noms de libellés. Si un libellé contient des tirets (-) ou des points (.), Prometheus les convertit en underscores.

start string Heure de début de l'ensemble de coûts.
end string Heure de fin de l'ensemble de coûts.
cpuCoreRequestAverage float Nombre moyen de vCPU demandés.
cpuCoreUsageAverage float Nombre moyen de vCPU utilisés.
ramByteRequestAverage float Quantité moyenne de mémoire demandée, en octets.
ramByteUsageAverage float Quantité moyenne de mémoire utilisée, en octets.
cost float Coût alloué au service à partir du coût total du cluster.
costRatio float Ratio du coût alloué par rapport au coût total du cluster.
customCost float Coût personnalisé.

Interrogez les données d'analyse des coûts

Tous les exemples utilisent curl pour accéder à l'API Kubernetes. Pour les instructions de configuration, consultez la rubrique Utilisation de l'API Kubernetes.

Interrogez le coût alloué à un DaemonSet à partir du coût du cluster de la veille

La commande suivante interroge le coût de la veille pour les pods du namespace kube-system appartenant au 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 .

Exemple de réponse :

{
  "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
      }
    }
  ]
}