🎼

Kubecost で AKS のコストを可視化してみた

2022/01/19に公開

AKS (Azure Kubernetes Service) のドキュメントにて Kubecost でコストを可視化したり削減提案などを確認できるということで、実際にやってみました。

環境

  • AKS 1.20.7
    • 色々と検証で使っている 8 ノードクラスタ
  • Windows 10
  • Kubecost v1.89.1

Kubecost のデプロイ

下記の MS 社公式ドキュメントの手順に沿ってデプロイ。特に問題も発生しませんでした。

Helm でもインストールできますが、普通に kubectl apply でも OK なので、特別なツールは不要です。

デプロイされたリソース

デプロイされたリソースは、こんな感じでした。

> kubectl apply -f https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/master/kubecost.yaml --namespace kubecost
podsecuritypolicy.policy/kubecost-grafana created
podsecuritypolicy.policy/kubecost-cost-analyzer-psp created
serviceaccount/kubecost-grafana created
serviceaccount/kubecost-kube-state-metrics created
serviceaccount/kubecost-prometheus-node-exporter created
serviceaccount/kubecost-prometheus-server created
serviceaccount/kubecost-cost-analyzer created
secret/kubecost-grafana created
configmap/kubecost-grafana-config-dashboards created
configmap/kubecost-grafana created
configmap/kubecost-prometheus-server created
configmap/kubecost-cost-analyzer created
configmap/nginx-conf created
configmap/attached-disk-metrics-dashboard created
configmap/cluster-metrics-dashboard created
configmap/cluster-utilization-dashboard created
configmap/deployment-utilization-dashboard created
configmap/label-cost-dashboard created
configmap/namespace-utilization-dashboard created
configmap/node-utilization-dashboard created
configmap/pod-utilization-dashboard created
configmap/prom-benchmark-dashboard created
configmap/grafana-datasource created
persistentvolumeclaim/kubecost-prometheus-server created
persistentvolumeclaim/kubecost-cost-analyzer created
clusterrole.rbac.authorization.k8s.io/kubecost-grafana-clusterrole created
clusterrole.rbac.authorization.k8s.io/kubecost-kube-state-metrics created
clusterrole.rbac.authorization.k8s.io/kubecost-prometheus-server created
clusterrole.rbac.authorization.k8s.io/kubecost-cost-analyzer created
clusterrolebinding.rbac.authorization.k8s.io/kubecost-grafana-clusterrolebinding created
clusterrolebinding.rbac.authorization.k8s.io/kubecost-kube-state-metrics created
clusterrolebinding.rbac.authorization.k8s.io/kubecost-prometheus-server created
clusterrolebinding.rbac.authorization.k8s.io/kubecost-cost-analyzer created
role.rbac.authorization.k8s.io/kubecost-grafana created
role.rbac.authorization.k8s.io/kubecost-cost-analyzer created
role.rbac.authorization.k8s.io/kubecost-cost-analyzer-psp created
rolebinding.rbac.authorization.k8s.io/kubecost-grafana created
rolebinding.rbac.authorization.k8s.io/kubecost-cost-analyzer created
rolebinding.rbac.authorization.k8s.io/kubecost-cost-analyzer-psp created
service/kubecost-grafana created
service/kubecost-kube-state-metrics created
service/kubecost-prometheus-node-exporter created
service/kubecost-prometheus-server created
service/kubecost-cost-analyzer created
daemonset.apps/kubecost-prometheus-node-exporter created
deployment.apps/kubecost-grafana created
deployment.apps/kubecost-kube-state-metrics created
deployment.apps/kubecost-prometheus-server created
deployment.apps/kubecost-cost-analyzer created

Prometheus とか Grafana も一緒にデプロイされていますね。

画面を見てみる

#本当はずっと起動していれば良いグラフになったと思いますが、費用削減で普段は止めているのでご容赦ください🙇‍♂️

Overview

トップページはこんな感じ。いわゆるダッシュボードで namespace ごとのコストやリソースごとのコストがグラフ化されています。

Cost Allocation

色々な切り口でのコスト分析ができます。右上の「Aggregate by」の箇所を変えることで、Namespace だけではなくノードや Pod、ラベルなどの単位でコストを確認することができます。

Assets

リソースの軸でコストを可視化することができます。この画面は Node, Disc, Load Balancer といったリソースタイプで分類されている画面です。

Savings

コスト削減の提言・試算を確認することができます。使われていないワークロードの示唆 (Remedy abandoned workloads) とか、ノードの最適化 (Manage underutilized nodes) とか、コスト削減に繋がる情報が確認できるようになっています。

Health

Kubernetes 運用時のヘルスチェックっぽいダッシュボードもありました。

Pending になっている Pod (Pending pods found) とか、ノードのメモリ不足 (Node memory pressure detected) とか、地味に使えそうな感じでした。

おわりに

以上、ざっと見てみました。Health が結構使えそうに感じます。導入がとても簡単なので、まずは試験環境とかで運用に入れて試してみても面白いかもです。

また、グラフの切り口や Health のチェック項目等について、あまり公式ドキュメントでまとまりきっていないみたいなので、機能確認の際は是非試してみることをオススメします。

Discussion