Container Service for Kubernetes (ACK) クラスタでは、1 つのポッドが複数のクラウドリソースを使用し、1 つのクラウドリソースが複数のポッドによって使用される場合があります。企業にとって、部門別またはアプリケーション別の費用配賦を成功させるための鍵は、ポッドのコストを計算することです。ポッドのコストを見積もる場合は、ポッドで使用されるリソースのコストを考慮する必要があります。ACK クラスタでのコスト見積もりの要件をより適切に満たすために、ACK のコスト管理スイートは、リソースウォーターマークに基づいて実装されるコスト見積もりポリシーを提供します。
コスト見積もりポリシーの概要
ポリシー | 説明 | シナリオ |
単一リソースコスト見積もり | CPU またはメモリ別にコストを見積もる | このポリシーは、クラスタの CPU またはメモリウォーターマークがもう一方よりもはるかに高いシナリオに適しています。また、このポリシーは、クラスタ内のほとんどのアプリケーションが 1 種類のリソースのみを使用するシナリオにも適しています。 |
加重リソースコスト見積もり | 推奨される重みまたはカスタム重みに基づいて、CPU とメモリ別にコストを見積もる | このポリシーは、クラスタの CPU ウォーターマークがメモリウォーターマークに近いシナリオに適しています。また、このポリシーは、クラスタ内のアプリケーションが両方のタイプのリソースを使用するシナリオにも適しています。 |
単一リソースコスト見積もり
これはデフォルトのコスト見積もりポリシーです。クラスタのリソースウォーターマークに基づいてクラスタコストを計算する場合は、このポリシーを使用することをお勧めします。
ユースケース
リソースウォーターマークとは、リクエストされたリソースの総リソースに対する比率を指します。ほとんどの場合、クラスタのリソースウォーターマークは、主にリクエストされるリソースタイプによって異なります。したがって、単一リソースコスト見積もりポリシーは、クラスタの CPU またはメモリウォーターマークがもう一方よりもはるかに高いシナリオに適しています。これらのシナリオでは、クラスタ内のほとんどのアプリケーションは 1 種類のリソースのみを使用します。
Java アプリケーションなどのメモリ負荷の高いアプリケーションは、クラスタから大量のメモリリソースをリクエストします。この場合、メモリコストは CPU コストよりもはるかに高くなります。メモリリソースの供給は、クラスタ内のアプリケーションをスケジュールできるかどうかを決定します。単一リソースコスト見積もりポリシーは、前述のシナリオに適しています。メモリウォーターマークが 90% の場合、メモリコストはクラスタコストの 90% を占めます。これは、メモリウォーターマークがメモリコスト比率と完全に一致することを意味します。
仕組み
このポリシーは、ポッドの CPU またはメモリコストを計算します。
ポッドのコストを計算する
このポリシーは、次の数式を使用してポッドの CPU またはメモリコストを計算します。

名前空間のコストを計算する
名前空間とは、1 つ以上の共通のフィールドを持つポッドのグループです。クラスタ内の各ポッドのコスト比率を取得したら、名前空間内の各ポッドのコスト比率の合計にクラスタの請求書のすべての支払い金額の合計を掛けて、名前空間の料金を計算できます。
名前空間のコストは、次の数式に基づいて計算されます。

名前空間のコスト比率は、次の数式に基づいて計算されます。

加重リソースコスト見積もり
ユースケース
クラスタ内のアプリケーションが両方のタイプのリソースを使用する場合、またはクラスタの CPU ウォーターマークがメモリウォーターマークに近い場合は、加重リソースコスト見積もりポリシーを使用することをお勧めします。 CPU コストがメモリコストに近い場合は、CPU ウォーターマークとメモリウォーターマークを比較することで、CPU コストとメモリコストを比較できます。
仕組み
加重リソースコスト見積もりポリシーは、ポッドの CPU 重みとメモリ重みに基づいてポッドのコストを計算します。これらの重みは、クラスタの CPU ウォーターマークとメモリウォーターマークによって決定されます。
ポッドのコストを計算する
単一リソースコスト見積もりポリシーとは異なり、加重リソースコスト見積もりポリシーは、ポッドの CPU 重みとメモリ重みに基づいてポッドのコストを計算します。このポリシーは、次の数式を使用してポッドのコストを計算します。

CPU ウォーターマーク、メモリウォーターマーク、CPU 重み、およびメモリ重みは、次の数式に基づいて計算されます。
CPU ウォーターマーク:

メモリウォーターマーク:

CPU 重み:

メモリ重み:

