|
Kubernetesは、クラウド上で動的なコンテナ化アプリケーションを管理するための強力なプラットフォームですが、コストの発生場所を把握するのは難しい場合があります。Kubernetesリソースのコスト効率を管理することは、さらに困難です。そこでOpenCostの出番です。OpenCostは、Kubernetesとシームレスに統合されたクラウドコスト監視ツールで、クラウドの支出をリアルタイムで追跡し、それに応じてリソースを最適化できます。 OpenCostは、Kubernetesのデプロイメントに関連するクラウドコストをリアルタイムで監視するためのオープンソースのCNCFサンドボックスプロジェクトおよび仕様です。この仕様は、Kubernetesのクラウド支出とリソース割り当ての現在および履歴を、サービス、デプロイメント、名前空間、タグなどに基づいてモデル化します。このデータは、アプリケーションからインフラストラクチャに至るまで、Kubernetesのコストとパフォーマンスを理解し、最適化するために不可欠です。 要件とインストールOpenCost を使い始めるのは比較的簡単です。OpenCost は、監視とメトリックの保存に Prometheus を使用します。Prometheus コミュニティの Kubernetes Helm Chart からインストールできます。 Prometheusをインストールするまず、次のコマンドを使用して Prometheus をインストールします。 $ helm install my-prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \ --namespace prometheus --create-namespace \ --set pushgateway.enabled=false --set alertmanager.enabled=false -f \ https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml OpenCostをインストールする次に、 kubectlコマンドを使用して OpenCost をインストールします。 $ kubectl apply --namespace opencost -f \ https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/opencost.yaml このコマンドは、OpenCostをクラスターにデプロイし、データの収集を開始します。ほとんどのインストールではこれで十分です。独自のPrometheusインストールを使用することも、OpenCost Helm Chartを使用してデプロイをカスタマイズすることもできます。 テストとアクセスOpenCostはAWS、Azure、GCPのいずれで実行されているかを自動的に検出し、オンプレミスのKubernetesデプロイメント向けの料金設定を設定できます。まず、APIとUIアクセス用のポートを転送します。 $ kubectl port-forward --namespace opencost service/opencost 9003 9090 約5分以内に、UIとサーバーが実行中であることを確認して、 http://localhost:9090経由でアクセスできます。 監視コストKubernetes クラスターにデプロイされた OpenCost を使用して、クラウドコストのモニタリングを開始する準備が整いました。OpenCost ダッシュボードは、クラウド支出をリアルタイムで可視化し、コストの異常値を特定してクラウドリソースを最適化するのに役立ちます。クラウド支出は、ノード、名前空間、ポッド、タグなど、さまざまな単位で確認できます。 OpenCost 監視コンソール kubectl costプラグインは、Kubernetesのコスト配分メトリクスに対するシンプルなCLIクエリを提供します。これにより、開発者、オペレーター、その他のユーザーは、Kubernetesワークロードのコストと効率を迅速に把握できます。 $ kubectl cost --service-port 9003 \ --service-name opencost --kubecost-namespace opencost \ --allocation-path /allocation/compute pod \ --window 5m --show-efficiency=true +-------+---------+-------------+----------+---------------+ |CLUSTER|NAMESPACE|POD |MONTH RATE|COST EFFICIENCY| +-------+---------+-------------+----------+---------------+ |cl-one |kube-syst|coredns-db...| 1.486732 | 0.033660 | | | |coredns-...dm| 1.486732 | 0.032272 | | | |kube-prox...7| 1.359577 | 0.002200 | | | |kube-prox...x| 1.359577 | 0.002470 | | |opencost |opencost...5t| 0.459713 | 0.187180 | | |kube-syst|aws-node-cbwl| 0.342340 | 0.134960 | | | |aws-node-gbfh| 0.342340 | 0.133760 | | |prometheu|my-prome...pv| 0.000000 | 0.000000 | | | |my-prome...hn| 0.000000 | 0.000000 | | | |my-prome...89| 0.000000 | 0.000000 | +-------+---------+-------------+----------+---------------+ | SUMMED| | | 6.837011 | | +-------+---------+-------------+----------+---------------+ API を統合して、選択したプラットフォームにプログラムでデータを抽出することもできます。 Kubernetesの最適化戦略クラウドのコストについて理解できたので、Kubernetes環境を最適化しましょう。最適化は反復的なプロセスです。スタックの最上位(コンテナ)から始めて、各レイヤーを反復処理します。各ステップの効率は積み重なっていきます。Kubernetesを最適化してコスト効率を向上させる方法は数多くあります。例えば、以下のようなものがあります。 - 放棄されたワークロードと未要求のボリュームを見つける: 未使用または切断されたコンテナ ポッドとストレージは、価値を提供せずにリソースを消費し続けます。
- ワークロードのサイズを調整する:ワークロードに適したサイズのコンテナを使用していることを確認してください。コンテナの割り当てが過剰または不足していないか調査してください。
- 自動スケーリング: 自動スケーリングにより、必要なときにのみリソースを使用することでコストを節約できます。
- クラスターサイズの調整:ノード数が多すぎたり大きすぎたりすると、効率が悪くなる可能性があります。容量、可用性、パフォーマンスの適切なバランスを見つけることで、コストを大幅に削減できます。
- より安価なノードタイプの調査:CPU、RAM、ネットワーク、ストレージには様々なバリエーションがあります。ARMアーキテクチャに切り替えることで、さらに大きなコスト削減が実現できる可能性があります。
- FinOps チームに投資する: 組織内の専任チームは、予約インスタンス、スポットインスタンス、節約プランを調整することで、より大きな節約を実現する方法を見つけることができます。
今日からKubernetes環境でのコスト監視は難しい場合がありますが、OpenCostを使えば問題ありません。OpenCostを使い始めてクラウド支出を管理するには、OpenCostのウェブサイトにアクセスし、GitHubでコードを入手し、OpenCostのドキュメントを参照し、CNCF Slackの#opencostチャンネルに参加してください。 |