このトピックでは、クラスターのコスト分析機能の使用方法について説明します。
前提条件
Kubernetes クラスターのバージョンは 1.18.8 以降である必要があります。そうでない場合は、クラスターをアップグレードする必要があります。詳細については、「クラスターを手動でアップグレードする」をご参照ください。
Alibaba Cloud Prometheus モニタリングが有効化されています。詳細については、「Prometheus モニタリングの有効化」をご参照ください。
コスト分析機能の有効化
コスト分析の有効化
ステップ 1: コスト分析コンポーネントの RAM 権限を設定する
onectl で設定する
オンプレミスマシンに onectl をインストールします。詳細については、「onectl を使用して登録済みクラスターを管理する」をご参照ください。
次のコマンドを実行して、コスト分析コンポーネントの RAM 権限を設定します。
onectl ram-user grant --addon ack-cost-exporter期待される出力:
Ram policy ack-one-registered-cluster-policy-ack-cost-exporter granted to ram user ack-one-user-ce313528c3 successfully.
コンソールで設定する
RAM ユーザーを作成します。
カスタムポリシーを作成します。ack-cost-exporter コンポーネントには、次のポリシードキュメントが必要です。
RAM ユーザーに権限を付与します。
RAM ユーザーの AccessKey ペアを作成します。
警告ネットワークアクセス制御のために AccessKey ペアベースのポリシーを設定し、AccessKey の呼び出し元を信頼できるネットワーク環境に限定して AccessKey のセキュリティを強化することをお勧めします。
AccessKey を使用して、登録済みクラスターに alibaba-addon-secret という名前の Secret を作成します。次のコマンドを実行して、ack-cost-exporter コンポーネントの Secret を作成します。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey secret>'
ステップ 2: ack-cost-exporter コンポーネントをインストールする
onectl を使用してインストールする
ack-cost-exporter コンポーネントをインストールするには、次のコマンドを実行します。
onectl addon install ack-cost-exporter期待される出力:
Addon ack-cost-exporter, version **** installed.コンソールからインストールする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Helm ページに ack-cost-exporter のインストールレコードが存在する場合、再インストールを進める前にそのレコードを削除する必要があります。
左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ログとモニタリング] タブをクリックします。[ack-cost-exporter] コンポーネントを見つけて [インストール] をクリックし、次に [OK] をクリックします。
クロスアカウントのコスト分析を有効にする
アカウント A の登録済み ACK クラスターを使用してアカウント B の ACK クラスターを管理する場合、アカウント B の ACK クラスターでコスト分析機能に権限を付与する必要があります。これにより、この機能はアカウント B の課金データにアクセスできるようになります。
ステップ 1: アカウント B の RAM 権限を設定し、コンポーネントをインストールする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
ACK クラスターの課金データにアクセスするための権限を付与します。
ACK マネージドクラスター: システムは自動的に必要な権限を付与します。権限付与が完了すると、システムは自動的に AliyunCSManagedCostRole ロールを作成します。Managed Service for Prometheus は RAM ロールを偽装して、費用とコストの課金データにアクセスします。
RAM クイック承認 ページで [承認] することもできます。
ACK 専用クラスター:
説明アカウント B の ACK クラスターに Prometheus をインストールする必要はありません。Prometheus がすでにインストールされている場合は、まず ack-arms-prometheus コンポーネントをアンインストールします。詳細については、「コンポーネントの管理」をご参照ください。
ステップ 2: アカウント A のコンポーネントをインストールする
登録済みクラスターが存在するアカウント A に Prometheus をインストールします。詳細については、「登録済みクラスターを Alibaba Cloud Prometheus に接続する」をご参照ください。
登録済みクラスターが存在するアカウント A で、ack-cost-exporter コンポーネントの
AckRegisteredClusterIdパラメーターを、アカウント B の ACK クラスターのclusterIdに設定します。ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Helm ページに ack-cost-exporter のインストールレコードが存在する場合、再インストールを進める前にそのレコードを削除する必要があります。
左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ログとモニタリング] タブをクリックします。[ack-cost-exporter] コンポーネントを見つけて [インストール] をクリックします。
[ack-cost-exporter のインストール] パネルで、[registeredAckClusterId] をアカウント B のクラスターの clusterId に設定し、[OK] をクリックします。
使用上の注意
コストインサイト機能が有効になると、課金データは翌日の 08:00:00 (UTC + 08:00) に表示されます。ダッシュボードの右上隅にあるドロップダウンリストをクリックして、コストインサイトの時間範囲を変更できます。
クラスターのコスト分析
ディメンション

