デフォルトのコスト配分戦略に加えて、コスト管理スイートではカスタムコストアカウンティングポリシーを作成できます。クラウドリソースのコストに対して独自のチャージバックロジックを定義するには、カスタムリソース価格を設定する設定ファイルを作成します。これにより、コストデータをビジネスロジックとより密接に整合させることができます。
ユースケース
カスタム価格設定により、IT コストをきめ細かく制御できます。一般的なユースケースは次のとおりです。
-
内部運用チームが基盤となるコンピューティングリソースを一括で購入し、さまざまなビジネスチームに再販する。
-
仕様の異なるノードで同一の Pod をスケジューリングすることによって生じる価格差をなくすことで、ビジネスレベルでコストを正規化する。
-
差別化された価格設定を実装するには、Pod の単位価格を計算する際にリソースリミットを含める必要があります。
これらのシナリオに対応するため、コスト管理スイートはカスタム価格テンプレート機能を提供します。テンプレートを編集して、Pod の各リソースの単位価格を設定し、それらを集計して Pod のカスタムコストを決定できます。
現在、Pod のカスタムコストは API を通じてのみ利用可能です。カスタム価格を有効にして設定した後、API 応答の customCost フィールドからコストを取得できます。API の使用方法の詳細については、「API によるコストデータの取得」をご参照ください。
前提条件
-
コストインサイト機能が有効になっていること。
ステップ 1: cost-exporter のカスタム価格の有効化
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
ページ上部で、名前空間を kube-system に切り替えます。Deployment リストの アクション 列で、ack-cost-exporter の 詳細 > Yaml をクリックします。
commandセクションに'--enable-custom-price=true'を追加して、カスタム価格機能を有効にします。その後、更新 をクリックします。spec: containers: - command: - /root/alibaba-cloud-price-exporter - '--listen-address=:9091' - '--ali-user-id=1251182063904492' - '--cluster-id=c66b9e33984194a219813f6a7d402cdba' - '--region-id=cn-hangzhou' - '--cluster-type=ManagedKubernetes' - '--cluster-profile=Default' - '--enable-custom-price=true' env: - name: DefaultIDCPricePerCPUCoreHour value: '0.2'
ステップ 2: 価格テンプレートの設定
操作手順
-
次のサンプルコンテンツを含む
price-template.yamlという名前のファイルを作成します。重要-
テンプレートの
specフィールド以下のフィールドはオプションです。spec以下で設定されたすべてのフィールドが Pod のメタデータと一致する場合、その Pod はテンプレートに一致すると見なされます。空のspecを持つテンプレートは、すべての Pod に一致する可能性があります。 -
テンプレートは順番に照合されます。Pod が YAML ファイル内の複数のテンプレートに一致する場合、システムは最初に一致したテンプレートを使用して 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この価格テンプレートは、次のルールを指定します。
-
template-nginxテンプレートは、次のすべての条件を満たす Pod に適用されます。-
ラベルに
app:nginxが含まれている -
Pod が
defaultまたはkube-system名前空間にある -
CPU リクエストが 500m で、リミットが 1 コアである
-
メモリリクエストが 512 MiB で、リミットが 1 GiB である
-
-
クラスター内の他のすべての Pod は
template-defaultテンプレートを使用します。
次の表にパラメーターを説明します。
パラメーター
説明
name
価格テンプレートの名前。
spec.labelSelector
キーと値のペアのマップ。このセレクターで指定されたすべてのラベルを持つ Pod が一致すると見なされます。
spec.namespaceSelector
名前空間のリスト。一致するには、Pod の名前空間がこのリストに含まれている必要があります。
spec.resource.cpu
Pod の CPU リクエスト。
spec.resource.memory
Pod のメモリリクエスト。
spec.resource.cpu-overcommit-ratio
Pod の CPU オーバーコミット率。
CPU リミット / CPU リクエストとして計算されます。spec.resource.memory-overcommit-ratio
Pod のメモリオーバーコミット率。
メモリリミット / メモリリクエストとして計算されます。price.cpu
CPU の単位価格。コア時間あたりのコストで測定されます。
price.memory
メモリの単位価格。GiB/時あたりのコストで測定されます。
-
-
次のコマンドを実行して、
kube-system名前空間にprice-templateConfigMap を作成し、カスタム価格設定を適用します。kubectl apply -f price-template.yaml -n kube-system
関連ドキュメント
-
単一リソース (CPU またはメモリ) または加重 (CPU とメモリ) モデルを使用して、クラスターリソースの使用率に基づいて Pod のコストを見積もることができます。詳細については、「コスト見積もりポリシー」をご参照ください。
-
HTTP API リクエストを送信して、カスタム開発用のコストインサイトデータを取得します。詳細については、「API を呼び出してコストデータをクエリする概要」をご参照ください。