Cost V2 APIを呼び出して、クラスターの推定ワークロードコストをリアルタイムで照会できます。 Cost V2 APIを呼び出すと、時間範囲を指定し、ポッド名、名前空間、ラベル、コントローラー (csi-pluginなど) 、またはコントローラータイプ (ReplicaSet、DaemonSet、Jobなど) でワークロードをフィルタできます。 返されたコストデータに基づいて、リアルタイムのコストトレンドを分析できます。
前提条件
「APIを呼び出してコストデータを照会する概要」トピックで説明されている前提条件が満たされています。
リクエストパラメーターとレスポンスパラメーター
リクエスト構文
GET /v2/costリクエストパラメーター
パラメーター | 型 | 必須 / 任意 | 説明 |
window | String | 対象 | 照会する時間範囲。 次の形式がサポートされています。
|
filter | String | 非対象 | ワークロードのフィルターオプション。 次のタイプのフィルターオプションがサポートされています。
同じタイプの複数のフィルターオプションを指定できます。 フィルターオプションはコンマ (,) で区切ります。 例: 複数のタイプのフィルターオプションを指定することもできます。 異なるタイプのフィルターオプションをプラス記号 ( |
step | String | 非対象 | 時間範囲を分割するために使用される間隔。 stepパラメーターは、コストセットの間隔を指定します。 例: 1dまたは1w。 デフォルト値は 説明 コストセットには、間隔内のポッドなどのKubernetesオブジェクトのコストデータが含まれます。 |
aggregate | String | 非対象 | 異なるディメンションから返された結果の集計オプション。 次のタイプのフィルターオプションがサポートされています。
|
アイドル | Boolean | 非対象 | アイドルコストを表示または処理するかどうかを指定します。 デフォルト値:true |
shareIdle | Boolean | 非対象 | 各リソースにアイドルコストを割り当てるかどうかを指定します。 デフォルト値:false |
shareSplit | String | 非対象 | アイドルコスト割り当てポリシー。 次のタイプのフィルターオプションがサポートされています。
|
idleByNode | Boolean | 非対象 | 各ノードのアイドルコストを集計するかどうかを指定します。 このパラメーターは、集計パラメーターをnodeに設定し、shareIdleパラメーターをfalseに設定した場合にのみ有効になります。 デフォルト値:false |
フォーマット | String | 非対象 | 次のタイプのフィルターオプションがサポートされています。
|
応答パラメーター
パラメーター | タイプ | 説明 |
properties | object | Kubernetesオブジェクトに関する情報。 |
ポッドの作成 | String | ポッドの名前。 |
node | String | 承認ノードの名前。 |
namespace | String | ポッドが属する名前空間。 |
controllerKind | String | コントローラのタイプ。 |
コントローラー | String | コントローラの名前。 |
providerID | String | ノードに対応するECS (Elastic Compute Service) インスタンスのID。 |
labels | map[string]string | ポッドのラベル。 説明 Prometheusでは、ラベルにアンダースコア (_) のみを使用できます。 ラベルにハイフン (-) やアペリオド (.) などのシンボルが含まれている場合、プロメテウスはシンボルをアンダースコア (_) に変換します。 |
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% です。 カスタムリソースの重みを指定するには、次の手順を実行します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
Helmページで、ack-alibaba-cloud-metrics-adapterを見つけ、[操作] 列の [更新] をクリックします。
ビジネス要件に基づいて、YAML設定ファイルの
Alibaba CloudMetricsAdapter.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時間以内のポッドの推定コストの照会 (時間単位で分割)
コマンド
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を使用すると、会計目的で請求書に基づいてビジネスコストを割り当てることができます。 詳細については、「割り当てAPIを呼び出してコストインサイトデータを照会する」をご参照ください。