【腾讯云Finops Crane集训营】降本增效神器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

猜你喜欢

转载自blog.csdn.net/weixin_51484460/article/details/130755339