一个月节省40万核,企业级云资源分析与成本优化平台

news2024/11/18 12:39:43

Crane简介

Crane是一个基于 FinOps 的云资源分析与成本优化平台,是在保证客户应用运行质量的前提下实现极致的降本。

Crane 已经在腾讯内部自研业务实现了大规模落地,部署数百个 K8s 集群、管控 CPU 核数达百万,在降本增效方面取得了阶段性成果。

以腾讯某部门集群优化为例,通过使用 FinOps Crane,该部门在保障业务稳定的情况下,资源利用率提升了 3 倍;腾讯另一自研业务落地 Crane 后,在一个月内实现了总 CPU 规模 40 万核的节省量,相当于成本节约超 1000 万元/月

简单的说,它可以帮助企业在使用云计算资源时更好地管理成本。Crane可以帮助企业在云计算环境中实现资源成本的透明化管理,从而更好地控制成本,提高效益。Crane可以通过API将云计算资源的使用情况与成本进行关联,并提供实时的成本分析预测功能

如图所示,Crane的核心架构很清晰明了。

首先,Craned 是 Crane 的最核心组件,管理了 CRDs 的生命周期以及API。
Craned 通过 Deployment 方式部署且由两个容器组成:Craned 和Dashboard。

然后,Fadvisor 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到监控系统,比如 Prometheus。

Metric Adapter 实现了一个 Custom Metric Apiserver. Metric Adapter 读取 CRDs 信息并提供基于 Custom/External Metric API 的 HPA Metric 的数据。

Crane Agent 通过 DaemonSet 部署在集群节点上。

Crane优势

成本透明化:Crane可以帮助企业在云计算环境中实现资源成本的透明化管理。可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。

基于预测的水平弹性器:EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。

负载感知的调度器:动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。

基于 QOS 的混部:QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。

易于使用及开源:Crane是一个开源的工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane的开源性质使得企业可以自由地使用它,并根据自己的需求进行二次开发。Crane是一个开源的工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane的开源性质使得企业可以自由地使用它,并根据自己的需求进行二次开发。

Crane实战安装

1、安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

2、安装 kubectl 校验:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"

3、验证 kubectl:
echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check

4、下载Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

5、赋权Helm
chmod 777 get_helm.sh

6、安装Helm
./get_helm.sh

7、下载Kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64

8、赋权Kind
chmod +x ./kind

9、安装Crane(包括普罗米修斯等依赖)
curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -

9、添加Crane的环境变量
export KUBECONFIG=${HOME}/.kube/config_crane

10、访问界面:
kubectl -n crane-system port-forward service/craned 9090:9090

11、查看Pod情况
kubectl get pod -n crane-system

智能弹性功能应用

Kubernetes HPA 支持了丰富的弹性扩展能力,Kubernetes 平台开发者部署服务实现自定义 Metric 的服务,Kubernetes 用户配置多项内置的资源指标或者自定义 Metric 指标实现自定义水平弹性。

EffectiveHorizontalPodAutoscaler(简称 EHPA)是 Crane 提供的弹性伸缩产品,它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。

使用该功能可通过以下步骤:

1、安装
kubectl apply -f installation/components.yaml

2、启动
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/php-apache.yaml
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/analytics/nginx-deployment.yaml


3、创建
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/effective-hpa.yaml

4、增加负载
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

5、负载查看
kubectl get hpa ehpa-php-apache --watch

Crane建议

Crane给我的感觉是非常不错的,并且社区生态已经有了一定的发展,我觉得能够很好的利用Crane做到降本增效。

同时Crane可以考虑丰富一下前端界面,增加课多可视化大屏界面,方便操作,简化上手难度。

最后就是可以推广加强一下社区生态以及知名度了!期待产品的大范围使用~

总结

关于腾讯云 Finops Crane 集训营:

Finops Crane集训营主要面向广大开发者,旨在提升开发者在容器部署、K8s层面的动手实践能力,同时吸纳Crane开源项目贡献者,鼓励开发者提交issue、bug反馈等,并搭载线上直播、动手实验组队、有奖征文等系列技术活动。既能让开发者通过活动对 Finops Crane 开源项目有深入了解,同时也能帮助广大开发者在云原生技能上有实质性收获。
为奖励开发者,我们特别设立了积分获取任务和对应的积分兑换礼品。

活动介绍送门:https://marketing.csdn.net/p/038ae30af2357473fc5431b63e4e1a78

开源项目: https://github.com/gocrane/crane

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据驱动运营增长

利用数据来分析、优化和提升产品或服务的各个方面,从而实现业务目标的方法叫数据驱动运营增长。用好数据,在运营中能精准地定位用户需求、痛点、偏好和行为,细分用户群体以提供个性化的产品或服务,精细化地管理和优化每一个环节和…

操作系统原理 —— 什么是管程? 管程的概念以及作用(十六)

上一个章节中,我们讲了什么是信号量,如何用信号量来实现进程之间的同步、互斥。 但是吧,用信号量来实现的话,好麻烦哟,在各个进程之间都要大量的 PV 操作,而且操作不当一不小心就死锁了,为了锻…

00后薪资比老油条高,简直无地自容了...

00后带来的压力 公司一位工作3年的老油条工资还没有刚来的00后高,她心中不平,对这件事情有不小的怨气,她觉得自己来公司三年了,三年内迟到次数都不超过5次,每天勤勤恳恳,要加班的时候也愿意加班&#xff0…

Redhat7.3linux系统防火墙命令总结