機能 | 番号 | 説明 |
クラスターコスト分析オプション | (1) | 次のクラスターコスト分析オプションが利用可能です:
説明 クラスター内のアプリケーションのコストは、名前空間または Pod ごとに分析できます。アプリケーションコストは、リソースの請求額に基づいて計算されます。 |
コスト配分モデル | (2) | コスト配分モデルには、単一リソースコスト配分モデルと加重ハイブリッドリソースコスト配分モデルがあります。詳細については、「コスト見積もりポリシー」をご参照ください。
|
時間範囲 | (3) | ダッシュボードに表示されるデータの時間範囲。デフォルトの時間範囲は過去 7 日間です。時間範囲を指定して、指定した期間内のコストとリソースの変動を表示できます。 |
クラスターコストの概要

機能 | 番号 | 説明 |
コスト配分モデルの表示 | (1) | 表示されるデータは、選択した [コスト配分モデル] によって異なります。デフォルトでは [CPU モデル] が選択されており、Pod がリクエストした CPU リソースの量に基づいて Pod のコストを見積もります。 |
前日のコスト、週の累計コスト、および月の累計コスト。 | (2) | 前日のコスト、前日比、週の累計コスト、および月の累計コストはすべて、クラスター内のクラウドリソースの請求額に基づいて計算されます。 週の累計コストは各暦週の請求額に基づいて計算され、月の累計コストは各暦月の請求額に基づいて計算されます。請求書は取引日の 1 日後に生成されます。したがって、週の累計コストは各週の月曜日にゼロになり、月の累計コストは各月の初日にゼロになります。 前日比は、前日のコストと前々日のコストの比率です。前日比の成長率が緑色で表示されている場合、前日のコストが前々日のコストと比較して減少したことを示します。前日比の成長率が赤色で表示されている場合、前日のコストが前々日のコストと比較して増加したことを示します。 |
クラスターコストとリソースの無駄に関する簡単な情報。 | (3) | チャートには、クラスターコストとクラスター容量の変動が表示されます。黄色の曲線はクラスターコストを示し、青色の曲線は実際のクラスター容量を示します。ほとんどの場合、2 つの曲線は互いに相関しています。 2 つの曲線が異なる傾向を示す場合、個々の CPU コアの平均コストに変動があることを示します。この場合、より高価なリソースが消費されているかどうかを確認できます。 |
名前空間のリアルタイム推定コストと各名前空間の配分コストの表示 | (4) と (5) | セクション (4) は、クラスター内の各名前空間のリアルタイム推定コストを表示します。名前空間のコストは、その名前空間内のすべての Pod のコストの合計です。セクション (5) は、各名前空間の配分コストを表示します。これは、指定されたコスト比率に基づいて各名前空間に配分されたクラスターコストです。 説明
クラスターには、仕様や課金方法が異なるノードが含まれる場合があります。名前空間に基づいてコストを配分する場合、異なる名前空間のリソース消費量だけでなく、異なる名前空間の Pod をホストするノードの価格差も考慮する必要があります。 コストインサイト機能は、各ノードのリアルタイムコストを変換します。コストインサイト機能は、名前空間のコストを計算するために次の数式を提供します: Σ (Pod のリソースリクエスト/ノード容量) × ノード単価 この数式は、名前空間のコストを正確に計算するのに役立ちます。ただし、割引、クーポン、またはサブスクリプション課金方法が使用される場合に適用される繰延課金ポリシーのため、この数式に基づいて計算されたコストは請求額と異なる場合があります。名前空間の配分コストを計算するには、クラスターの総コストに名前空間のコスト比率を乗じます。 |
安定性と効率性の分析

