翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
支出認識
支出認識とは、誰が、どこで、何が EKS クラスターで支出を引き起こしているかを理解することです。このデータを正確に把握することで、支出に対する認識を高め、修復すべき領域を強調できます。
推奨事項
Cost Explorer を使用する
AWS Cost Explorer
EKS コントロールプレーンと EKS Fargate のコスト
フィルターを使用すると、次の図に示すように、コントロールプレーンと Fargate Pod で EKS コストに対して発生したコストをクエリできます。
フィルターを使用すると、EKS のリージョン全体で Fargate Pod に発生した総コストをクエリできます。これには、次の図に示すように、CPU あたりの vCPU 時間数と GB 時間の両方が含まれます。
リソースのタグ付け
Amazon EKS は、Amazon EKS クラスターへの AWS タグの追加をサポートしています。これにより、クラスターを管理するための EKS API へのアクセスを簡単に制御できます。EKS クラスターに追加されたタグは AWS EKS クラスターリソースに固有であり、EC2 インスタンスやロードバランサーなど、クラスターで使用される他の AWS リソースには伝達されません。現在、クラスターのタグ付けは、AWS API、コンソール、および SDKs。
AWS Fargate は、[コンテナ] に適切なサイズのコンピューティング能力をオンデマンドで提供するテクノロジーです。クラスターの Fargate でポッドをスケジューリングする前に、起動時に Fargate を使用するポッドを指定する Fargate プロファイルを少なくとも 1 つ定義する必要があります。
EKS クラスターへのタグの追加と一覧表示:
$ aws eks tag-resource --resource-arn arn:aws:eks:us-west-2:xxx:cluster/ekscluster1 --tags team=devops,env=staging,bu=cio,costcenter=1234 $ aws eks list-tags-for-resource --resource-arn arn:aws:eks:us-west-2:xxx:cluster/ekscluster1 { "tags": { "bu": "cio", "env": "staging", "costcenter": "1234", "team": "devops" } }
AWS Cost Explorer でコスト配分タグをアクティブ化すると、AWS はコスト配分タグを使用してコスト配分レポートのリソースコストを整理し、AWS コストの分類と追跡を容易にします。
タグには Amazon EKS に関する意味論的な意味はなく、完全に文字列として解釈されます。例えば Amazon EKS クラスターに一連のタグを定義して、各クラスターの所有者とスタックレベルを追跡できます。
AWS Trusted Advisor を使用する
AWS Trusted Advisor は、コスト最適化、セキュリティ、耐障害性、パフォーマンス、サービス制限の 5 つのカテゴリにわたって、さまざまなベストプラクティスチェックと推奨事項を提供します。
コスト最適化のために、Trusted Advisor は未使用のリソースとアイドル状態のリソースを排除し、リザーブドキャパシティーへのコミットメントを推奨します。Amazon EKS に役立つ主なアクション項目は、使用率の低い EC2 インスタンス、関連付けられていない Elastic IP アドレス、アイドルロードバランサー、使用率の低い EBS ボリュームなどです。チェックの完全なリストは、https://aws.amazon.com/premiumsupport/technology/trusted-advisor/best-practice-checklist/ で入手できます。
Trusted Advisor はEC2 インスタンスと Fargate の Savings Plans とリザーブドインスタンスのレコメンデーションも提供します。これにより、割引料金と引き換えに一貫した使用量にコミットできます。
注記
Trusted Advisor からの推奨事項は一般的な推奨事項であり、EKS に固有のものではありません。
クラスター内リソースの使用状況を表示する
注記
Kubernetes Dashboardkubectl topおよび kubectl describe コマンドを使用するか、以下のセクションで説明する CloudWatch Container Insights および Kubecost アプローチを使用します。AWS ネイティブのポッドレベルのコストの可視性と帰属については、以下の「Amazon EKS の分割コスト配分データ (SCAD)」セクションを参照してください。
kubectl 上部と describe コマンド
kubectl 上部と kubectl でリソース使用状況メトリクスを表示すると、コマンドが記述されます。kubectl 上部には、クラスター全体のポッドまたはノード、または特定のポッドまたはノードの現在の CPU とメモリの使用状況が表示されます。kubectl describe コマンドは、特定のノードまたはポッドに関する詳細情報を提供します。
$ kubectl top pods $ kubectl top nodes $ kubectl top pod pod-name --namespace mynamespace --containers
トップコマンドを使用すると、出力にはノードが使用している CPU (コア単位) とメモリ (MiB 単位) の合計量と、それらの数値が表すノードの割り当て可能な容量の割合が表示されます。その後、--containers フラグを追加して、ポッド内の次のレベルのコンテナレベルにドリルダウンできます。
$ kubectl describe node <node> $ kubectl describe pod <pod>
kubectl describe は、各リソースリクエストまたは制限が表す使用可能な合計容量の割合を返します。
kubectl は、kubernetes ポッド、ノード、コンテナ全体で CPU、メモリ、ストレージなどの重要なリソースの使用率と可用性を追跡し、説明します。この認識は、リソースの使用状況を理解し、コストを制御するのに役立ちます。
Amazon EKS に分割コスト配分データ (SCAD) を使用する
Amazon EKS の分割コスト配分データ (SCAD) は、コンテナレベルのコストと使用状況データを AWS コストと使用状況レポート (CUR) に追加します。以前は、CUR は Amazon EC2 インスタンスレベルでのみコストを報告していました。SCAD はEC2 インスタンスの償却コストを、そのインスタンスで各ポッドが消費した CPU とメモリの割合で乗算することで、個々のポッドのコストを計算します。ポッドごとに 1 時間あたり 2 つの使用状況レコード (CPU とメモリ)、または NVIDIA と AMD GPUs、AWS Trainium、AWS Inferentia をカバーする高速コンピューティングインスタンス (アクセラレーター、CPU、メモリ) に 3 つの使用状況レコードを追加します。これにより、ビジネスユニット、チーム、名前空間、ワークロードに EKS 支出を関連付けることができます。
SCAD for Amazon EKS はaws:eks:cluster-name、、、、aws:eks:namespace、aws:eks:deployment、 aws:eks:workload-name aws:eks:workload-typeなどの AWS 生成のコスト配分タグを自動的に作成しますaws:eks:node。2025 年 10 月
SCAD を有効にするには、コスト管理設定 (管理/支払いアカウントのみがオプトイン可能、メンバーアカウントはデータを表示可能) で AWS Billing and Cost Management コンソールからオプトインし、Amazon EKS (リソースリクエスト、Amazon Managed Service for Prometheus、または CloudWatch Container Insights) の測定基準を選択し、コストと使用状況レポートに分割コスト配分データを含めます。SCAD はレガシー CUR および CUR 2.0 (データエクスポート経由) で使用できますが、AWS Cost Explorer では利用できません。CUR からは通常、データは Amazon Athena でクエリされ、分割コスト配分データに直接構築された SCAD コンテナのコスト配分ダッシュボードなど、Cloud Intelligence Dashboards (CID) を使用して Amazon QuickSight で視覚化されます (Kubecost ベースのダッシュボードは、データソースとして Kubecost を使用する場合にも利用できます)。
CloudWatch Container Insights を使用する
CloudWatch Container Insights を使用して、コンテナ化されたアプリケーションとマイクロサービスからメトリクスとログを収集、集約、要約します。Container Insights は、EC2 上の Amazon Elastic Kubernetes Service、および Amazon EC2 上の Kubernetes プラットフォームで使用できます。このメトリクスには、CPU、メモリ、ディスク、ネットワークなどのリソース使用率が含まれます。
インサイトのインストールについては、 ドキュメントを参照してください。
CloudWatch は、クラスター、ノード、ポッド、タスク、サービスレベルで CloudWatch メトリクスとして集計メトリクスを作成します。
次のクエリは、平均ノード CPU 使用率でソートされたノードのリストを示しています。
STATS avg(node_cpu_utilization) as avg_node_cpu_utilization by NodeName | SORT avg_node_cpu_utilization DESC
コンテナ名別の CPU 使用率
stats pct(container_cpu_usage_total, 50) as CPUPercMedian by kubernetes.container_name | filter Type="Container"
コンテナ名別のディスク使用量
stats floor(avg(container_filesystem_usage/1024)) as container_filesystem_usage_avg_kb by InstanceId, kubernetes.container_name, device | filter Type="ContainerFS" | sort container_filesystem_usage_avg_kb desc
Container Insights ドキュメントでは、さらに多くのサンプルクエリが提供されています。
この認識は、リソースの使用状況を理解し、コストを制御するのに役立ちます。
Kubecost を使用した支出の認識とガイダンス
kubecost
Helm 3 を使用した kubecost のデプロイ:
$ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash $ helm version --short v3.2.1+gfe51cd1 $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/ $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/c^C $ kubectl create namespace kubecost namespace/kubecost created $ helm repo add kubecost https://kubecost.github.io/cost-analyzer/ "kubecost" has been added to your repositories $ helm install kubecost kubecost/cost-analyzer --namespace kubecost --set kubecostToken="aGRoZEBqc2pzLmNvbQ==xm343yadf98" NAME: kubecost LAST DEPLOYED: Mon May 18 08:49:05 2020 NAMESPACE: kubecost STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: --------------------------------------------------Kubecost has been successfully installed. When pods are Ready, you can enable port-forwarding with the following command: kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 Next, navigate to http://localhost:9090 in a web browser. $ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 NOTE: If you are using Cloud 9 or have a need to forward it to a different port like 8080, issue the following command $ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 8080:9090
Kubecost ダッシュボード -
Kubernetes コスト配分とキャパシティプランニング分析ツールを使用する
Kubernetes Opex Analytics
ヨータスケール
Yotascale は、Kubernetes コストを正確に配分するのに役立ちます。Yotascale Kubernetes Cost Allocation 機能は、一般的な市場レートの見積もりではなく、リザーブドインスタンスの割引とスポットインスタンスの料金を含む実際のコストデータを利用して、Kubernetes のコストフットプリントの合計を通知します。
詳細については、ウェブサイト
Alcide Advisor
Alcide は AWS パートナーネットワーク (APN) アドバンストテクノロジーパートナーです。Alcide Advisor は、Amazon EKS クラスター、ノード、ポッドの設定を、セキュリティのベストプラクティスと内部ガイドラインに従って実行するように調整するのに役立ちます。Alcide Advisor は、Kubernetes 監査とコンプライアンスのためのエージェントレスサービスであり、本番環境に移行する前に開発段階を強化することで、摩擦がなく安全な DevSecOps フローを確保するように設計されています。
詳細については、このブログ記事
その他のツール
Kubernetes ガベージコレクション
Kubernetes ガベージコレクター
Fargate の数
Fargatecount
ポップアイ - Kubernetes クラスターサニタイザー
ポップアイ - Kubernetes クラスターサニタイザー
リソース
コスト最適化のベストプラクティスの詳細については、以下のリソースを参照してください。