一、活动介绍

Crane 是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目,遵循 FinOps 标准,已经获得FinOps基金会授予的全球首个认证降本增效开源方案。它为使用 Kubernetes 集群的企业提供了一种简单、可靠且强大的自动化部署工具。Crane 的设计初衷是为了帮助企业更好地管理和扩展其 Kubernetes 集群,从而实现更高效的云原生应用管理。它易于使用、高度可定制和可扩展。它提供了一组简单易用的命令行工具,使得开发者和管理员都能轻松地将应用程序部署到 Kubernetes 集群中。Crane 还支持多种云平台,并且可以根据具体的业务需求进行定制。Crane 并已经被腾讯、网易、思必驰、酷家乐、明源云、数数科技等公司部署在生产系统,其主要贡献者来自腾讯、小红书、谷歌、eBay、微软、特斯拉等知名公司。

名称解释:

FinOps:全称(Financial Operations)是一种管理云计算成本的方法论和实践。它结合了财务管理和云计算资源管理的最佳实践,旨在帮助组织更好地理解、优化和控制云计算成本。

image-20230522202415038

Kubernetes:Kubernetes(K8s)是一个开源系统,用于自动部署,扩展和管理容器化应用程序。Kubernetes抽象了复杂的容器管理,并为我们提供了声明式配置,以在不同的计算环境中编排容器。

Kubernetes集群至少由一个主(控制)平面和一个或多个工作机器(称为节点)组成。控制平面和节点实例都可以是物理设备、虚拟机或云中的实例。

二、环境搭建

要快速搭建一个 Kubernetes+Crane 环境,可以按照以下步骤进行操作:

  1. 安装 kubectl

请参考官方文档依据你的本地环境系统参考对应的文档安装 kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/

  1. 安装 Helm

请参考官方文档依据你的本地环境系统参考对应的文档安装 Helm:https://helm.sh/zh/docs/intro/install/

  1. 安装 kind

请参考官方文档依据你的本地环境系统参考对应的文档安装 kind:https://kind.sigs.k8s.io/docs/user/quick-start/#installation

  1. 安装 Docker

请参考官方文档依据你的本地环境系统参考对应的文档安装 docker:https://docs.docker.com/get-docker/

完成以上步骤后,再开始本地安装Crane

三、安装本地的 Kind 集群和 Crane 组件

1、根据以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana).

curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -

2、确保所有 Pod 都正常运行:

$ export KUBECONFIG=${HOME}/.kube/config_crane
$ kubectl get pod -n crane-system

NAME                                             READY   STATUS    RESTARTS       AGE
craned-6dcc5c569f-vnfsf                          2/2     Running   0              4m41s
fadvisor-5b685f4cd6-xpxzq                        1/1     Running   0              4m37s
grafana-64656f6d54-6l24j                         1/1     Running   0              4m46s
metric-adapter-967c6d57f-swhfv                   1/1     Running   0              4m41s
prometheus-kube-state-metrics-7f9d78cffc-p8l7c   1/1     Running   0              4m46s
prometheus-server-fb944f4b7-4qqlv                2/2     Running   0              4m46s

3、访问 Crane Dashboard

kubectl -n crane-system port-forward service/craned 9090:9090

# 后续的终端操作请在新窗口操作,每一个新窗口操作前请把配置环境变量加上(不然会出现8080端口被拒绝的提示)
export KUBECONFIG=${HOME}/.kube/config_crane

4、成功的标志是你能通过http://127.0.0.1:9090/访问到类似于如下页面:

image-20230522201639006

四、界面截图

image-20230522201841843

  • 当月总成本:过去一个月集群总成本。从安装Crane时间开始,按小时累加集群成本
  • 预估每月成本:以最近一小时成本估算未来一个月的成本。每小时成本 * 24 * 30
  • 预估CPU总成本:以最近一小时CPU成本估算未来一个月的CPU成本。每小时CPU成本 * 24 * 30
  • 预估Memory总成本:以最近一小时Memory成本估算未来一个月的Memory成本。每小时Memory成本 * 24 * 30

image-20230522201917963

