👉️URL: https://www.kubecost.com/ 📝Description: Kubeccost 为使用 Kubernetes 的团队提供实时成本可视化和洞察,帮助您持续降低云成本。
昨天浏览 Kubectl 插件的时候发现了 Kubecost,一看惊为天人啊,这个功能对于运营团队和 PM 团队领导来说太重要了。直接把监控数据换算成钱,而且明确告诉你钱花在哪个 namespace、哪个应用、哪个标签、哪个 deployment下,明确告诉你那些钱花得值、哪些钱浪费了,有哪些办法可以减少浪费… 真的都是实打实的「降本」功能。
下面详细介绍一下。
Kubeccost 为使用 Kubernetes 的团队提供实时成本可视化和洞察,帮助您持续降低云成本。
Kubecost 概览页
成本分配功能示意图
按 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]]
安装 Kubecost (Helm 的 options 可以看这里:cost-analyzer-helm-chart[1])
helm repo add kubecost https://kubecost.github.io/cost-analyzer/
helm upgrade -i --create-namespace kubecost kubecost/cost-analyzer --namespace kubecost --set kubecostToken="a3ViZWN0bEBrdWJlY29zdC5jb20=xm343yadf98"
部署完成显示如下:
NAME: kubecost
LAST DEPLOYED: Sat Nov 27 13:44:30 2021
NAMESPACE: kubecost
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
--------------------------------------------------Kubecost has been successfully installed. When pods are Ready, you can enable port-forwarding with the following command:
kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090
Next, navigate to http://localhost:9090 in a web browser.
Having installation issues? View our Troubleshooting Guide at http://docs.kubecost.com/troubleshoot-install
部署完成后,访问 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 有以下几大菜单项,各个都是省钱能手。
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:每月开销
ℹ️ 提示: 成本效益定义为 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 团队领导看到,一定会爱不释手的。🤑🤑🤑
[1]
cost-analyzer-helm-chart: https://github.com/kubecost/cost-analyzer-helm-chart/blob/master/README.md#config-options