【腾讯云Finops Crane集训营】降本增效神器Crane实战记录

news2025/1/1 23:00:22

在这里插入图片描述

本章目录

  • 前言
  • 一、Crane是什么?
    • Crane的主要功能?
    • FinOps 是什么
    • Prometheus是什么
    • Grafana是什么
  • 二、不得不面对的问题:云上资源效能挑战!
  • 三、云原生场景下的成本优化挑战?
  • 四、K8s原生能力的不足
  • 五、Crane智能调度助力成本优化
    • 使用场景一:成本可视化
    • 场景二:规格推荐
    • 场景三:智能预测与自动扩容
  • 六、落地成效
  • 七、实战部署及使用
  • 八、使用方向建议
  • 总结:写在后面的话

前言

这段时间有幸参与了一下腾讯Finops Crane集训营的Crane公开体验训练营。

这不,给大家写一篇实战记录。

一、Crane是什么?

如下图所示,可以看到Crane的详细介绍:

在这里插入图片描述

简单的来说,就是在云原生技术不断发展和普及的大背景下,这是国内第一个基于云原生技术的成本优化项目,它遵循了FinOps标准,并且已经获得FinOps基金会授予的全球首个认证降本增效开源方案。

Crane项目的设计初衷是为了帮助企业更好地管理和扩展其Kubernetes集群,从而实现更高效的云原生应用管理。

这里给大家上活动链接:Crane活动地址

如果有技术大佬感兴趣这个Crane,也欢迎去Github找到并研究!
直达链接如下:https://github.com/gocrane/crane

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

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

接下来我们就从3个阶段部分来讲述该Crane的真正作用!

Crane的主要功能?

  1. 支持使用多种容器编排引擎来管理容器应用程序的生命周期,包括Docker、Kubernetes。
  2. 提供简便上手的方式来构建、发布容器镜像,支持使用模板和插件来自定义构建流程。
  3. 提供集成的监控和日志记录功能,可以帮助开发者及时发现和解决应用程序的问题。
  4. 可以将多个容器组合成一个完整的应用程序,提供灵活的网络和存储选项,以便更好管理和扩展应用程序。
  5. 使用简洁明了的配置文件格式来管理容器应用程序的配置,支持使用环境变量和参数来动态配置应用程序。
  6. 提供成本可视化和优化评估,多维度的成本洞察,优化评估。通过 Cloud Provider 支持多云计费。
  7. 基于 QOS 的混部,QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。

FinOps 是什么

FinOps是一种管理云计算成本的方法论,它结合了财务和技术团队的知识,旨在通过优化资源使用,降低云计算成本,提高业务效率和灵活性。FinOps的目标是通过透明度、责任分配和协作来确保云计算的成本与业务价值之间的平衡。

FinOps框架通常包括以下几个方面:

  • 费用可见性:通过监控和分析云资源的使用情况,以及对不同部门和项目的费用进行分类,以确保所有人都能看到云计算成本的实际情况。
  • 责任分配:通过为每个部门或项目分配云计算成本,促进各个团队对资源使用和成本的责任感,从而鼓励更加负责任的行为。
  • 成本优化:通过分析使用情况和历史数据,以及使用自动化工具和最佳实践来优化资源的使用,从而最大程度地降低云计算成本。
  • 协作和文化:通过建立文化和实践,鼓励各个团队之间的协作,以便更好地管理云计算成本。
    在这里插入图片描述

Prometheus是什么

Prometheus是一个开源的系统监控和报警系统,一种在大规模分布式系统中进行度量、收集和聚合数据的标准方法。Prometheus使用一种称为PromQL的自定义查询语言来查询和分析收集的数据,并提供了图形化的Web界面和API。

Grafana是什么

Grafana是一个流行的开源数据可视化和监控平台。它可以连接多个数据源,包括Prometheus、InfluxDB、Elasticsearch、MySQL等,并使用图表、仪表盘、警报等工具进行数据可视化和分析。

二、不得不面对的问题:云上资源效能挑战!

通过腾讯的如下资料图所示,在2022年云计算市场发展状态报告中显示,32%的云支出被浪费了。

