Kubecost をインストールし、ダッシュボードにアクセスする - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

Kubecost をインストールし、ダッシュボードにアクセスする

Amazon EKS がサポートする Kubecost を使用して、Pods、ノード、名前空間、ラベルなどの Kubernetes リソースごとにコストを分類して監視することができます。このトピックでは、Kubecost のインストールと Kubecost ダッシュボードへのアクセスについて説明します。

Amazon EKS は、クラスターコストの可視化のため、AWS に最適化された Kubecost のバンドルを提供します。既存の AWS サポート契約を使用してサポートを受けることができます。使用できる Kubecost のバージョンの詳細については、「Kubecost の詳細」を参照してください。

Kubernetes のプラットフォーム管理者および財務リーダーとして、Kubecost を使用して Amazon EKS の請求の内訳を可視化できます。また、コストを配分し、アプリケーションチームなどの組織単位にチャージバックすることも可能です。社内チームや事業部門に、実際の AWS の請求に基づく透明で正確なコストデータを提供できます。さらに、インフラストラクチャ環境とクラスター内の使用パターンに基づいて、コストを最適化するためのカスタマイズされた推奨事項を取得することもできます。

注記

Kubecost v2 では、いくつかの主要な新機能が導入されています。Kubecost v2 の詳細はこちらです。

Kubecost の詳細については、Kubecost のドキュメントを参照してください。

Helm を使用して Kubecost をインストールする

前提条件
  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用を開始する」を参照してください。Fargate ノードでは Kubecost を実行できないため、クラスターには Amazon EC2 ノードが必要です。

  • デバイスまたは AWS CloudShell に、kubectl コマンドラインツールがインストールされていること。バージョンは、ご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが 1.30 である場合、kubectl のバージョン 1.291.30、または 1.31 が使用できます。kubectl をインストールまたはアップグレードする方法については、「kubectl および eksctl のセットアップ」を参照してください。

  • Helm バージョン 3.9.0 以降がデバイスまたは AWS CloudShell に設定されていること。Helm をインストールまたは更新するには、「Helm を使用して Amazon EKS にアプリケーションをデプロイする」を参照してください。

  • クラスターがバージョン 1.23 以降の場合は、Amazon EBS を利用して Kubernetes ボリュームを保存する がクラスターにインストールされている必要があります。

  1. インストールする Kubecost のバージョンを確認します。利用可能なバージョンは、Amazon ECR Public Gallery の kubecost/cost-analyzer で確認できます。Kubecost バージョンと Amazon EKS の互換性の詳細については、Kubecost ドキュメントの「環境要件」を参照してください。

  2. 以下のコマンドを使用して、Kubecost をインストールします。kubecost-version は、1.108.1 などの ECR から取得された値に置き換えてください。

    helm upgrade -i kubecost oci://public.ecr.aws/kubecost/cost-analyzer --version kubecost-version \ --namespace kubecost --create-namespace \ -f https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/develop/cost-analyzer/values-eks-cost-monitoring.yaml

    Kubecost は新しいバージョンを定期的にリリースします。helm upgrade を使用して、バージョンを更新できます。デフォルトでは、インストールにはローカルの Prometheus サーバーと kube-state-metrics が含まれています。「Integrating with Amazon EKS cost monitoring」(Amazon EKS コスト監視との統合) のドキュメントに従って、Amazon Managed Service for Prometheus を使用するようにデプロイをカスタマイズできます。使用できる他のすべての設定のリストについては、「GitHub」の「サンプル設定ファイル」を参照してください。

    次のコマンドを使用して、クラスターから Kubecost を削除できます。

    helm uninstall kubecost --namespace kubecost kubectl delete ns kubecost

Amazon EKS アドオンを使用して Kubecost をインストールする

Amazon EKS アドオンを使用すると、Kubecost のアップグレードとライセンス管理の複雑さを軽減できます。EKS アドオンは AWS マーケットプレイスと統合されています。

  1. AWS Marketplace コンソールで Kubecost を表示し、サブスクライブします。

  2. クラスターの名前とリージョンを決定します。EKS を管理するのに十分なアクセス許可を使用して AWS CLI にログインしていることを確認します。

  3. Kubecost アドオンを作成します。

    aws eks create-addon --addon-name kubecost_kubecost --cluster-name $YOUR_CLUSTER_NAME --region $AWS_REGION

Kubecost などの EKS アドオンを削除する方法について説明します。

Kubecost ダッシュボードにアクセスする

  1. 必要な Pods が動作していることを確認します。

    kubectl get pods -n kubecost

    出力例は次のとおりです。

    NAME READY STATUS RESTARTS AGE kubecost-cost-analyzer-b9788c99f-5vj5b 2/2 Running 0 3h27m kubecost-kube-state-metrics-99bb8c55b-bn2br 1/1 Running 0 3h27m kubecost-prometheus-server-7d9967bfc8-9c8p7 2/2 Running 0 3h27m
  2. デバイス上でポート転送を有効にして、Kubecost ダッシュボードを公開します。

    kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090

    または、AWS Load Balancer Controller を使用して Kubecost を公開し、Amazon Cognito を使用して認証、認可、およびユーザー管理を行うこともできます。詳細については、「Application Load Balancer および Amazon Cognitoを使用して Kubernetes Web アプリのユーザーを認証する方法」を参照してください。

  3. 前の手順を実行したのと同じデバイスで、Web ブラウザを開き、次のアドレスを入力します。

    http://localhost:9090

    ブラウザに Kubecost の概要ページが表示されます。Kubecost がメトリクスを収集するには 5 ~ 10 分かかる場合があります。クラスターにかかる累積コスト、関連する Kubernetes 資産コスト、および毎月の総支出を含む Amazon EKS の支出額を確認できます。

    Kubecost ダッシュボード
  4. クラスターレベルでコストを追跡するには、請求対象の Amazon EKS リソースにタグを付けます。詳細については、「請求用のリソースにタグを付ける」を参照してください。

ダッシュボードの左ペインで選択すると、次の情報も表示できます。
  • コスト配分 — Amazon EKS の月間費用と、各名前空間およびその他のディメンションの過去 7 日間の累積費用を表示します。これは、アプリケーションのどの部分が Amazon EKS の支出に寄与しているかを理解するのに役立ちます。

  • アセット — Amazon EKS リソースに関連する AWS インフラストラクチャアセットの費用を表示します。