Cost API を使用して、ACK クラスター内の Pod または名前空間の推定リアルタイムコストとリソース使用量データをクエリします。
前提条件
開始する前に、以下を確認してください。
「コストデータを照会するための API 呼び出しの概要」に記載されているすべての前提条件を完了していること。これには、
ack-metrics-adapterコンポーネントのデプロイとクラスターへの接続が含まれます。kubectlがインストールされ、クラスターへのアクセスが設定されていること。
サポートされているクエリディメンション
Cost API は、次のクエリディメンションをサポートしています。
Pod — 個々の Pod、複数の Pod、またはラベルでフィルタリングされた Pod によるクエリ
Namespace — 個々の名前空間またはすべての名前空間によるクエリ
DimensionType と Dimension を組み合わせて、特定の範囲をターゲットにします。どちらかのディメンションでラベルによってフィルタリングするには、LabelSelector を追加します。LabelSelector と DimensionType は AND ロジックで結合されます。
パラメーター
すべての例では、次のエンドポイントに対して kubectl get --raw を使用します。
/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/costこのエンドポイントにクエリパラメーターを追加して、結果をフィルタリングします。
| パラメーター | 説明 | デフォルト | 有効な値 |
|---|---|---|---|
DimensionType | コストデータをクエリするためのディメンション | Pod (すべての Pod) | Namespace、Pod |
Dimension | 特定の名前空間または Pod に結果をフィルタリングします。すべてを返す場合は省略します。複数の Pod をクエリするには、カンマ区切りの値を使用します: pod=<name1>,pod=<name2> | すべて | 名前空間名または Pod 名 |
LabelSelector | app ラベルで Pod をフィルタリングします | — | app=<label-value> |
TimeUnit | 返すコストデータの時間範囲 | hour | hour、day、week、month |
Summary | true に設定すると、Pod ごとのデータではなく、一致するすべての Pod の集計コストデータが返されます | false | true、false |
コストデータメトリック
各応答エントリには、次のコストメトリックが含まれます。
| フィールド | 単位 | 説明 |
|---|---|---|
cpu | vCPU コア | CPU 使用量 |
gpu | カウント | GPU カウント |
memory | KB | メモリ使用量 |
perCorePricing | $ (国際サイト) | Pod またはアプリケーションをホストするノード上の vCore の単価 |
costRatio | — | この Pod またはアプリケーションのコストとクラスターの総コストの比率。たとえば、0.2 はクラスターの総コストの 20% を意味します |
cost | $ (国際サイト) | クエリされた時間範囲内の Pod またはアプリケーションの総コスト |
customCost | — | クエリされた時間範囲内の Pod またはアプリケーションのカスタムコスト |
各エントリには、request、usage、limit のサブフィールドも含まれます。cpu、memory、gpu、および gpuMem のサブフィールドは次のとおりです。
| サブフィールド | 説明 |
|---|---|
request | Pod によってリクエストされたリソース量 |
usage | Pod の実際のリソース消費量 |
limit | Pod に設定されたリソース制限 |
例
例 1: 前の時間におけるクラスター内のすべての Pod のクエリ
kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost"例 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 .例 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 .例 4: ラベルによるPodのクエリ
次のコマンドは、過去1時間に app=nginx ラベルを持つすべてのPodをクエリします。ラベル値を実際の値に置き換えてください。
LabelSelectorとDimensionTypeは AND ロジックで結合されます。DimensionTypeを省略すると、ラベルに一致するすべてのPodをクエリします。
kubectl get --raw "/api/v1/namespaces/kube-system/services/ack-metrics-adapter-api-service:8080/proxy/cost?LabelSelector=app=nginx" | jq .例 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 .例 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 .次のステップ
より柔軟な時間範囲クエリと追加のディメンション (コントローラー、コントローラーの種類) については、「Cost V2 API を呼び出してコストデータをクエリする」をご参照ください。
会計目的で課金データに基づいてビジネスコストを割り当てるには、「Allocation API を呼び出してコストインサイトデータをクエリする」をご参照ください。