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

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

最終更新日:Dec 09, 2024

Cost V2 APIを呼び出して、クラスターの推定ワークロードコストをリアルタイムで照会できます。 Cost V2 APIを呼び出すときに、時間範囲を指定し、ポッド名、名前空間、ラベル、コントローラ名 (csi-pluginなど) 、またはコントローラタイプ (ReplicaSet、DaemonSet、Jobなど) でワークロードをフィルターできます。 返されたコストデータに基づいて、リアルタイムのコストトレンドを分析できます。

前提条件

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

リクエストパラメーターとレスポンスパラメーター

リクエスト構文

GET /v2/cost

リクエストパラメーター

パラメーター

必須 / 任意

説明

window

String

照会する時間範囲。 次の形式がサポートされています。

  • キーワード。 例: today、week、month、昨日、lastweek、lastmonth。

  • 期間だ 例: 30m、12h、および7d。

  • RFC3339日付。 コンマ区切りの日付のペアをRFC3339形式で指定します。 例: 2024-03-26T00:00:00Z、2024-03-27T00:00:00Z。

  • UNIXのタイムスタンプ。 コンマ区切りのUNIXタイムスタンプのペアを指定します (秒単位) 。 例: 1711382400,1711468800。

filter

String

不可

ワークロードのフィルターオプション。 次のタイプのフィルターオプションがサポートされています。

  • namespace

  • controllerName (csi-pluginやnode-exporterなど)

  • controllerKind (ReplicaSet、DaemonSet、ジョブなど)

  • ポッドの作成

  • ラベル ([app]:"nginx" など)

同じタイプの複数のフィルターオプションを指定できます。 フィルターオプションはコンマ (,) で区切ります。 例: namespace:"default","kube-system"

複数のタイプのフィルターオプションを指定することもできます。 異なるタイプのフィルターオプションをプラス記号 (+) で区切ります。 例: namespace:"default" + label[app]:"nginx"

step

String

不可

時間範囲を分割するために使用される間隔。 stepパラメーターは、コストセットの間隔を指定します。 例: 1dまたは1w。 デフォルト値はwindowパラメーターの値です。

説明

コストセットには、間隔内のポッドなどのKubernetesオブジェクトのコストデータが含まれます。

aggregate

String

不可

異なるディメンションから返された結果の集計オプション。 次のタイプの集計オプションがサポートされています。

  • namespace

  • コントローラー

  • controllerKind

フォーマット

String

不可

照会されたコストの形式。 次のタイプのフォーマットオプションがサポートされています。

  • json (デフォルト値)

  • csv

応答パラメーター

パラメーター

タイプ

説明

properties

object

Kubernetesオブジェクトに関する情報。

ポッドの作成

String

ポッドの名前。

namespace

String

ポッドが属する名前空間。

controllerKind

String

コントローラのタイプ。

コントローラー

String

コントローラの名前。

start

String

コストセットの開始時刻。

end

String

コストセットの終了時間。

cpuCoreRequestAverage

float

ポッドによって要求されたCPUコアの平均数。

cpuCoreUsageAverage

float

ポッドで使用されているCPUコアの平均数。

ramByteRequestAverage

float

ポッドによって要求されたメモリの平均量。

ramByteUsageAverage

float

ポッドによって使用されるメモリの平均量。

コスト

float

ポッドの推定コスト。 コスト見積もりポリシーで使用されるデフォルトのCPU重みは100% です。 カスタムリソースの重みを指定するには、「コスト見積もりポリシー」をご参照ください。

costRatio

float

ポッドのコスト比。 このパラメーターは、合計クラスターコストに対するポッドコストの比率を示します。

customCost

float

カスタムコスト。

(オプション) 手順1: カスタムリソースの重みを指定する

cost V2 APIに適用されるコスト見積もりポリシーのデフォルトのCPU重みは100% です。 カスタムリソースの重みを指定するには、次の手順を実行します。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ヘルム] を選択します。

  3. Helmページで、ack-alibaba-cloud-metrics-adapterを見つけ、[操作] 列の [更新] をクリックします。

  4. ビジネス要件に基づいて、YAMLファイルのAlibaba CloudMetricsAdapter.costWeightsパラメーターを変更します。 このフィールドのデフォルト値は {"cpu": "1.0", "memory": "0.0"} です。 [OK] をクリックします。

    image

    コスト見積もりポリシーのCPU重みとメモリ重みを指定するには、コスト見積もりポリシーを参照してください。

ステップ2: コストデータの照会

このセクションでは、curlを使用してKubernetes APIにアクセスします。 詳細については、「Kubernetes APIの使用」をご参照ください。

例1: 前日のDaemonSetの推定コストの照会

コマンド

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/cost" | jq .

JSON形式のサンプル成功応答

サンプルレスポンスの表示

{
  "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.04,
        "cost": 1.622,
        "costRatio": 0.016,
        "customCost": 0.972
      },
      "kube-system/terway-eniip-fqxk8": {
        "name": "kube-system/terway-eniip-fqxk8",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-fqxk8"
        },
        "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": 72787722.24,
        "cost": 1.622,
        "costRatio": 0.016,
        "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": 0.843,
        "costRatio": 0.008,
        "customCost": 0.505
      }
    }
  ]
}

例2: 3時間以内のポッドの推定コストの照会 (時間単位で分割)

コマンド

curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=2024-03-24T00:00:00Z,2024-03-24T03:00:00Z' \
-d 'step=1h' \
-d 'filter=namespace:"kube-system"+pod:"terway-eniip-kz68n"' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .

JSON形式のサンプル成功応答

サンプルレスポンスの表示

{
  "data": [
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T00:00:00Z",
        "end": "2024-03-24T01:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63583378.285,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    },
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T01:00:00Z",
        "end": "2024-03-24T02:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63111168,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    },
    {
      "kube-system/terway-eniip-kz68n": {
        "name": "kube-system/terway-eniip-kz68n",
        "properties": {
          "controller": "terway-eniip",
          "controllerKind": "DaemonSet",
          "namespace": "kube-system",
          "pod": "terway-eniip-kz68n"
        },
        "start": "2024-03-24T02:00:00Z",
        "end": "2024-03-24T03:00:00Z",
        "cpuCoreRequestAverage": 0.35,
        "cpuCoreUsageAverage": 0.001,
        "ramByteRequestAverage": 209715200,
        "ramByteUsageAverage": 63430656,
        "cost": 0.075,
        "costRatio": 0.025,
        "customCost": 0.045
      }
    }
  ]
}