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 : Durée : Paire de dates RFC3339 (séparées par une virgule) : Paire d'horodatages UNIX (séparés par une virgule, en secondes) : Exemples : - - - - |
filter |
string | Non |
Filtre les résultats par charge de travail. Types de filtres pris en charge : - - - - - Pour filtrer par plusieurs valeurs du même type, séparez les valeurs par des virgules : Pour combiner plusieurs types de filtres, séparez-les par un signe plus ( |
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 Exemples : - - |
aggregate |
string | Non |
Agrège les résultats selon la dimension spécifiée. Valeurs prises en charge : - - - - - |
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 : - - |
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 : - - |
format |
string | Non |
Format de sortie. Valeurs prises en charge : - - |
idleByNodeprend effet uniquement lorsqueaggregate=nodeetshareIdle=false. SishareIdle=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 ( |
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
}
}
]
}