前言
这段时间有幸参与了一下腾讯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的主要功能?
- 支持使用多种容器编排引擎来管理容器应用程序的生命周期,包括Docker、Kubernetes。
- 提供简便上手的方式来构建、发布容器镜像,支持使用模板和插件来自定义构建流程。
- 提供集成的监控和日志记录功能,可以帮助开发者及时发现和解决应用程序的问题。
- 可以将多个容器组合成一个完整的应用程序,提供灵活的网络和存储选项,以便更好管理和扩展应用程序。
- 使用简洁明了的配置文件格式来管理容器应用程序的配置,支持使用环境变量和参数来动态配置应用程序。
- 提供成本可视化和优化评估,多维度的成本洞察,优化评估。通过 Cloud Provider 支持多云计费。
- 基于 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