registered clusters 用の cost insights 機能を有効化し、使用する方法について説明します。この機能を使用すると、コストの内訳を分析し、リソース使用状況を監視し、クラスターの支出を最適化できます。
前提条件
クラスターの Kubernetes バージョンは 1.18.8 以降です。 クラスターがそれ以前のバージョンを実行している場合は、クラスターをアップグレードしてください。 詳細については、「クラスターを手動でアップグレードする」をご参照ください。
Prometheus 向けマネージドサービスが有効になっています。詳細については、「Prometheus 向けマネージドサービスの有効化」をご参照ください。
コストインサイトの有効化
単一アカウント
単一の Alibaba Cloud アカウントで、登録済みクラスターの RAM 権限を設定し、コストインサイトを有効にします。
ステップ 1:RAM 権限の設定
onectl
-
ローカルマシンに onectl をインストールおよび設定します。詳細については、「onectl を使用した登録済みクラスターの管理」をご参照ください。
ack-cost-exporter アドオンに 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.
コンソール
カスタムポリシーを作成する。
ack-cost-exporterアドオンには、次のポリシーで定義されている権限が必要です。- 警告
AccessKey のセキュリティを強化するために、ネットワークアクセス制御用に AccessKey ペアベースのポリシーを構成し、AccessKey の呼び出し元を信頼できるネットワーク環境に制限することをお勧めします。
AccessKey ペアを使用して、登録済みクラスターの ack-cost-exporter アドオン用に alibaba-addon-secret という名前の 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 の 登録済みクラスター からアカウント B の ACK クラスターを管理するには、コストインサイト 機能がアカウント B の 請求 データにアクセスできるように、アカウント B で権限を付与する必要があります。
ステップ 1:アカウント B の RAM 権限の設定
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
ACK クラスターの請求データにアクセスするための権限を付与します。
-
ACK マネージドクラスター
システムは自動的に AliyunCSManagedCostRole RAM ロールを作成します。 Prometheus はこのロールを引き受けて、課金データにアクセスします。
または、[RAM クイック承認] ページから承認します。
-
ACK 専用クラスター
ワーカーロールのポリシーに課金権限を追加します:
説明アカウント B の ACK クラスターは Managed Service for Prometheus を必要としません。このサービスがクラスターですでに有効になっている場合は、まず ack-arms-prometheus アドオンをアンインストールします。詳細については、「アドオンを管理する」をご参照ください。
-
ステップ 2:アカウント A へのアドオンのインストール
登録済みクラスターが存在するアカウント A に、Managed Service for Prometheus をインストールします。 詳細については、「登録済みクラスターを Managed Service for Prometheus に接続する」をご参照ください。
登録済みクラスターが存在するアカウント A で、
ack-cost-exporterアドオンのAckRegisteredClusterIdパラメーターを、アカウント B の ACK クラスターのclusterIdに設定します。ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページで、目的のクラスターの名前をクリックし、次に左側のナビゲーションバーで を選択します。
Helm ページに ack-cost-exporter のリリースが既に存在する場合は、そのリリースを削除してから、以降の手順に従って再インストールしてください。
クラスター管理ページの左側のナビゲーションバーで、を選択します。
アドオン管理 ページで、オブザーバビリティ タブをクリックし、ack-cost-exporter アドオンを見つけ、右下隅の インストール をクリックします。
コンポーネントのインストール ページで、
registeredAckClusterIdをアカウント B のクラスターの clusterId に設定し、OK をクリックします。
注意事項
コスト分析機能を有効化した翌日の 08:00:00 (UTC + 08:00) に、課金データが表示されます。ダッシュボードの期間を変更するには、ダッシュボードの右上隅にあるドロップダウンリストをクリックします。
クラスターのコスト概要