在这里插入图片描述
那么在后云原生时代的成本管理挑战又有哪些呢?可以详细来看看一下几个:

  • 去中心化:随着以Kubernetes为核心的云原生应用的蓬勃发展,传统的集中式财务预算和IT管理模式在向以业务为导向的分布式决策转型。
  • 不断上涨:NCF调查显示,随着业务的快速发展,企业的云费用以24%的年增长率快速增加。(这个问题是不容忽视的,企业的云费用逐年上涨,也就务必引导出了降本增效的理念和趋势!)
  • 动态变化:云原生的动态环境和弹性能力导致云费用随业务负载不断变化。
  • 浪费严重:业务上云以后缺乏资源优化意识,依然以传统资源配置思维管理资源,浪费严重。这一点也是至关重要的,所以我们真的很需要降本增效。

三、云原生场景下的成本优化挑战?

首先我们介绍一些常见的成本优化思路与常用手段:

在这里插入图片描述

同时也需要了解成本构成是什么:

在这里插入图片描述

那么总的来说,云成本管理的核心是什么呢?

就是在保障业务的前提下,最小化的资源需求。

四、K8s原生能力的不足

现在云原生时代下,很多业务需求是直接使用K8s直接上手管控的,但是K8s也存在一定的不足,如下图所示:
在这里插入图片描述

五、Crane智能调度助力成本优化

首先我们来看看Crane的架构图:

  • Craned:
    Craned 是 Crane 的最核心组件,它管理了 CRDs 的生命周期以及API。Craned 通过 Deployment 方式部署且由两个容器组成:
    Craned: 运行了 Operators 用来管理 CRDs,向 Dashboard 提供了 WebApi,Predictors 提供了 TimeSeries API。
    Dashboard: 基于 TDesign’s Starter 脚手架研发的前端项目,提供了易于上手的产品功能。

  • Fadvisor
    Fadvisor 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus。Fadvisor 通过 Cloud Provider 支持了多云计费的 API。

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

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

在这里插入图片描述

那么如何进行降本之旅呢?方法有下面几个:

•从监控系统拉取用量数据
•从Kubernetes平台拉取作业配置信息
•从云厂商计费API拉取资源单价
•通过多种算法分析成本组成并给出优化建议

在这里插入图片描述

使用场景一:成本可视化

通过Crane,我们可以进行成本展示与预测,也可以进行基于预测的趋势分析。

在这里插入图片描述

还能进行成本和浪费识别:即与计费API整合的费用展示。

在这里插入图片描述
同时也是国内首个云原生碳排放计算机
在这里插入图片描述
在这里插入图片描述
除此之外,还能进行灵活的汇聚维度,例如:按部门、项目、应用类型等等。
在这里插入图片描述

场景二:规格推荐

首先Crane是可声明的,为指定命名空间,工作负载类型给出推荐值。

同时支持基于可配置的算法,例如

  • 需要动态调整场景:指数桶+半衰期
  • 静态推荐场景:均衡桶+无半衰期
  • 余量 Margin或目标利用率

首先进行控制台点击完成滚动升级。

在这里插入图片描述
然后进行成本左移与自动化控制。
在这里插入图片描述
最后就可以看到规格推荐成果了!
在这里插入图片描述

场景三:智能预测与自动扩容

Crane可以进行提前扩容,根据时间序列算法(如FFT快速傅里叶变化)、取预测窗口最大值:提前扩容、还能基于Custom Metric、metric兜底保护实现该功能。

同时Crane支持Cron配置,也就是应对大促节假日等有规律的流量洪峰。

在这里插入图片描述

在这里插入图片描述
最后就可以预测到弹性效果了,如下:

在这里插入图片描述

六、落地成效

在这里插入图片描述

•在腾讯内部自研业务大规模落地
•部署至数百个Kubernetes集群
•管控数百万CPU核
•全面上线2个月内,大盘总核数缩减25%

在这里插入图片描述
•在网易新闻落地
•管控数WCPU核
•全面上线2个月内,大盘总核数缩减11%
•下线30台56C物理机,每个月节省10W

七、实战部署及使用

  • 安装kubectl
curl.exe -LO "https://dl.k8s.io/release/v1.27.1/bin/windows/amd64/kubectl.exe"
  • 安装Helm
choco install kubernetes-helm 
  • 安装kind(一般情况下顺便安装了Docker)
choco install kind 
  • 安装Crane及其相关普罗米修斯 Grafana依赖
curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -
  • 查看Pod情况(Pod 启动需要等待时间)
$ export KUBECONFIG=${HOME}/.kube/config_crane
$ kubectl get pod -n crane-system

NAME                                             READY   STATUS    RESTARTS       AGE
craned-8cks5c939f-kkfhv                          2/2     Running   0              3m36s
fadvisor-5b92cdfvq98b6-xqhfs                     1/1     Running   0              3m47s
grafana-33pov56f6y54-4jks6                       1/1     Running   0              3m29s
metric-adapter-967c6d57f-so9vv                   1/1     Running   0              4m11s
prometheus-kube-state-metrics-7k9d6s8fdvc-qql9c  1/1     Running   0              3m42s
prometheus-server-pvl64f4b7-47dvu                2/2     Running   0              3m38s

  • 访问Crane Dashboard
kubectl -n crane-system port-forward service/craned 9090:9090
  • 注意每个操作在新端口操作时都必须如下命令(进行环境变量)
export KUBECONFIG=${HOME}/.kube/config_crane

八、使用方向建议

总的来说Crane是一款多用途工具,可用于DevOps自动化流程,帮助开发团队高效构建、测试和部署应用程序。此外,Crane还可用于构建和管理云原生应用程序,这些应用程序通常是分布式、可扩展和高可用的。最后,Crane还可用于大规模集群的部署和管理,例如使用Kubernetes等容器编排引擎管理的集群,对于容器化微服务,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/542154.html

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

相关文章

Linux命令之vim/vi

目录 vim/vi简介 vi/vim 的使用 操作实例 总结 vim/vi简介 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程…

i.MX6ULL - 远程视频监控方案实现(nginx-rtmp流媒体服务器、ffmpeg推流)

i.MX6ULL - 远程视频监控配置(nginx-rtmp流媒体服务器、ffmpeg推流) 目录 i.MX6ULL - 远程视频监控配置(nginx-rtmp流媒体服务器、ffmpeg推流)1、前言2、buildroot文件系统构建2.1 勾选alsa-utils(选做:如果…

桥接模式与NAT模式的区别以及设置静态IP

概述 日常我们都会使用到虚拟机,本文章以VMware虚拟机为例,主要介绍下虚拟机设置桥接模式与NAT模式的区别,并通过示意图进行讲解。并且会介绍如何去设置静态IP。 模式介绍 NAT模式NAT模式下 ,创建出来的虚拟机只能访问当前主机…

基于ensp的跨地区的校园网组网方案

本博客是基于模拟器ensp的校园网组网方案,有总校区和分校区,主要用了vlan划分、dhcp、nat、ospf、acl、bgp等技术。首先说一下本博客的局限性: 总校区和分校区之间只是使用的传统的bgp建立连接,这样可以在运营商上看到内网的明细&…

HTTP1.1(七)内容协商和资源表述

一 内容协商和资源表述 ① 铺垫 1) 由于一种资源对应许多种状态,所以客户端接收资源表述的转移时需要进行协商比如:[1]、一个来自中国的用户他的浏览器访问一个页面时得到中文页面[2]、一个其它国家的用户访问同一个页面时得到的是他本国的页面补充:…

在线协作助力团队合作:解析多种高效工具实现团队协同

在线协作是通过网络为平台,将团队成员连接起来,使其共同创作、共享讯息,进行团队合作。这种协作方式突破了线下的空间限制性,使团队合作更加及时便捷。因此,越来越多的团队选择了在线协作。 在线协作为团队带来了什么帮…

IDEA 2019.1 与 apache-maven-3.6.3 版本不兼容解决办法

-------IDEA 2019.1 与 apache-maven-3.6.3 版本不兼容 解决办法:降低 Maven版本为 3.3 到底得踩过多少坑,才能让你不再流泪,

接初识HTML中的基础知识,简单明了!!!

续——HTML的基础知识&#xff01;&#xff01;&#xff01; 一、表格 关于HTML中用table表示一个表格&#xff0c;用tr来表示一行&#xff0c;用td来表示一列。 Demo&#xff1a;表示一个二行三列的表格 <!--根--> <html><!--头--> <head><…

瑞吉外卖 - 文件上传与下载功能(15)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

pandas dataframe 中 explode()函数用法及效果