例
次の例は、さまざまなシナリオで適切なコスト見積もりポリシーを選択する方法を示しています。
例 1: クラスタ内のほとんどのアプリケーションが 1 種類のリソースのみを使用する
次の図では、2 つのメモリ負荷の高いアプリケーションがクラスタにデプロイされています。1 つのアプリケーションは 1 vCore と 2 GB のメモリをリクエストし、もう 1 つのアプリケーションは 1 vCore と 4 GB のメモリをリクエストします。この場合、クラスタのメモリウォーターマークは 90%、CPU ウォーターマークは 20% です。クラスタの 1 日あたりのコストは 200 USD であるとします。
単一リソースコスト見積もり:
クラスタのメモリコストを計算する場合、ポッドコストは 180 USD (200 USD × 90%) です。結果はクラスタの総コストに近いです。
クラスタの CPU コストを計算する場合、ポッドコストは 40 USD (200 USD × 20%) です。クラスタコストの大部分が未配賦であり、クラスタによって提供されるメモリの 10% のみポッドスケジューリングに使用できます。
加重リソースコスト見積もり:
メモリ重みは約 80%、CPU 重みは約 20% です。ポッドコストは 152 USD (180 USD × 80% + 40 USD × 20%) です。28 USD が未配賦です。結果は、メモリコストを計算した場合の結果よりも少なくなります。
結果は、単一リソースコスト見積もりポリシーを使用すると、メモリコストがクラスタコストの 90% を占めることを示しています。したがって、単一リソースコスト見積もりポリシーは、クラスタ内のほとんどのアプリケーションが 1 種類のリソースのみを使用するシナリオに適しています。
例 2: クラスタ内のアプリケーションが両方のタイプのリソースを使用する
次の図では、メモリ負荷の高いアプリケーションと CPU 負荷の高いアプリケーションがクラスタにデプロイされています。1 つのアプリケーションは 1 vCore と 4 GB のメモリをリクエストし、もう 1 つのアプリケーションは 4 vCore と 1 GB のメモリをリクエストします。この場合、クラスタの CPU ウォーターマークは 40%、メモリウォーターマークは 50% です。クラスタの 1 日あたりのコストは 200 USD であるとします。
単一リソースコスト見積もり:
クラスタのメモリコストを計算する場合、ポッドコストは 100 USD (200 USD × 50%) です。
クラスタの CPU コストを計算する場合、ポッドコストは 80 USD (200 USD × 40%) です。
加重リソースコスト見積もり:
メモリ重みは約 56%、CPU 重みは約 44% です。ポッドコストは 91.2 USD (100 USD × 56% + 80 USD × 44%) です。 8.8 USD が未配賦です。結果は、メモリコストを計算した場合の結果よりも少なくなります。
結果は、単一リソース (メモリ) コスト見積もりポリシーを使用して配賦されたコストが、加重リソースコスト見積もりポリシーを使用して配賦されたコストよりも高いことを示しています。ただし、CPU リクエストがメモリリクエストに近いため、CPU ウォーターマークはメモリウォーターマークに近いです。これは、クラスタの CPU コストがクラスタのメモリコストに近いことを示しています。したがって、加重リソースコスト見積もりポリシーは、クラスタ内のアプリケーションが両方のタイプのリソースを使用するシナリオに適しています。
FAQ
加重リソースコスト見積もりポリシーを使用してクラスタのコストを配賦する場合、未配賦コストの量をどのように削減しますか?
原因: 加重リソースコスト見積もりポリシーを使用してクラスタのコストを配賦する場合、特定のコストが未配賦になる可能性があります。これは、クラスタによって集中的に使用されるリソースのウォーターマークが、他のリソースのウォーターマークよりもはるかに高いためです。集中的に使用されるリソースのウォーターマークがボトルネックに達すると、他のタイプのアイドルリソースが存在します。たとえば、クラスタの CPU ウォーターマークがクラスタのメモリウォーターマークよりもはるかに高い場合、アイドルメモリリソースが存在します。この場合、単一リソースコスト見積もりポリシーを使用してクラスタのコストを配賦すると、アイドルリソースのコストも配賦できます。加重リソースコスト見積もりポリシーを使用してクラスタのコストを配賦する場合、アイドルリソースのコストは配賦できません。
解決策: ワークロードのリソースリクエストに基づいて適切な Elastic Compute Service (ECS) インスタンスタイプを選択して、クラスタの CPU ウォーターマークがメモリウォーターマークに近くなるようにします。または、単一リソースコスト見積もりポリシーを使用してクラスタのコストを配賦することもできます。
参照
HTTP API リクエストを送信してコストインサイトデータを取得し、カスタム開発にデータを使用できます。詳細については、「API を呼び出してコストデータをクエリする概要」をご参照ください。