Kubecost を使用したコスト ガバナンス

コスト ガバナンスは、コストを管理するためのポリシーを実装する継続的なプロセスです。 Kubernetes のコンテキストでは、組織がコストを管理および最適化できるいくつかの方法が存在します。 これには、リソースの使用状況や消費を管理および制御し、基になるインフラストラクチャを予防的に監視および最適化するためのネイティブな Kubernetes ツールが含まれます。

このセクションでは、Kubecost を使用して Azure Kubernetes Service (AKS) クラスターのコストを管理する方法を示します。 コスト割り当てのスコープをデプロイ、サービス、ラベル、ポッド、または名前空間に指定できるため、クラスター ユーザーのチャージバックまたは表示での柔軟性が提供されます。

Kubecost をインストールする

Kubecost には、いくつかのインストール オプションがあります。 詳細については、Kubecost のインストールに関するページを参照してください。

推奨されるインストール方法は、Helm 3 チャートです。 Helm 3 を使用して Kubecost の基本構成をインストールするには、次のコマンドを使用します。

helm repo add kubecost https://kubecost.github.io/cost-analyzer/
helm repo update
helm upgrade --install kubecost kubecost/cost-analyzer --namespace kubecost --create-namespace

数分経ったら、Kubecost が起動して実行中であることを確認します。

kubectl get pods -n kubecost

# Connect to the Kubecost dashboard UI

kubectl port-forward -n kubecost svc/kubecost-cost-analyzer 9090:9090

ここでブラウザーを開き、http://127.0.0.1:9090 を指定して Kubecost UI を開くことができます。 Kubecost UI で、コスト割り当て情報を表示するクラスターを選択します。

Azure クラウド統合用の Kubecost の構成

Kubecost のインストールを完了するには、Azure クラウドの統合Azure 価格カードの構成を構成する必要があります。

Microsoft Cost Exportにより、毎日、Cost Management データを Azure Storage に自動的にエクスポートする定期的なタスクを作成できます。 Kubecost はこのストレージ アカウント内のデータにアクセスするように構成されるので、AKS クラスターからのデータだけでなく、Azure リソースの合計コストをダッシュボードに表示できます。 Kubecost で正確なダッシュボードが生成されるようにするには、Azure リソースのタグ付けに関する Kubecost ドキュメントの説明に従って、Azure リソースにタグを付ける必要があります。 一部の Azure リソースは AKS クラスターによって作成されます。これは、種類が LoadBalancer または PersistentVolume のサービスを作成する場合です。 これらのリソースのコストを正しく追跡するために、Azure Kubernetes Service での Azure タグの使用に関する記事にある例のように、Kubernetes リソースの注釈を使用して適切な Azure タグを追加できます。

Azure 価格カードの構成は、ダッシュボードで正確な価格を報告するために必要です。 ドキュメント ページの説明に従って、カスタム ロールを持つサービス プリンシパルを作成し、そのサービス プリンシパルを使用して Azure Billing Rate Card API のクエリを実行するように Kubecost を構成する必要があります。

Kubecost では、リソースが次のカテゴリに分類されます。

  • 月単位のクラスター コスト
  • 名前空間のコスト
  • デプロイ リソースのコスト
  • コスト効率

次のダッシュボードのような概要を表示するクラスターを選択します。

Kubecost のダッシュボードを示すスクリーンショット。

リソースの名前空間のコストを詳しく調査するには、左側にある [割り当て] を選択します。 [割り当て] には、CPU、メモリ、永続ボリューム、ネットワークのコストが表示されます。 Kubecost では Azure の価格からデータを取得しますが、リソースのカスタム コストを設定することもできます。

Kubecost の [割り当て] 画面を示すスクリーンショット。

使用率が低いリソースのコスト削減を詳しく調査するには、左側にある [削減額] を選択します。 [Savings](削減額) には、使用率が低いノードおよびポッドや破棄されたリソースに関する情報が表示され、クラスター内のオーバープロビジョニングされたリソース要求が特定されます。 次のスクリーンショットは、 [削減額] の概要の例を示しています。

Kubecost の [削減額] 画面を示すスクリーンショット。

少し時間を取って、Kubecost によって提供されるさまざまなビューや機能の間を移動してください。