デフォルトのコスト配分ポリシーに加えて、コスト管理スイートはカスタムコスト会計ポリシーをサポートしています。クラウドリソースのコスト配分に対する要件が高い場合、またはコスト配分をカスタマイズする必要がある場合は、カスタムリソース価格を構成できます。
ユースケース
カスタムコスト会計ポリシーに基づいて、詳細な IT 支出ガバナンスを実装できます。カスタムコスト会計ポリシーは、次のシナリオに適しています。
企業の O&M チームが、基盤となる計算資源を企業のさまざまな事業部門に再販する。
企業は、動的なリソース価格によって生じる事業コストの差異をなくしたいと考えています。たとえば、同じ構成の Pod が異なる仕様のノードにスケジュールされると、ノードで発生する料金が異なります。
企業のさまざまな部門が、異なるオーバーコミット率に基づいて、同じリソースリクエストを持つ Pod を同じノードにデプロイします。この場合、部門間で差別化されたコスト会計を実装するには、Pod の単価を計算する際にリソース制限を考慮する必要があります。
前述のデータカスタマイズの要件を満たすために、コスト管理スイートは、カスタムリソース単価を構成するために使用できるテンプレートを提供します。Pod が使用するリソースの単価を集計することで、Pod の単価を計算できます。
カスタムリソース単価を構成した後、API 操作を呼び出すことによってのみ Pod 単価を取得できます。応答の `customCost` パラメーターは Pod 単価を示します。API 操作の呼び出し方法の詳細については、「API を呼び出してコストデータをクエリする方法の概要」をご参照ください。
前提条件
ステップ 1: cost-exporter のカスタムリソース価格設定機能を有効にする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
ページの上部で、Namespace ドロップダウンリストから kube-system を選択します。 ack-cost-exporter を見つけ、[アクション] 列で [その他] > [YAML で表示] を選択します。
commandパラメーターに'--enable-custom-price=true'を追加します。 次に、[更新] をクリックします。
ステップ 2: 価格設定テンプレートを構成する
手順
price-template.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
重要specパラメーターのすべてのフィールドはオプションです。specパラメーターのすべてのフィールドが Pod のメタデータと一致する場合、テンプレートはその Pod に適用されます。specパラメーターにフィールドが存在しない場合、テンプレートはすべての Pod に適用されます。複数のテンプレートが Pod のメタデータと一致する場合、システムはリストの先頭にあるテンプレートを選択します。
apiVersion: v1 kind: ConfigMap metadata: name: price-template namespace: kube-system data: template.yaml: | - name: template-nginx spec: labelSelector: app: nginx namespaceSelector: - default - kube-system resource: cpu: 500m memory: 512Mi cpu-overcommit-ratio: 2 memory-overcommit-ratio: 2 price: cpu: 0.2 memory: 0.03 - name: template-default price: cpu: 0.1 memory: 0.02上記のテンプレートでは、次の詳細が指定されています。
次のすべての条件を満たす Pod は、リソース価格設定に template-nginx テンプレートを使用します。
Pod に
app:nginxラベルが付いている。Pod が default または kube-system 名前空間に属している。
CPU リクエストは 500 ミリコアで、CPU 制限は 1 CPU コアです。
メモリリクエストは 512 MiB で、メモリ制限は 1 GiB です。
他の Pod は、リソース価格設定に template-default テンプレートを使用します。
次の表に、上記価格設定テンプレートのパラメーターを説明します。
パラメーター
説明
name
価格設定テンプレートの名前。
spec.labelSelector
ラベルセレクター。Pod にラベルの 1 つがある場合、Pod はこの条件を満たします。
spec.namespaceSelector
名前空間セレクター。
spec.resource.cpu
Pod の CPU リクエスト。
spec.resource.memory
Pod のメモリリクエスト。
spec.resource.cpu-overcommit-ratio
CPU オーバーコミット率。CPU 制限を CPU リクエストで割った結果に等しくなります。
spec.resource.memory-overcommit-ratio
メモリオーバーコミット率。メモリ制限をメモリリクエストで割った結果に等しくなります。
spec.price.cpu
Pod の CPU 単価。単位: USD/コア時。
spec.price.memory
Pod のメモリ単価。単位: USD/GiB 時。
次のコマンドを実行して、kube-system 名前空間に price-template ConfigMap を作成します。
kubectl apply -f price-template.yaml -n kube-system
関連ドキュメント
クラスターのリソースウォーターマークに基づいて Pod コストを見積もることができます。単一リソースのコスト見積もり (CPU またはメモリに基づく) または加重リソースのコスト見積もり (CPU とメモリに基づく) を使用できます。詳細については、「コスト見積もりポリシー」をご参照ください。
HTTP API リクエストを送信してコスト分析データを取得し、そのデータをカスタム開発に使用できます。詳細については、「API を呼び出してコストデータをクエリする方法の概要」をご参照ください。