Kubecost | Kubernetes 开支监控和管理 🤑🤑🤑

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
简介: Kubecost | Kubernetes 开支监控和管理 🤑🤑🤑

Kubeccost 为使用 Kubernetes 的团队提供实时成本可视化和洞察,帮助您持续降低云成本。

昨天浏览 Kubectl 插件的时候发现了 Kubecost,一看惊为天人啊,这个功能对于运营团队和 PM 团队领导来说太重要了。直接把监控数据换算成钱,而且明确告诉你钱花在哪个 namespace、哪个应用、哪个标签、哪个 deployment 下,明确告诉你那些钱花得值、哪些钱浪费了,有哪些办法可以减少浪费… 真的都是实打实的「降本」功能。

下面详细介绍一下。

亮点:监控和降低云成本

Kubeccost 为使用 Kubernetes 的团队提供实时成本可视化和洞察,帮助您持续降低云成本。

Kubecost 概览页

产品功能

💰️ 成本分摊

成本分配功能示意图

按 Kubernetes 概念划分成本,包括部署(Deployment)、服务(Service)、命名空间(Namespace)、标签(Label)等等。开销视图可以跨越单个视图中的多个集群或通过单个 API 端点。

📺 统一成本监控

统一成本监控

将 Kubernetes 的成本与任何外部云服务或基础设施的支出结合起来,就可以获得一个完整的图景。可以分摊外部成本,然后归因于任何 Kubernetes 概念,以实现综合支出。

⚖️ 成本优化方案

不牺牲绩效 的前提下接受 动态 的建议。优先考虑关键基础设施或应用程序更改,以提高资源效率和可靠性。

🔔 开销警报和治理

开销警报

1
2
3
4
5
6
7
alerts: # Kubecost 产生关于群集数据的警报
    # 在命名空间 `kubecost` 的每日预算警报
  - type: budget # 支持: 预算, recurringUpdate, 等.
    threshold: 50 # 预算警报所需
    window: daily # 或 1d
    aggregation: namespace
    filter: kubecost
YAML

在成本超支和基础设施中断风险成为实时通知问题之前,迅速捕捉它们。通过集成像 PagerDuty 和 Slack 这样的工具来保留工程工作流。

而且可以运行在以下环境:

  • Azure
  • AWS
  • Google Cloud
  • 内网环境
  • Kubernetes
  • 本地部署

安装

可以使用 Helm Chart 进行安装。

