Azure Kubernetes Service のコスト分析

Azure Kubernetes Service (AKS) クラスターは、仮想マシン、仮想ディスク、ロード バランサー、パブリック IP アドレスなどの Azure リソースに依存しています。 複数のアプリケーションがこれらのリソースを使用でき、それらは、組織内の異なるチームによって保守されている可能性があります。 多くの場合、それらのアプリケーションのリソース消費パターンは変動するため、クラスター リソースの合計コストに対するそれらのアプリケーションの寄与も変動する可能性があります。 一部のアプリケーションでは、複数のクラスターにわたって占有領域を持つことができます。これは、コストの属性とコスト管理を実行するときに課題になる可能性があります。

以前は、Microsoft Cost Management (MCM) がクラスター リソース グループの下でクラスター リソース消費量を集計していました。 MCM を使用してコストを分析することはできましたが、いくつかの課題がありました。

  • クラスターよりも詳細なレベルでクラスター リソースの使用状況を表示するための Azure ネイティブ機能がありませんでした。 コンピューティング (CPU コアとメモリを含む)、ストレージ、ネットワークなどの個別のカテゴリに分類されませんでした。

  • 個々のアプリケーション コストと共有コストの間などの、コストの種類を区別する Azure ネイティブ機能はありませんでした。 MCM はリソースのコストを報告しましたが、個々のアプリケーションの実行に使用されたリソース コストの分量、クラスターで必要なシステム プロセス用に予約されたリソース コストの分量、クラスターに関連付けられているアイドル コストに関する分析情報はありませんでした。

  • 同じサブスクリプション スコープ内の複数のクラスター間でコストを分析するための Azure ネイティブ メカニズムがありませんでした。

結果として、サードパーティ ソリューションを使用して、Kubernetes 固有の詳細度レベル (名前空間やポッドなど) でリソース消費量とコストを収集および分析することがありました。 ただし、サードパーティ ソリューションでは、AKS クラスターごとにデプロイ、微調整、保守する作業が必要です。 場合によっては、有料の高度な機能を使用する必要もあるため、クラスターの総保有コストが増加します。

この課題に対処するために、AKS を MCM と統合して、Azure Compute、Network、Storage のカテゴリに加えて、クラスターや名前空間などの Kubernetes コンストラクトを対象範囲にした詳細なコスト ドリルダウンが提供されています。

AKS コスト分析アドオンは、使用状況データ収集用のオープンソースの Cloud Native Computing Foundation サンドボックス プロジェクトである OpenCost の基盤上に構築されています。 コスト分析は、Azure の請求書データと照合されます。 後処理されたデータは、MCM コスト分析ポータル エクスペリエンスで直接表示できます。

前提条件と制限事項

  • クラスターは、Free レベルではなく、Standard レベルまたは Premium レベルのいずれかである必要があります。

  • コスト分析情報を表示するには、クラスターをホストするサブスクリプションに対して、所有者、共同作成者、閲覧者、コスト管理共同作成者、またはコスト管理閲覧者のいずれかのロールが必要です。

  • コスト分析をいったん有効にすると、まずコスト分析を無効にしない限り、クラスターを Free レベルにダウングレードできません。

  • クラスターは、Microsoft Entra ワークロード ID を構成してデプロイする必要があります。

  • Kubernetes のコスト ビューは、次の Microsoft Azure オファーの種類でのみ使用できます。 オファーの種類の詳細については、「サポートされている Microsoft Azure オファー」を参照してください。

    • マイクロソフトエンタープライズ契約
    • Microsoft 顧客契約
  • Azure Resource Manager (ARM) API を含む Azure API へのアクセス。 必要となる完全修飾ドメイン名 (FQDN) の一覧については、「AKS コスト分析で必要な FQDN」を参照してください。

  • 仮想ノードは現時点ではサポートされていません。

  • 現時点では、AKS Automatic はサポートされていません。

  • Azure CLI を使用する場合は、バージョン 2.61.0 以降がインストールされている必要があります。

AKS クラスターでコスト分析を有効にします

次のいずれかの操作中に、--enable-cost-analysis フラグを使用してコスト分析を有効にできます。

  • Standard レベルまたは Premium レベルの AKS クラスターの作成。

  • 既に Standard レベルまたは Premium レベルである AKS クラスターを更新します。

  • Free クラスターを Standard または Premium にアップグレードします。

  • Standard クラスターを Premium にアップグレードします。

  • Premium クラスターを Standard レベルにダウングレードします。

次の例は、コスト分析が有効になっている Standard レベルの新しい AKS クラスターを作成します。

az aks create --resource-group <resource-group> --name <cluster-name> --location <location> --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis

次の例は、コスト分析を有効にするために、Standard レベルの既存の AKS クラスターを更新します。

az aks update --resource-group <resource-group> --name <cluster-name> --enable-cost-analysis

警告

AKS コスト分析アドオンのメモリ使用量は、デプロイされるコンテナーの数によって異なります。 メモリ消費量は、概算で 200 MB + コンテナーあたり 0.5 MB です。 現在のメモリ制限は 4 GB に設定されており、クラスターあたり約 7,000 個のコンテナーがサポートされます。 これらの見積もりは、さまざまな要因に応じて増減する可能性があり、変更される可能性があります。

アドオン ポッドが OOMKilled を取得するや、Pending 状態でスタックするなどの問題が発生している場合は、AKS コスト分析アドオンの問題 トラブルシューティング ガイドを参照してください。

コスト分析を無効にする

az aks update を使用すると、いつでもコスト分析を無効にできます。

az aks update --name myAKSCluster --resource-group myResourceGroup --disable-cost-analysis

Note

コスト分析が有効になっている間にクラスターを Standard または Premium レベルから Free レベルにダウングレードする場合は、最初にコスト分析を明示的に無効にする必要があります。

コスト データを表示する

Azure portal では、コストの割り当てデータを表示できます。 コスト分析 UI ビュー内を移動する方法の詳細については、Cost Management のドキュメントを参照してください。

コストの定義

Kubernetes 名前空間と資産ビューに、次の料金が表示されます。

  • アイドル料金: ワークロードで使用されなかった使用可能なリソース容量のコストを表します。
  • サービス料金: アップタイム SLA、Microsoft Defender for Containers などのサービスに関連する料金を表します。
  • システム料金: kubelet やコンテナー ランタイムなどの、クラスターで必要なシステム プロセスを実行するために各ノードの AKS によって予約された容量のコストを表します。 詳細情報。
  • 未割り当て料金: 名前空間に割り当てられなかったリソースのコストを表します。

Note

データの最終処理には最大で 1 日かかる場合があります。 24 時間後、前日のコストの変動が安定します。

トラブルシューティング

AKS コスト分析アドオンの問題のトラブルシューティングについては、次のガイドを参照してください。

詳細情報

可視性は、コスト管理の 1 つの要素です。 kubernetes のコストを制御する方法に関するその他のベスト プラクティスについては、「Azure Kubernetes Service (AKS) でのコストの最適化」を参照してください。