在Linux系统部署皕杰报表后,需要关闭防火墙或者开放报表工具使用的端口,才能通过浏览器访问报表。 在linux中如何关闭防火墙或开启端口呢?基本上是基于命令操作。通过几天的实践,总结了有关防火墙的操作命令,现记录如…

雅思倒计时一个月|听力准备笔记(二)

首战雅思7.5|听力8.5分享 听力来啦~完整雅思备考攻略见之前发的喔~ 🌟总分7.5 听力8.5 🌟🔴【听力考什么】 雅思实用性很强 每个测试内容都与出国后生活或学习息息相关 听力考察关键信息抓取能力 在日常学…

python4行代码实现pdf转换为docx|python实现pdf与docx之间互转

本期目录 一、pdf转docx二、docx转pdf三、doc转换为docx四、xls格式转换为xlsx五、pdf批量转换成docx六、docx批量转成pdf 一、pdf转docx 将PDF 格式转换为Word格式要求很高,很多的转换网页需要付费、而且转换的效果不好。 在Python中,利用pdf2docx库可…

el-popover无法点击、点击没反应、不能正常唤起弹出框

项目场景: 表格内操作按钮点击后,刷新列表更新按钮显示状态 问题描述 点击更新状态后的那条数据操作按钮。 发现element-ui的el-popover无法点击唤出弹窗,但刷新页面就可以正常点击进行操作。即el-popover刷新列表后无法点击 原因分析&…

5G信道建模研究进展与展望

5G信道建模研究进展与展望 一、信道建模定义二、5G信道建模研究进展1. 5G信道建模的理论框架1.1 大尺度衰落特性1.2 小尺度衰落特性1.3 信道新特性 2. 5G信道测量平台和应用场景2.1 5G信道测量平台2.2 5G信道的应用场景 3. 5G信道特性提取与建模 三、未来6G信道建模的研究方向1…

赛效:如何修改调整GIF动图宽高尺寸

1:在网页上搜索踢踢零动图,在首页点击“GIF尺寸缩放”,进入该功能页面。 2:在操作页面上添加GIF动图。 3:在左侧菜单里设置宽、高,如果不想让动图变形,可以锁定比例。设置完成后,点击…

个人博客系统的测试报告

目录 1.项目背景2.项目功能3.测试计划3.1功能测试3.1.1 测试用例设计3.1.2 实际执行测试的部分操作步骤 3.2自动化测试3.2.1 脑图3.2.2 代码编写 1.项目背景 实现一个类似CSDN的个人博客系统 支持以下核心功能: 支持用户注册登录并设置个人信息如头像、昵称等等; 对…

【事务】MySql Lock wait timeout exceeded该如何处理?service层调用内部方法事务失效如何处理?

文章目录 参考文章问题描述解决办法办法1. 新增查询操作办法2. 判断实际事务场景解决办法 参考文章 MySql Lock wait timeout exceeded该如何处理? AopContext.currentProxy()的使用 问题描述 同一事务内包含对同一条记录进行新增、更新操作,导致mysq…

年薪30W的测试被开除,回怼道:“反正我有技术,在哪不一样”这种观点对吗?

一位年薪30W测试工程师被开除回怼道:“反正我有技术,在哪不一样” 一技傍身,万事不愁,当我们掌握了一技之长后,在职场上说话就硬气了许多,不用担心被炒,反过来还可以炒了老板,这一点…

Hadoop基础学习---4、HDFS写、读数据流程、NameNode和SecondaryNameNode、DataNode

1、HDFS写、读数据流程 1.1 HDFS写数据流程 1.1 剖析文件写入 1、客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。 2、NameNode返回是否可以上传。 3、客户端请求第一个Block上传到哪几…

选择多张图片的方案

适用场景 1、微信公众号开发,代替wx.chooseImage,选择多张图片上传自己服务器; 2、常规的javascript的开发,选择多张图片上传到自己的服务器; 3、扩展到vue和react等框架使用; 整体思路 1、使用input控…

文章百度秒收录方法大全

文章百度秒收录方法大全,百度秒收录?直接套用这个模版创作原创文章#网络营销#案例文章 今天分享几个提高文章质量的简单方法,看一眼就能够操作的。 1、引用金句很多人不知道怎么表达观点,引用金句是一个不错的方法,平时多收集&…

(IDEA)springCloud项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

idea导入本地jar包 方法一:点击左上角File–>Project Structure–>Modules。打开Modules界面点击下方号,选择第一项,找到想要导入的本地jar包。此方法可以使项目使用导入的jar包程序不报错,但是在打包项目时,会出现找不到程…

Kyligence Zen使用体验 - 从数据可视化说起

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

SpringBoot JDBC连接数据库项目代码构建

本期引言: 本文将介绍如何使用SpringBoot框架构建一个简单的JDBC连接数据库项目。在这个项目中,我们将使用MySQL作为数据库,通过SpringBoot框架实现数据的增删改查操作。本文将涵盖以下内容: 配置项目所需的环境和工具创建Sprin…

01 Android开机启动之整体分析

Android开机启动之整体分析 一、Android系统整体架构图 Android是谷歌开发的一款基于Linux的开源操作系统 PowerManagement:系统最底层是电源管理,只有通过电源上电,系统才能开启 Linux kernel:驱动层,里面包括Audio、Carmera、usb等各种外设的驱动程序。 HAL层:硬件…

snmp关闭指定网口

一、下载安装MIB Network Management / Network Monitoring / SNMP Monitoring / MIB Browser 1. 选择interfaces->ifTable->ifEntry,右键Table View,如上图所示 2.选择一个你想要设置的网口,点击上方的SNMP SET,弹出窗口 3.OID获取 …