| メトリック | 番号 | 説明 |
|---|---|---|
| コスト配分モデル | (1) | 現在有効なコスト配分モデルを表示します。デフォルトでは CPU モデルが選択されています。 |
| 前日コストおよび累積コスト | (2) | 前日のコスト、前日比、当週の累積コスト、当月の累積コストをすべて請求金額に基づいて表示します。週次および月次のコストは暦に基づいて計算されるため、週次コストは月曜日にゼロにリセットされ、月次コストは毎月 1 日にゼロにリセットされます。請求書は取引日から 1 日後に生成されます。前日比が緑色の場合はコストが減少しており、赤色の場合はコストが増加しています。 |
| コストおよび容量の傾向チャート | (3) | 黄色の曲線はクラスターのコストを、青色の曲線はクラスターの実際の容量を示します。2 つの曲線が乖離すると、CPU コアあたりの平均コストが変化していることを意味します — 高価なリソースが消費されていないか確認してください。 |
| 名前空間の推定コストおよび配分コスト | (4) および (5) | セクション (4) では、すべての Pod のコストの合計として算出される各名前空間のリアルタイム推定コストを表示します。セクション (5) では、各名前空間のコスト配分比率に全クラスターコストを乗じた、名前空間ごとの配分コストを表示します。 説明 CPU リソースリクエストがない名前空間は、コスト計算から除外されます。名前空間のコスト計算式は: Σ (Pod リソースリクエスト / ノード容量) × ノード単価 です。この計算式は、割引、クーポン、サブスクリプション課金が適用される場合、請求金額と異なる場合があります。 |
オンプレミスデータセンターノードのコスト分析
cost insights 機能は、登録済みクラスター内の オンプレミスデータセンターノード、およびこれらのノードにデプロイされたアプリケーションのコストを分析できます。デフォルトでは、cost insights は、これらのコストを 1 Core*Hour あたり 0.2USD の単価で計算します。オンプレミスデータセンターノード のカスタム単価は、次のいずれかの方法で設定します。
すべてのオンプレミスデータセンターノードに統一価格を設定
kube-system
namespaceで、ack-cost-exporter デプロイメントにDefaultIDCPricePerCPUCoreHour環境変数を追加します。価格は 米ドル/コア*時間です。
env: # 各オンプレミスデータセンターノードのコアあたりの時間単価を 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"
よくある質問
コスト分析を有効化した直後、なぜデータが表示されないのですか?
コストデータは、有効化した翌日の 08:00:00 (UTC + 08:00) に表示されます。また、モニタリングデータの収集は、機能の有効化から 3 分以内に開始されます。それでもデータが表示されない場合は、以下の点を確認してください:
RAM ロールの権限付与:「コスト分析機能の有効化」の手順 3 を完了していることを確認してください。
インターネットアクセス:一部のリージョンでは、内部エンドポイントで請求書を照会できません。NAT ゲートウェイなどを通じて、クラスターがインターネットに接続されていることを確認してください。
前日比および翌日コスト推定:これらのメトリックは、連続する 2 日分のデータを必要とするため、機能を有効化した直後には表示されません。
なぜ名前空間のコストが実際の請求金額と異なるのですか?
名前空間のコストは、リスト価格に基づく推定値であり、実際の請求金額ではありません。クーポン、割引、節約プランによって実際のクラスターコストは削減されますが、これらは名前空間単位の推定値には反映されません。名前空間の配分コストを算出するには、実際のクラスターコストに名前空間のコスト配分比率を乗じます。
一部のノード上の Pod のコストデータが取得できないのはなぜですか?
RAM ロールに ecs:DescribeDisks 権限がありません。この権限を追加するには、「コスト分析機能の有効化」の手順 3 を実行してください。
請求書にクラスターで使用しているすべてのクラウドサービスが表示されないのはなぜですか?
コスト分析機能は、クラスター専用のクラウドサービスのデータのみを収集します。複数のクラスターで共有されるサービスは追跡されません。
この機能では、課金管理コンソール の「コスト配分タグ」 — 特に 課金管理ack.aliyun.com:{{ClusterId}}コスト配分タグページ — を使用してクラスターリソースを識別します。このタグが無効になっていると、コストデータを収集できません。課金管理コンソールのコスト配分タグページで、キー ack.aliyun.com のタグおよびキー ack.alibabacloud.com/nodepool-id のタグを有効化してください。
なぜ週次または月次の支出額が実際の金額より低くなるのですか?
コスト分析機能を有効化する以前のコストデータは含まれません。この機能は、有効化時点以降のデータのみを分析します。