image-20230522201942937

  • Workload Spec CPU Slack: Workload 的 CPU 规格 - 推荐的 CPU 规格
  • Workload Total CPU Slack: (Workload 的 CPU 规格 - 推荐的 CPU 规格)* Pod 数量

更多的成本分析图表可以通过登陆 Grafana 的页面或者分析源码研究。

image-20230522202038068

image-20230522202054683

可通过查看监控查看详细的监控数据。

image-20230522203351120

五、主要功能

image-20230522202159004

1、成本可视化和优化评估

提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus
多维度的成本洞察,优化评估。通过 Cloud Provider 支持多云计费。
推荐框架

提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐。

2、基于预测的水平弹性器

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

3、负载感知的调度器

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

4、拓扑感知的调度器

Crane SchedulerCrane Agent配合工作,支持更为精细化的资源拓扑感知调度和多种绑核策略,可解决复杂场景下“吵闹的邻居问题",使得资源得到更合理高效的利用。

5、基于 QOS 的混部

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

六、整体架构

image-20230522202804151

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

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

Prometheus

Prometheus 受启发于 Google 的 Brogmon 监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。

Grafana

Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测工具,它可以大大帮助我们简化监控的复杂度,我们只需要提供需要监控的数据,它就可以帮助生成各种可视化仪表,同时它还有报警功能,可以在系统出现问题时发出通知。

七、Crane的优势

FinOps 旨在通过更好地管理和优化云计算成本,实现组织的财务目标,并确保云资源的有效和经济使用。它强调透明度、责任分配、预算规划、自动化和协作等关键实践,帮助组织在云计算时代实现,主要有如下优势:

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

2、优化资源利用率
Crane可以帮助企业优化云计算资源的利用率。它可以帮助企业发现不必要的资源浪费,并提供优化建议,使企业可以更好地利用云计算资源,提高资源利用效率。

3、提高决策效率
Crane可以帮助企业更好地了解云计算资源的成本和使用情况。这样,企业就可以更好地做出决策,以满足业务需求,并在成本和效益之间取得平衡。

4、智能预测
Crane可以帮助企业完成流量智能预测,进行自动扩缩容,应对大促节假日等有规律的流量洪峰。

八、总结

通过这次活动,我深入了解了Crane 的原则和实践,并学到了如何应用它们来管理云计算成本。我意识到透明度、责任分配、预算规划、自动化和协作是实现成功的Crane 策略的关键要素。这次活动让我对如何更好地管理云计算成本有了更深入的理解,并为将来实践Crane 提供了宝贵的经验。认识到了如下几点:

  1. 可见性与透明度:通过使用云计算成本管理工具和仪表板,我们能够实时地查看和分析我们的云资源使用情况和成本。这使我们能够更好地了解资源消耗的模式,并识别出成本的主要驱动因素。

  2. 责任分配:在活动中,我们将云计算成本与不同的团队和部门相关联。这种责任分配的方法使每个团队能够更好地理解他们使用的资源的成本,并激励他们采取行动来优化资源的使用。

  3. 预算规划与优化:我们设定了预算,并与实际成本进行对比。这使我们能够及早发现超支和浪费,并采取适当的措施进行优化。通过设定目标和监控实际成本,我们能够更好地管理资源使用并控制成本。

  4. 自动化与优化:在模拟活动中,我们探索了自动化工具和流程,以提高资源管理的效率和准确性。我们使用自动化脚本来自动调整资源规模,实现按需分配资源,并使用服务器less架构来优化成本。

  5. 协作与教育:活动中鼓励团队之间的合作和知识共享。我们举办了培训和讨论会,让不同团队的成员了解Crane 的概念和最佳实践。这样的协作和教育活动有助于提高团队的意识,并促进更好的资源管理和成本控制。

参考文献

Crane github:https://github.com/gocrane/crane
Crane官网: https://gocrane.io/

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

如果你在web前端开发、面试、前端学习路线有困难可以加我V:imqdcnn。免费答疑,行业深潜多年的技术牛人帮你解决bug。

祝你能成为一名优秀的WEB前端开发工程师!

Logo

开源、云原生的融合云平台

更多推荐