すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Cost API を使用したコストデータの取得

最終更新日:Mar 26, 2026

Cost API を使用して、ACK クラスター内の Pod または名前空間の推定リアルタイムコストとリソース使用量データをクエリします。

前提条件

開始する前に、以下を確認してください。

  • コストデータを照会するための API 呼び出しの概要」に記載されているすべての前提条件を完了していること。これには、ack-metrics-adapter コンポーネントのデプロイとクラスターへの接続が含まれます。

  • kubectl がインストールされ、クラスターへのアクセスが設定されていること。

サポートされているクエリディメンション

Cost API は、次のクエリディメンションをサポートしています。

  • Pod — 個々の Pod、複数の Pod、またはラベルでフィルタリングされた Pod によるクエリ

  • Namespace — 個々の名前空間またはすべての名前空間によるクエリ

DimensionTypeDimension を組み合わせて、特定の範囲をターゲットにします。どちらかのディメンションでラベルによってフィルタリングするには、LabelSelector を追加します。LabelSelectorDimensionType は AND ロジックで結合されます。

パラメーター

すべての例では、次のエンドポイントに対して kubectl get --raw を使用します。

/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost

このエンドポイントにクエリパラメーターを追加して、結果をフィルタリングします。

パラメーター説明デフォルト有効な値
DimensionTypeコストデータをクエリするためのディメンションPod (すべての Pod)NamespacePod
Dimension特定の名前空間または Pod に結果をフィルタリングします。すべてを返す場合は省略します。複数の Pod をクエリするには、カンマ区切りの値を使用します: pod=<name1>,pod=<name2>すべて名前空間名または Pod 名
LabelSelectorapp ラベルで Pod をフィルタリングしますapp=<label-value>
TimeUnit返すコストデータの時間範囲hourhourdayweekmonth
Summarytrue に設定すると、Pod ごとのデータではなく、一致するすべての Pod の集計コストデータが返されますfalsetruefalse

コストデータメトリック

各応答エントリには、次のコストメトリックが含まれます。

フィールド単位説明
cpuvCPU コアCPU 使用量
gpuカウントGPU カウント
memoryKBメモリ使用量
perCorePricing$ (国際サイト)Pod またはアプリケーションをホストするノード上の vCore の単価
costRatioこの Pod またはアプリケーションのコストとクラスターの総コストの比率。たとえば、0.2 はクラスターの総コストの 20% を意味します
cost$ (国際サイト)クエリされた時間範囲内の Pod またはアプリケーションの総コスト
customCostクエリされた時間範囲内の Pod またはアプリケーションのカスタムコスト

各エントリには、requestusagelimit のサブフィールドも含まれます。cpumemorygpu、および gpuMem のサブフィールドは次のとおりです。

サブフィールド説明
requestPod によってリクエストされたリソース量
usagePod の実際のリソース消費量
limitPod に設定されたリソース制限

例 1: 前の時間におけるクラスター内のすべての Pod のクエリ

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost"

期待される出力を表示するために展開

[
  {
    "metadata": {
      "timestamp": "2023-02-14T03:27:18Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "arms-springboot-demo-subcomponent-7f94c7f597-5l8tc"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.022,
      "memory": 1538784,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T03:27:18Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "thanos-query-74cfcd459f-pf54n"
    },
    "request": {
      "cpu": 0.1,
      "memory": 131072,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.001,
      "memory": 90780,
      "gpu": 0,
      "gpuMem": 0
    },
    ...
  }
]

例 2:直近1時間における名前空間内のすべての Pod のクエリ

default をターゲットの名前空間名に置き換えます。

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Namespace&Dimension=default" | jq .

展開して期待される出力を表示

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:08:15Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": "test60-test-chart-v2-5cd85b946c-ntcct"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 18336,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0,
    "costRatio": 0,
    "cost": 0
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:08:15Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": "nginx"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    ...
  }
]

例 3: 特定の Pod の過去 1 時間のクエリ

Pod 名を実際の値に置き換えてください。

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Pod&Dimension=pod=nginx-deployment-basic-75d6678cbb-lg8v5" | jq .

[期待される出力] を表示するために展開

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:09:50Z",
      "timeUnit": "hour",
      "DimensionType": "Pod",
      "Dimension": "pod=nginx-deployment-basic-75d6678cbb-lg8v5",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.002,
      "memory": 50148,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  }
]

例 4: ラベルによるPodのクエリ

次のコマンドは、過去1時間に app=nginx ラベルを持つすべてのPodをクエリします。ラベル値を実際の値に置き換えてください。

LabelSelectorDimensionType は AND ロジックで結合されます。DimensionType を省略すると、ラベルに一致するすべてのPodをクエリします。
kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?LabelSelector=app=nginx" | jq .

[展開して期待される出力を表示]

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:24Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.002,
      "memory": 50148,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010671219720414044,
    "cost": 0.1
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:24Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-675b8d6f54-vqxvd"
    },
    "request": {
      "cpu": 0.25,
      "memory": 524288,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 13548,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.005335609860207022,
    "cost": 0.05
  },
  {
    "metadata": {
      "timestamp": "2023-02-14T04:10:25Z",
      "timeUnit": "hour",
      "DimensionType": "",
      "Dimension": "",
      "PodName": "nginx-deployment-basic-7456bcd48d-r87rz"
    },
    "request": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0,
      "memory": 223492,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0,
    "costRatio": 0,
    "cost": 0
  }
]

例 5:前日の Pod のコストの照会

Pod 名を実際の値に置き換えてください。

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Pod&Dimension=pod=nginx-deployment-basic-75d6678cbb-lg8v5&TimeUnit=day" | jq .

展開して期待される出力を表示

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:11:04Z",
      "timeUnit": "day",
      "DimensionType": "Pod",
      "Dimension": "pod=nginx-deployment-basic-75d6678cbb-lg8v5",
      "PodName": "nginx-deployment-basic-75d6678cbb-lg8v5"
    },
    "request": {
      "cpu": 0.5,
      "memory": 0,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.001,
      "memory": 50196,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 0.5,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 0.2,
    "costRatio": 0.010571112959515542,
    "cost": 2.402
  }
]

例 6:名前空間単位の集計コストを照会する

Summary=true を設定すると、Pod 単位の結果ではなく、名前空間内のすべての Pod に関する単一の集計エントリが取得されます。default を対象の名前空間名に置き換えます。

kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?DimensionType=Namespace&Dimension=default&Summary=true" | jq .

期待される出力を表示するには、クリックしてください。

[
  {
    "metadata": {
      "timestamp": "2023-02-14T04:12:48Z",
      "timeUnit": "hour",
      "DimensionType": "Namespace",
      "Dimension": "default",
      "PodName": ""
    },
    "request": {
      "cpu": 12,
      "memory": 7045120,
      "gpu": 0,
      "gpuMem": 0
    },
    "usage": {
      "cpu": 0.053,
      "memory": 4901208,
      "gpu": 0,
      "gpuMem": 0
    },
    "limit": {
      "cpu": 0,
      "memory": 6553600,
      "gpu": 0,
      "gpuMem": 0
    },
    "perCorePricing": 4.061,
    "costRatio": 0.01609432143753053,
    "cost": 3.657
  }
]

次のステップ

参考文献