近几年云原生概念的发展如雨后春笋,势如破竹,而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 支持多云计费。
降本利器三驾马车
- 成本展示: Kubernetes 资源( Deployments, StatefulSets )的多维度聚合与展示。
- 成本分析: 周期性的分析集群资源的状态并提供优化建议。
- 成本优化: 通过丰富的优化工具更新配置达成降本的目标。
简而言之,crane提供一些自动化的策略来对k8s集群进行监控和管理,从而实现成本管理。
多说无益,直接上手体验吧
步骤概览:
- 使用 Kind 安装一个本地运行的 Kubernetes 集群
- 使用 Helm 安装 Prometheus 和 Grafana
- 使用 Helm 安装 Crane
- 通过 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,传送门
总结
如果没有腾讯云 Finops Crane 集训营,我不会这么快接触到crane,之前试想过有没有这样一个系统,它能实时看到k8s集群中各个应用的成本概览,这样我们就能更好、更合理的进行资源调度,进而控制运维成本,自从认识crane后我突然明白,这就是我心里的那个它~
crane也让我明白了技术发展的核心不止于“能跑就行”,满足需求只是大前提,降本增效才是优化的核心方向。
最后
关于腾讯云 Finops Crane 集训营:
Finops Crane集训营主要面向广大开发者,旨在提升开发者在容器部署、K8s层面的动手实践能力,同时吸纳Crane开源项目贡献者,鼓励开发者提交issue、bug反馈等,并搭载线上直播、动手实验组队、有奖征文等系列技术活动。既能让开发者通过活动对 Finops Crane 开源项目有深入了解,同时也能帮助广大开发者在云原生技能上有实质性收获。
为奖励开发者,我们特别设立了积分获取任务和对应的积分兑换礼品。
活动介绍送门
开源项目crane
ok我话说完