機能 | 番号 | 説明 |
クラスターの総リソース使用量の表示 | (1) | 各 Quality of Service (QoS) クラスの Pod の数と、クラスター内の総リソース使用量を表示します。 |
クラスター内の Pod リソース使用量の表示 | (2) | クラスター内のすべての Pod の基本情報とリソース使用量 (使用量/リクエスト) を表示します。フィルターとソートがサポートされています。この機能を使用して、クラスター内で最もリソース使用量が高いまたは低いワークロードを表示できます。 |
クラスター内の Burstable Pod のリソース構成の表示 | (3) | QoS クラスが Burstable である Pod のリソース構成を表示します。フィルターとソートがサポートされています。この機能により、各 Burstable Pod の CPU やメモリリソースなどのリソースのリクエストと制限を表示できます。これにより、Pod によって消費されるクラスターリソースを把握し、リソースのボトルネックを特定できます。 |
クラスター内の BestEffort Pod のリソース使用量の表示 | (4) | QoS クラスが BestEffort である Pod のリソース構成を表示します。このタイプの Pod は安定性のリスクが高くなります。リストをフィルターおよびソートして、予期しない BestEffort Pod がないか確認できます。これにより、早期にリスクに対処できます。 |
[安定性と効率性の分析] 機能の詳細については、「コストインサイトを使用してクラスターワークロードのリスクを特定する」をご参照ください。
クラスターのコスト分析

