您现在的位置是:首页 >其他 >【腾讯云FinOps Crane 集训营】让我看看还有谁没用过crane这个降本利器网站首页其他

【腾讯云FinOps Crane 集训营】让我看看还有谁没用过crane这个降本利器

负债程序猿 2024-06-17 11:28:19
简介【腾讯云FinOps Crane 集训营】让我看看还有谁没用过crane这个降本利器

近几年云原生概念的发展如雨后春笋,势如破竹,而devops和k8s(Kubernetes)两兄弟也搭上云原生的车先后火了起来

devops:如字面意思Development&Operations,它的理念是开发即运维,目的是消除开发者们与运维之间的隔阂,从而提高效率;
k8s:即Kubernetes,docker容器编排工具;

虽然有了devops和k8s我们已经能很好的完成应用集群管理,但管理者们不满足于此,他们着手开始向成本管理方向研究,于是有了今天的主角:crane

为什么会取名叫crane?

crane翻译过来是起重机

回想一下现实生活中修房子,没有起重机我们也能修高楼大厦,但会耗费更多人力物力

同样的道理,没有crane我们也能完成应用编排,但是会浪费很多时间,时间即金钱,金钱即成本,所以,称之为降本利器毫不为过

关于Crane

在这里插入图片描述

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

哦对了,重点是crane目前已经开源,GitHub传送门


先来看看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
    Crane Agent 通过 DaemonSet 部署在集群的节点上。

再来看看crane核心功能

在这里插入图片描述

成本可视化和优化评估

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

推荐框架

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

基于预测的水平弹性器

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

负载感知的调度器

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

拓扑感知的调度器

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

基于 QOS 的混部

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

降本利器三驾马车

  • 成本展示: Kubernetes 资源( Deployments, StatefulSets )的多维度聚合与展示。
  • 成本分析: 周期性的分析集群资源的状态并提供优化建议。
  • 成本优化: 通过丰富的优化工具更新配置达成降本的目标。

简而言之,crane提供一些自动化的策略来对k8s集群进行监控和管理,从而实现成本管理。


多说无益,直接上手体验吧

步骤概览:

  1. 使用 Kind 安装一个本地运行的 Kubernetes 集群
  2. 使用 Helm 安装 Prometheus 和 Grafana
  3. 使用 Helm 安装 Crane
  4. 通过 kubectl 的 port-forward 访问 Crane Dashboard

官方文档写的很清晰,这里我就只说重点步骤,详情请移步crane安装文档

部署环境要求

  • kubectl
  • Kubernetes 1.18+
  • Helm 3.1.0
  • Kind 0.16+

Crane 需要用到Prometheus作数据采集,并且在grafana作数据展示,所以我们需要安装依赖

注意:以下命令是直接安装Crane 以及其依赖 (Prometheus/Grafana)

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

查看所有Pod 都正常运行

$ export KUBECONFIG=${HOME}/.kube/config_crane
$ kubectl get deploy -n crane-system
NAME                                             READY   STATUS    RESTARTS       AGE
crane-agent-5r9l2                                1/1     Running   0              4m40s
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-node-exporter-4wk8b                   1/1     Running   0              4m40s
prometheus-server-fb944f4b7-4qqlv                2/2     Running   0              4m46s

注意:pod启动耗时跟自己机器配置和网络有关,如不能访问建议先不要排查问题,过几分钟再试试如果不行再继续排查

访问 Crane Dashboard

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

在这里插入图片描述

嘿嘿,如不想安装,可直接访问官方demo,传送门

应用资源优化模型

crane基于 Kubernetes 应用的特点总结出云原生应用的资源优化模型
在这里插入图片描述
图中五条线从上到下分别是:

  1. 节点容量:集群中所有节点的资源总量,对应集群的 Capacity
  2. 已分配:应用申请的资源总量,对应 Pod Request
  3. 周峰值:应用在过去一段时间内资源用量的峰值。周峰值可以预测未来一段时间内的资源使用,通过周峰值配置资源规格的安全性较高,普适性更强
  4. 日均峰值:应用在近一天内资源用量的峰值
  5. 均值:应用的平均资源用量,对应 Usage

其中资源的闲置分两类:

  • Resource Slack:Capacity 和 Request 之间的差值
  • Usage Slack:Request 和 Usage 之间的差值

Total Slack = Resource Slack + Usage Slack

资源优化的目标是减少 Resource Slack 和 Usage Slack

模型中针对如何一步步减少浪费提供了四个步骤,从上到下分别是:

  1. 提升装箱率:提升装箱率能够让 Capacity 和 Request更加接近。手段有很多,例如:动态调度器、腾讯云的云原生节点的节点放大功能等
  2. 业务规格调整减少资源锁定:根据周峰值资源用量调整业务规格使的 Request 可以减少到周峰值线。资源推荐和副本推荐可以帮助应用实现此目标。
  3. 业务规格调整+扩缩容兜底流量突发:在规格优化的基础上再通过 HPA 兜底突发流量使的 Request 可以减少到日均峰值线。此时 HPA 的目标利用率偏低,仅为应对突发流量,绝大多数时间内不发生自动弹性。弹性推荐可以扫描出适合做弹性的应用并提供HPA配置。
  4. 业务规格调整+扩缩容应对日常流量变化:在规格优化的基础上再通过 HPA 应用日常流量使的 Request 可以减少到均值。此时 HPA 的目标利用率等于应用的平均利用率。EHPA实现了基于预测的水平弹性,帮助更多应用实现智能弹性。

总结

如果没有腾讯云 Finops Crane 集训营,我不会这么快接触到crane,之前试想过有没有这样一个系统,它能实时看到k8s集群中各个应用的成本概览,这样我们就能更好、更合理的进行资源调度,进而控制运维成本,自从认识crane后我突然明白,这就是我心里的那个它~
crane也让我明白了技术发展的核心不止于“能跑就行”,满足需求只是大前提,降本增效才是优化的核心方向。


最后

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

活动介绍送门

开源项目crane

ok我话说完

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。