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

Container Service for Kubernetes:Cost APIを呼び出してコストデータを照会する

最終更新日:Nov 13, 2024

Cost APIを呼び出して、ある期間内の名前空間またはポッドの推定リアルタイムコストおよびリソースモニタリングデータを照会できます。

前提条件

APIを呼び出してコストデータを照会する概要」トピックで説明されている前提条件が満たされています。

コストデータを照会するためのパラメータ

クラスターに接続した後、対応するコマンドを実行してコストデータを照会します。 下表に、各パラメーターを説明します。

パラメーター

説明

ディメンションタイプ

クエリされるコストインサイトデータに基づくディメンション。 デフォルトでは、コストインサイトデータはポッドによって照会されます。 有効な値:

  • 名前空間: コストインサイトデータは、名前空間によって照会されます。

  • ポッド: コスト分析データはポッドによって照会されます。

ディメンション

コストインサイトデータをフィルタリングするかどうかを指定します。

  • DimensionTypeが名前空間に設定されている場合:

    • Dimensionを指定しない場合、すべての名前空間のコストインサイトデータが返されます。

    • Dimension=A名前空間を指定した場合、名前空間Aのコストインサイトデータのみが返されます。

    • LabelSelectorを指定すると、LabelSelectorによってフィルタリングされたコストインサイトデータが返されます。

  • DimensionTypeがPodに設定されている場合:

    • Dimensionを指定しない場合、すべてのポッドのコストインサイトデータが返されます。

    • Dimension=A Podを指定した場合、Pod Aのコストインサイトデータのみが返されます。

      説明

      複数のポッドを指定し、コンマ (,) で区切ることもできます。たとえば、Dimension=pod=node-exporter-7vtmj,pod=node-exporter-cn54qです。

    • LabelSelectorを指定すると、LabelSelectorによってフィルタリングされたコストインサイトデータが返されます。

LabelSelector

アプリケーション (app) ラベルでポッドをフィルタリングします。

TimeUnit

照会されるコストインサイトデータの時間範囲。 有効な値: hourdayweekmonth。 デフォルト値: hour

概要

このパラメーターをtrueに設定すると、指定された条件に一致するすべてのポッドの要約されたコストインサイトデータが返されます。 デフォルト値: false

コストデータ指標

  • cpu: 単位: vCores。

  • gpu: 単位: カウント。

  • memory: 単位: KB。

  • perCorePricing: 現在のポッドまたはクエリされたアプリケーションをホストするノードのvCoresの単価。 中国サイトのリソースの通貨単位は ¥ で、国際サイトのリソースの通貨単位は $です。

  • costRatio: 現在のポッドまたはクエリされたアプリケーションのコストとクラスターコストの合計の比率。 たとえば、比率が0.2の場合、クラスターコストの20% は現在のポッドまたはクエリされたアプリケーションに費やされます。

  • cost: 指定された時間範囲内の現在のポッドまたは照会されたアプリケーションのコスト。 中国サイトのリソースの通貨単位は ¥ で、国際サイトのリソースの通貨単位は $です。

  • customCost: 指定された時間範囲内の現在のポッドまたは照会されたアプリケーションのカスタムコスト。

コストデータを照会するコマンド

例1: 前の1時間以内のクラスター内のすべてのポッドのコストデータの照会

コマンド

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時間以内に名前空間内のすべてのポッドのコストデータを照会する

説明

前の1時間以内のデフォルト名前空間内のすべてのポッドのコストデータを照会します。 名前空間名を実際の値に置き換えます。

コマンド

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: 過去1時間以内のポッドのコストデータの照会

説明

過去1時間以内のnginx-deployment-basic-75d6678cbb-lg8v5という名前のポッドのコストデータを照会します。 ポッド名を実際の値に置き換えます。

コマンド

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: LabelSelectorによるコストデータのクエリ

説明

フィルター条件として、LabelSelectorとDimensionTypeの両方を指定できます。 LabelSelectorとDimensionTypeの論理関係はandです。 次の例では、前の1時間以内にapp=sample-appラベルを持つすべてのポッドのコストデータを照会します。 アプリケーションラベルを実際の値に置き換えます。

コマンド

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: 前日のポッドのコストデータを照会する

説明

前日のnginx-deployment-basic-75d6678cbb-lg8v5という名前のポッドのコストデータを照会します。 ポッド名を実際の値に置き換えます。

コマンド

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: 名前空間のコストデータのクエリ

説明

デフォルトの名前空間のコストデータを照会します。 名前空間名を実際の値に置き換えます。

コマンド

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

関連ドキュメント