Cost V2 API を使用すると、クラスターのワークロードに対するリアルタイムの推定コストを照会できます。柔軟な期間を指定したり、Pod、名前空間、ラベル、コントローラー名(例:`csi-plugin`)、コントローラー種別(例:`ReplicaSet`、`DaemonSet`、`Job`)などのディメンションでフィルター処理したりできます。この機能は、リアルタイムでのコスト動向分析に有効です。
前提条件
「API を使用したコストデータ取得の概要」に記載されている前提条件を完了してください。
リクエストおよびレスポンスパラメーター
リクエスト構文
GET /v2/cost
リクエストパラメーター
|
パラメーター |
型 |
必須 |
説明 |
|
window |
string |
はい |
照会対象の期間。以下の形式がサポートされています:
|
|
filter |
string |
いいえ |
リソースカテゴリで結果をフィルター処理します。以下のカテゴリがサポートされています:
同一カテゴリに対して複数の値を指定する場合は、カンマ(,)で区切ります(例: 異なるカテゴリを組み合わせる場合は、プラス記号(+)を使用します(例: |
|
step |
string |
いいえ |
応答を複数のコストセットに分割するための時間間隔(例:`1d`、`1w`)。指定しない場合、全体の 説明
コストセットとは、特定の期間における Kubernetes オブジェクト(例:Pod)のコストの集合です。 |
|
aggregate |
string |
いいえ |
クエリ結果を集計するディメンション。以下のディメンションがサポートされています:
|
|
idle |
boolean |
いいえ |
アイドルコストを含めて処理するかどうか。デフォルト値は |
|
shareIdle |
boolean |
いいえ |
アイドルコストをリソースに割り当てるかどうか。デフォルト値は |
|
shareSplit |
string |
いいえ |
アイドルコストの割り当てポリシー。以下の値がサポートされています:
|
|
idleByNode |
boolean |
いいえ |
アイドルコストをノード単位で集計するかどうかを指定します。このパラメーターは、 |
|
format |
string |
いいえ |
コストデータのエクスポート形式。以下の形式がサポートされています:
|
レスポンスパラメーター
|
パラメーター |
型 |
説明 |
|
properties |
object |
関連付けられた Kubernetes オブジェクトのプロパティです。 |
|
pod |
string |
Pod の名前です。 |
|
node |
string |
ノードの名前です。 |
|
namespace |
string |
名前空間です。 |
|
controllerKind |
string |
コントローラーの種別です。 |
|
controller |
string |
コントローラーの名前です。 |
|
providerID |
string |
ノードに対応する Elastic Compute Service (ECS) インスタンスの ID です。 |
|
labels |
map[string]string |
Pod のラベルです。 説明
Prometheus では、ラベルにアンダースコア(_)のみがサポートされます。ラベルにハイフン(-)やピリオド(.)などの他の記号が含まれている場合、Prometheus はそれらをアンダースコア(_)に変換します。 |
|
start |
string |
コストセットの開始時刻です。 |
|
end |
string |
コストセットの終了時刻です。 |
|
cpuCoreRequestAverage |
float |
要求された CPU コア数の平均値です。 |
|
cpuCoreUsageAverage |
float |
使用された CPU コア数の平均値です。 |
|
ramByteRequestAverage |
float |
要求されたメモリ量の平均値です。 |
|
ramByteUsageAverage |
float |
使用されたメモリ量の平均値です。 |
|
cost |
float |
推定コストです。デフォルトでは、コスト見積もりポリシーにおいて CPU の重みが 100% と設定されています。リソースの重みをカスタマイズするには、「コスト見積もりポリシー」をご参照ください。 |
|
costRatio |
float |
リソースのコストがクラスター全体のコストに占める比率です。 |
|
customCost |
float |
カスタムコストです。 |
(任意)ステップ 1:リソースコストの重みをカスタマイズ
デフォルトでは、Cost V2 API は CPU の重みが 100% のコスト見積もりポリシーを使用します。この重みをカスタマイズするには、以下の手順を実行します。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
Helm ページで、
ack-alibaba-cloud-metrics-adapterを見つけ、更新 をクリックします(アクション 列)。 -
YAML ファイルで、
AlibabaCloudMetricsAdapter.costWeightsパラメーターを変更します。デフォルト値は{"cpu": "1.0", "memory": "0.0"}です。変更後、OK をクリックします。
混合リソース(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 形式)
例 2:3 時間分の 1 時間ごとの Pod コストを照会
リクエスト
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 形式)
例 3: app ラベルごとのコストのクエリ
リクエスト
curl -G -k --cert ./client-cert.pem --key ./client-key.pem \
-d 'window=2h' \
-d 'aggregate=label:app' \
"$APISERVER/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/v2/cost" | jq .
サンプル応答(JSON 形式)
関連ドキュメント
Allocation API は請求書データを統合し、調整用の償却コストを提供します。詳細については、「Allocation API を使用したデータ取得」をご参照ください。