機能 | 番号 | 説明 |
クラウドリソースコストの変動と異なるクラウドリソースのコスト比率の表示 | (1) と (2) | セクション (3) は、クラスター内の異なるクラウドリソースのコスト比率を表示します。セクション (4) は、クラウドリソースコストの変動を表示します。 クラスターは複数のクラウドリソースを使用する場合があります。クラウドリソースのコストは、課金ルールとクラスターによるクラウドリソースの使用方法によって異なります。コストインサイト機能は、クラウドリソースコストの変動と異なるクラウドリソースのコスト比率を表示して、クラスターのコストを削減するのに役立ちます。 |
クラスター総コストの変動の表示 | (3) | クラスター総コストの日々の変動を表示します。 |
ノードプールのコストの表示 | (4) | クラスター内の各ノードプールのコストまたは各仮想ノードのコストを表示します。 |
名前空間のリアルタイム推定コストの傾向の表示 | (5) | クラスターには、仕様や課金方法が異なるノードが含まれる場合があります。名前空間に基づいてコストを配分する場合、異なる名前空間のリソース消費量だけでなく、異なる名前空間の Pod をホストするノードの価格差も考慮する必要があります。 コストインサイト機能は、各ノードのリアルタイムコストを変換します。コストインサイト機能は、名前空間のコストを計算するために次の数式を提供します: Σ (Pod のリソースリクエスト/ノード容量) × ノード単価 この数式は、名前空間のコストを正確に計算するのに役立ちます。ただし、割引、クーポン、またはサブスクリプション課金方法が使用される場合に適用される繰延課金ポリシーのため、この数式に基づいて計算されたコストは請求額と異なる場合があります。名前空間の配分コストを計算するには、クラスターの総コストに名前空間のコスト比率を乗じます。 |
クラスターのリソースリクエストとリソース使用率の変動の表示 | (6) | シナリオ:
ヒストグラムチャート:
アプリケーションに割り当てられているが使用されていないリソース = 緑色の列 - 黄色の列 割り当て可能なクラスターリソース = Y 軸 - 緑色の列 分析プロシージャ:
|
クラスターの課金詳細 | (7) と (8) | クラウドリソースまたはインスタンスごとに表示される日次請求書のリスト。 |
コスト分析を使用してオンプレミス IDC ノードとアプリケーションのコストを分析する
コスト分析は、登録済みクラスター内のオンプレミス IDC ノードとそれらのノード上のアプリケーションのコスト分析をサポートします。デフォルトでは、コスト分析はオンプレミス IDC ノードとそのアプリケーションのコストを 1 コアあたり 1 時間あたり 0.2 元の単価で計算します。次のいずれかの方法で、IDC ノードのカスタム単価を設定できます。
すべての IDC ノードに統一された価格を設定する
kube-system 名前空間で、ack-cost-exporter デプロイメントの
DefaultIDCPricePerCPUCoreHour環境変数を設定することにより、すべての IDC ノードに統一された価格を設定できます。説明この価格は、CPU コアあたりの 1 時間の価格 (元/コア×時間) です。
env: # 各 IDC ノードの価格を CPU コアあたり 1 時間 0.3 元に設定します。 - name: DefaultIDCPricePerCPUCoreHour value: "0.3"特定のノードに個別の価格を設定する
対応するノードに
"node.kubernetes.io/price-per-day”ラベルを追加して、そのノードに個別の価格を設定します。説明この価格は、このノードの 1 日の合計価格です。
次のコマンドを実行して、特定のノードの合計価格を 1 日あたり 100 元に設定します。
kubectl label nodes <node-name> node.kubernetes.io/price-per-day="100"
よくある質問
コスト分析を有効にした後、データが表示されないのはなぜですか?
RAM ロールの権限付与が完了しているかどうかを確認してください。詳細については、「コストインサイトの有効化」トピックの「ステップ 3」をご参照ください。コスト分析は、モニタリングデータとコストデータに基づいています。モニタリングデータの収集は、コストインサイト機能を有効にしてから 3 分以内に開始されます。コストデータは翌日の 08:00:00 (UTC + 08:00) に表示されます。
クラスターに NAT ゲートウェイが設定されているかどうかを確認してください。一部のリージョンでは、内部エンドポイントを使用して請求書をクエリすることはできません。クラスターがインターネットにアクセスできることを確認してください。
前日比と翌日の推定コストメトリックのデータは、コストインサイト機能が 2 日連続で統計を収集した後に表示されます。
名前空間のコストが実際の請求額と異なるのはなぜですか?
名前空間のコストはコスト見積もりに基づいて計算され、実際の請求額とは直接関係ありません。したがって、コスト見積もりはリスト価格に基づいています。ただし、クラスターの実際のコストは、クーポン、割引、および節約プランによって削減される可能性があります。その結果、名前空間の推定コストが請求額と等しくならない場合があります。名前空間の実際のコストを取得するには、クラスターの実際のコストに名前空間のコスト比率を乗じます。
一部のノード上の Pod のコストデータを取得できないのはなぜですか?
RAM ロールに必要な権限が付与されているかどうかを確認してください。ecs:DescribeDisks 権限が権限ポリシーに含まれていることを確認してください。詳細については、「コストインサイトの有効化」トピックの「ステップ 3」をご参照ください。
請求書にクラスターで使用されているすべてのクラウドサービスが表示されないのはなぜですか?
コスト分析は、クラスター専用のクラウドサービスに関する情報のみを収集します。複数のクラスターで共有されているクラウドサービスに関する情報は収集されません。
コストインサイト機能は、Expenses and Costs コンソールの費用配分タグ機能に基づいています。この機能は、クラウドサービスタグ内の特定の識別子 (キー: 値 = ack.aliyun.com:{{ClusterId}}) を使用して、クラスターコストの統計を追跡および収集します。費用配分タグ ページでこのタグを無効にすると、クラスターコスト情報を収集できません。この場合、費用とコストコンソールの費用配分タグページの指示に従って、キーが ack.aliyun.com のタグとキーが ack.alibabacloud.com/nodepool-id のタグを有効にする必要があります。
月間または週間の支出が実際の金額より低いのはなぜですか?
コストインサイト機能を有効にする前のクラスターのコストデータは、コストインサイト機能がクラスターコストを計算する際には分析されません。