メインコンテンツまでスキップ

コスト配分

次に、コスト配分を見てみましょう。Cost Allocationをクリックしてください。

以下のようなダッシュボードが表示されるはずです:

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

このスクリーンを使用して、クラスターのコスト配分をさらに詳しく調査できます。様々なコスト次元を見ることができます:

  • namespace(名前空間)
  • deployment(デプロイメント)
  • pod
  • labels(ラベル)

はじめに紹介したセクションでインストールしたアプリケーションは、これらのコンポーネントをいくつか作成しました。これらのコンポーネントにもあります。次に、これらの次元を使用してこのアプリケーションのコストを詳しく見てみましょう。

これを行うには、右上のAggregate byの横にある設定ボタンをクリックします。

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

次に、Filtersの下でドロップダウンメニューからlabelを選択し、値としてapp.kubernetes.io/created-by: eks-workshopを入力し、プラス記号をクリックします。

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

これにより、名前空間がフィルタリングされ、ラベルapp.kubernetes.io/create-by: eks-workshopを持つワークロードのみが表示されます。このラベルは、はじめに紹介したセクションでインストールしたアプリケーションのすべてのコンポーネントに含まれています。

次にAggregate byをクリックし、Deploymentを選択します。これにより、名前空間ではなくデプロイメントごとにコストが集計されます。以下を参照してください。

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

アプリケーションに関連する異なるデプロイメントがあることがわかります。さらに詳しく調査できます。単一の名前空間を見てみましょう。Aggregate byNamespaceに戻し、フィルターを削除して、テーブル内の名前空間の1つをクリックします。ここではorders名前空間を選択しました。

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

このビューでは、この名前空間で実行されているKubernetesリソースに関連するすべてのコストを確認できます。これは、マルチテナントクラスターを持ち、顧客ごとに名前空間がある場合に役立つビューとなります。

また、この名前空間で実行されているさまざまなリソースとそれらに関連するコストを確認することもできます。

Orders Namespace Resources

Controllersの下のエントリの1つをクリックします。ここではordersデプロイメントをクリックしました。

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

このビューでは、特定の「コントローラー」(この場合はデプロイメント)の詳細が表示されます。この情報を使用して、どのような最適化が可能かを理解し始めることができます。例えば、リソース要求と制限を調整して、EKSクラスター内の各ポッドに割り当てられるCPUとメモリの量を制限するなどです。

これまで、コスト配分の広範な概要または単一リソースの詳細な調査を見てきました。チームごとにコスト配分を深く掘り下げたい場合はどうすればよいでしょうか?以下のシナリオを考えてみましょう:会社の各チームがクラスター内の運用コストに責任を持っています。例えば、クラスター内のすべてのデータベースに責任を持つチームがあり、彼らは運用コストを詳しく調べたいと考えています。これは、各データベースにそのチームに関連するカスタムラベルを付けることで実現できます。私たちのクラスターでは、すべてのデータベースリソースにラベルapp.kubernetes.io/team: databaseを付けています。このラベルを使用して、このチームに属する異なる名前空間にまたがるすべてのリソースをフィルタリングできます。

http://k8s-kubecost-kubecost-e83ecf8fc1-fc26f5c92767520f.elb.us-west-2.amazonaws.com:9090/allocations

Kubecostには、貯蓄、ヘルス、レポート、アラートなど他にも多くの機能があります。さまざまなリンクを自由に試してみてください。