![[K8S 实用工具之四 - kubectl 实用插件 #cost https github com kubecost kubectl-cost]]

安装见这里:《K8S 实用工具之四 - kubectl 实用插件:cost

部署完成后,访问 kubecost-cost-analyzer 的 9090 端口即可查看 UI,Ingress 方式或者 port-forward 都可以。

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

升级

1
helm repo update && helm upgrade kubecost kubecost/cost-analyzer -n kubecost
BASH

卸载

也是 Helm:

1
helm uninstall kubecost -n kubecost
BASH

🤑 实际效果展示

以我的集群为例,这展示的不是 UI,这展示的是白花花银子、绿油油的美元 💵 啊!

Kubecost 有以下几大菜单项,各个都是省钱能手。

Kubecost 菜单

  1. 🏠️ Overview(总览)
  2. 📊 Cost Allocation(成本分摊)
  3. 🧰 资产
  4. 💲 节流
  5. 🛑 健康状态
  6. 📃 报告
  7. 🔔 开销警报

总览

通过 port-forward 方式,访问 http://localhost:9090,首先的页面平平无奇:

Kubecost 第一屏:Cluster 集群 #1, 5 个节点,每月开销 138.39 美元。

Kubecost 第一屏

点进去后,真正的大杀器来了:

Kubecost Overview - 1

  • 左上角:识别到 5 条省钱小妙招,每月可以帮我节省 $93.64。🤑
  • 右上角:每月开销 $138.39,成本效益 2.7%,97.3% 都让云厂商白嫖啦 😱
  • 左下角:每月集群开销,基于资源价格的每月运行费率费用走势图,这里还可以拆分到:
  • 计算:

  • 内存

  • 存储

  • 此外!点击右侧「CLUSTER METRICS」还可以直接跳转到我们熟悉的 Grafana 仪表板,查看监控指标和 💵 的具体联系。(下一篇再补充)
  • 右下角:资源浪费率(🙊资源利用率),基于当前已购的资源和过去 7 天的用量
  • 计算:每月空跑 $105.10 😱
  • 内存:每月空跑 $20.51 😱
  • 存储:每月空跑 $9.10 😱
  • 刨去空跑,我的应用主要的消耗在内存的 $1.34,另外存储方面 System 用了 $1.53

Overview 继续下拉,还是震惊:

Kubecost Overview - 2

  • 左上角:基于 Controller 维度的成本分摊,根据过去 2 天的资源消耗,算出 Controller 的每月分摊成本,比如我的:
  • kubecost/deployment:kubecost-cost-analyzer 成本占比 $8.37 (17.1%)
  • monitoring/statefulset:prometheus-prometheus-operator-prometheus 成本占比 $5.83(11.9%)
  • monitoring/statefulset:alertmanager-prometheus-operator-alertmanager: 成本占比 $2.81(5.7%)
  • 右上角:基于 Service 维度的成本分摊,根据过去 2 天的资源消耗,算出 Service 的每月分摊成本,比如我的:
  • kubecost/kubecost-cost-analyzer 成本占比 $8.37 (17.1%)
  • 左下角:基于 NameSpace 维度的成本分摊,以及成本效益评分(1-100 分),比如我的:
  • kubecost:每月开销 $10.74,效益 22 分,不及格!😱
  • monitoring:每月开销 $9.63,效益 42 分,不及格!😱
  • crossplane-system:每月开销 $5.70,效益 5 分,战五渣! 😱
  • kube-system:每月开销 $2.71, 效益 17 分,不及格!😱
  • loki-stack:每月开销 $0.66,满分!(Loki YYDS ?)💯
  • 右下角:基础架构健康度,94 分(集群运行状况评级是对基础设施可靠性和性能风险的评估,分数范围从 1-100),属于花钱保平安了这是。😂

ℹ️ 提示

成本效益定义为 CPU 和 RAM 的(使用量 / request)。如果使用了资源,但没有 request 资源,那么效率被认为是无限的。

成本分摊

进入第二个菜单,成本分摊,效果如下:

成本分摊图表

细粒度到:CPU、GPU、RAM、PV、Network、LB、Shared。

另外,成本效益可以根据非常多的维度去进行分析,我想应该可以满足领导的需求:

成本效益归并的维度

资产

ℹ️ 提示

资产和公有云的信息对接后,可以获得更丰富的信息,如:云账号、供应商类型等。

目前版本可以对接:AWS 和 GCP,但是是付费功能。

下图为资产信息:

资产

也可以从多个维度拆分:

资产拆分维度

悬停到信息按钮,会告诉你计费单位:(计费单价可调整的)。如下图:

  • 每小时 Node 开销为:$0.03733。

计费单位

节流

如下图,可以评估每月大概能省多少钱,节省的比例。以及具体的节流措施:

  • 管理低利用率节点
  • 本地磁盘利用率低
  • Pod 配置的 Request 太多
  • 识别到潜在的不用的 wordload

节流

健康状态

这个功能比较一般,就是类似 K9S 的 popeye。效果如下图:

Cluster Health

  • 有 Pod pending
  • Worker node 没有分散在多个可用区(这个提示不错👍️)
  • 集群没有 master 副本

点进去还会有详细的指南,如下图:

多可用区指南

报告

报告就是基于 成本 和 资产两个维度,根据上面的仪表来定制定期的报告。

Reports

成本警报

成本警报就是告警,主要的区别是基于💵的维度:

  • 反复出现类
  • 成本效益类
  • 预算类
  • 开销变化类(如上文产品功能中的告警就是开销突然上升了 50%)
  • 健康类
  • 诊断类

告警分类

设置

定制化还挺全面的,说一些我认为实用的配置吧:

  1. 配置 Label,比如:租户对应的 Label 是 Tenant,部门对应的 Label 是 Apartment,产品对应的 Label 是 app…
  2. 价格类设置,可以设置:
  1. 折扣
  2. 共享开销比例、对应的 NS、Label 等
  3. 单价
  4. 货币

总结

完整看下来,如果让运营团队和 PM 团队领导看到,一定会爱不释手的。🤑🤑🤑

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Kubernetes 监控 Cloud Native
"解锁K8s新姿势!Cobra+Client-go强强联手,打造你的专属K8s监控神器,让资源优化与性能监控尽在掌握!"
【8月更文挑战第14天】在云原生领域,Kubernetes以出色的扩展性和定制化能力引领潮流。面对独特需求,自定义插件成为必要。本文通过Cobra与Client-go两大利器,打造一款监测特定标签Pods资源使用的K8s插件。Cobra简化CLI开发,Client-go则负责与K8s API交互。从初始化项目到实现查询逻辑,一步步引导你构建个性化工具,开启K8s集群智能化管理之旅。
53 2
|
3月前
|
Prometheus Kubernetes 监控
Kubernetes(K8S) 监控 Prometheus + Grafana
Kubernetes(K8S) 监控 Prometheus + Grafana
248 2
|
2月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
288 0
|
3月前
|
人工智能 运维 Kubernetes
智能化运维:KoPylot为k8S带来AI监控诊断
智能化运维:KoPylot为k8S带来AI监控诊断
|
4月前
|
存储 Kubernetes 容器
k8s卷管理-2
k8s卷管理-2
26 2
|
4月前
|
存储 Kubernetes 调度
k8s卷管理-1
k8s卷管理-1
22 2
|
3月前
|
Prometheus 监控 Kubernetes
在k8S中,状态码监控是怎么做的?
在k8S中,状态码监控是怎么做的?
|
3月前
|
Prometheus 监控 Kubernetes
在k8S中,blackbox主要是监控什么的?
在k8S中,blackbox主要是监控什么的?
|
3月前
|
Prometheus Kubernetes 监控
在k8S中,etcd是怎么监控的?
在k8S中,etcd是怎么监控的?