最近在使用pyspark处理数据&#xff0c;需要连接各种各样的表和字段&#xff0c;因此记录相关函数的使用情况。今天介绍explode(). 1. explode()函数简介 explode 函数是 pandas.DataFrame 类的一个方法&#xff0c;能够通过pyspark间接调用。 它可以将一个包含list或者其它可…

【零基础学JS - 7 】javaScript 中的8大数据类型

&#x1f468;‍&#x1f4bb; 作者简介&#xff1a;程序员半夏 , 一名全栈程序员&#xff0c;擅长使用各种编程语言和框架&#xff0c;如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个…

Python之selenium关于Chrome驱动位置,闪退的问题和安装路径

目录 零、查看Python的安装路径一、Chromedriver放置的位置二、浏览器闪退 零、查看Python的安装路径 一、Chromedriver放置的位置 背景&#xff1a;之前由于Chrome浏览器自动升级后&#xff0c;导致驱动与浏览器不匹配&#xff0c;自己也不知道问题出在哪儿&#xff0c;花费了…

hadoop和spark配置问题记录

hadoop和spark配置问题记录 Spark的WebUI访问不了 直接启动的start-all.sh是环境变量中配置的hadoop的脚本&#xff0c;不是spark的&#xff0c;因此启动spark的start-all.sh脚本即可。 Spark看不到Worker信息 启动Spark在UI界面上看不到worker节点的信息_潇洒哥WH3的博客-C…

【Java|基础篇】包和访问权限修饰符

文章目录 1. 前言2. 包的概念3. 包的创建以及优点4. 访问权限修饰符5. 总结 1. 前言 包和访问权限修饰符是Java中两个常用的概念&#xff0c;它们都与访问控制有关. 2. 包的概念 在面向对象体系中&#xff0c;提出了一个软件包的概念&#xff0c;即&#xff1a;为了更好的管…

代码随想录算法训练营第四十四天 | 完全背包、完全背包的遍历顺序

完全背包 理论基础 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;带你学透完全背包问题&#xff01; 和 01背包有什么差别&#xff1f;遍历顺序上有什么讲究&#xff1f;_哔哩哔哩_bilibili 完全背包和01背包问题唯一不同的地方就是&#xff0c;每…

品牌战略规划:如何让你的品牌脱颖而出

虽然很多国内企业家都非常重视战略&#xff0c;什么商业战略、渠道战略之类的一通研究&#xff0c;但惟独却缺乏对品牌战略的一个正确理解。 很多时候一把手不参与&#xff0c;也不关心品牌建设&#xff0c;经常上来就让团队实操动作&#xff0c;而自己只看最终结果&#xff0…

LeetCode20.有效的括号

题目 思路 每一个右括号应该与与在它左边最近的左括号相匹配&#xff0c;所以这道题可以通过栈实现 代码 &#x1f4ac;由于博主还没有学习到C&#xff0c;能力有限&#xff0c;所以只能自己实现一个栈&#xff0c;学过C的朋友可以直接使用CSTL中的栈来实现 #define _CRT_S…

深入理解事务的隔离性 —— 多版本并发控制( MVCC )

文章目录 一、数据库并发的三种场景二、多版本并发控制&#xff08;MVCC&#xff09;的初步认识三、事务的隐藏列字段四、UNDO 日志五、Read View 读视图六、深入理解 MVCC —— 隔离级别的实现原理七、RC 与 RR 的本质区别 一、数据库并发的三种场景 数据库并发指的是多个用户…

如何将Shapefile文件导入Sketch Up进行建模

涉及软件&#xff1a;ArcGIS10.4.1&#xff0c;Sketch Up Pro2022 1.shapefile的属性编辑 基于我们已有的shp文件&#xff0c;打开属性表&#xff0c;添加一个高度字段用于存放平面图形高度信息&#xff0c;为后期三维拉伸做好准备&#xff08;如果已有相关信息&#xff0c;请…

区间合并【pair、sort】

将有交集&#xff08;包括端点&#xff09;的区间进行合并 802. 区间和 - AcWing题库 例如&#xff0c;现在有这样一个数据 1 2 2 4 5 6 7 8 7 9最终合并的结果就是 1 —— 45 —— 67 —— 9 得到三个区间 第一步&#xff1a;按照区间左端点排序 第二步&#xff1a;扫描…