URL: https://www.kubecost.com/

Description:

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

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

下面详细介绍一下。

亮点:监控和降低云成本

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

产品功能

️ 成本分摊

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

统一成本监控

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

⚖️ 成本优化方案

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

开销警报和治理

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

在成本超支和基础设施中断风险成为实时通知问题之前,迅速捕捉它们。通过集成像 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 都可以。

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

升级

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

卸载

也是 Helm:

helm uninstall kubecost -n kubecost

实际效果展示

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

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

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

总览

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

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

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

  • 左上角:识别到 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 继续下拉,还是震惊:

  • 左上角:基于 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。效果如下图:

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

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

报告

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

成本警报

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

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

设置

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

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

总结

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

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

Kubecost - Kubernetes 开支监控和管理的更多相关文章

  1. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  2. kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)

    Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...

  3. Kubernetes容器集群管理环境 - 完整部署(中篇)

    接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...

  4. 阿里云上万个 Kubernetes 集群大规模管理实践

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...

  5. Kubernetes容器集群管理环境 - 完整部署(下篇)

    在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...

  6. Kubernetes 使用 Kubevirt 运行管理 Windows 10 操作系统

    原文链接:https://fuckcloudnative.io/posts/use-kubevirt-to-manage-windows-on-kubernetes/ 最近我发现我的 Kubernet ...

  7. 监控和管理Cassandra

    了解Cassandra集群的性能特点有助于诊断和维护Cassandra.由于Cassandra使用JAVA开发的,所以它就提供了JMX环境下的一些管理工具来管理Cassandra,它们包括:Cassa ...

  8. 笔记:Spring Boot 监控与管理

    在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...

  9. 监控与管理dubbo服务

    Dubbo是阿里多年前开源的一套服务治理框架,在众多互联网企业里应用广泛.本文介绍了一些如何监控与管理dubbo服务.使用的工具与<dubbox 的各种管理和监管>大致相同,本文更侧重于命 ...

  10. Spring Boot监控与管理的实现

    认识Actuator 在SpringBoot应用中引入spring-boot-starter-actuator依赖,它可以为开发团队提供系统运行的各项监控指标. 在项目中引入依赖配置如下: appli ...

随机推荐

  1. error Delete `␍` prettier/prettier 错误解决方案

    问题根源: 罪魁祸首是git的一个配置属性:core.autocrlf 由于历史原因,windows下和linux下的文本文件的换行符不一致. Windows在换行的时候,同时使用了回车符CR(car ...

  2. 前端,es6中的promise异步方法,及用的场景

    网上看了些资料,总结以下几种方法 1,数据管道方法,这个方法用的场景:URL1请求返回的数据1,请求URL2的传参是数据1,返回数据2,请求URL3的参数是数据2. new Promise(funct ...

  3. gitee提交过程

    https://gitee.com/ 一个线上代码云端软件开发协作平台 首先注册一个账号 然后添加新的仓库 仓库名称和路径是必填项 然后创建项目 选择  克隆存储数据库 存储库位置是网站获取的git位 ...

  4. 移动web_字体图标

    字体图标 字体图标的优点 1.他是文本内容,矢量图,放大不会失真 2.因为是文本所以可以用文本的样式来设置 字体图标与精灵图比较 1.精灵图可以将多个图存放在一个文件上,所以请求只有一次,但是精灵图存 ...

  5. IE8兼容的零零碎碎

    css部分 1 nth-of-type选择器 2 span:nth-of-type(1) 3 /*IE8兼容写法*/ 4 span:first-child /*选中第一个*/ 5 span:first ...

  6. 05 js利用ajax向服务器发送请求并返回json值

    创建一个php $json = '';$data = array();$con =mysqli_connect($servername, $username, $password, $dbname); ...

  7. mapboxGL2离线化应用

    https://blog.csdn.net/GISShiXiSheng/article/details/120300679?spm=1001.2014.3001.5501

  8. 4组-Beta冲刺-4/5

    一.基本情况 队名:摸鲨鱼小队 组长博客:https://www.cnblogs.com/smallgrape/p/15604878.html github链接:https://github.com/ ...

  9. js- throw and try-catch-finally

    总结一下: 1.throw 抛出错误 2.在使用try-catch时 try{}抛出错误,catch{}块语句才执行,另外catch(e)可创建例如e的标识符,对try{}块抛出异常进行捕捉 3.在使 ...

  10. C语言初级阶段4——数组2————二维数组

    C语言初级阶段4--数组2----二维数组 二维数组的定义:类型说明符 数组名[数组大小] [数组大小] 第一个大小是行的大小,第二个大小是列的大小. 二维数组的初始化:{} #include< ...