一、Crane 是什么
Crane 是一个基于 FinOps 的云资源分析与成本优化平台。它的愿景是在保证客户应用运行质量的前提下实现极致的降本。Crane 是 FinOps 基金会认证的云优化方案。
Crane基于Docker和Kubernetes技术,支持常见的容器化应用场景,如部署多个容器、水平扩展、自动伸缩、负载均衡等。Crane提供了友好的Web界面和命令行工具,方便用户管理和操作容器集群。同时,Crane还支持自定义插件和扩展,用户可以根据需求进行二次开发和定制化。
二、Crane有哪些特性呢?
1、成本可视化和优化评估
- 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus。
- 多维度的成本洞察,优化评估。通过
Cloud Provider
支持多云计费。
2、推荐框架
提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,闲置资源推荐。了解更多
3、基于预测的水平弹性器
EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。了解更多
4、负载感知的调度器
动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。了解更多
5、基于 QOS 的混部
QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。了解更多。
三、部署Crane
了解到了Crane的各种功能以及特性,那么我们应该如何部署Crane呢?其实很简单,集训营也有动手实验直播,可以跟着直播体验一下。
直播回放
https://live.csdn.net/room/csdnnews/83xhNo4C
先在本地或者服务器安装以下环境:
- 使用 Kind 安装一个本地运行的 Kubernetes 集群
- 使用 Helm 安装 Prometheus 和 Grafana
- 使用 Helm 安装 Crane
- 通过 kubectl 的 port-forward 访问 Crane Dashboard
更多关于安装的介绍请参考 安装文档
部署环境要求
- kubectl
- Kubernetes 1.18+
- Helm 3.1.0
- Kind 0.16+
安装
以下命令将安装 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
访问 Crane Dashboard
kubectl -n crane-system port-forward service/craned 9090:9090
点击 这里 访问 Crane Dashboard
四、总结
在整个实验过程中,Crane的官方人员对我们进行了耐心的指导,大家提出的各种环境安装问题,系统搭建,还有Mac系统和Windows平台差异等等问题,官方也都耐心的解决了。通过本次集训营,让我对Crane有了一个更加深入的了解,互联网业务由于人的活动规律从而普遍具有周期性繁忙的特征,最常见的是以天为单位的周期性变化,比如白天繁忙、夜间空闲。按传统固定资源模式,低峰期时资源使用率较低但仍然持有资源,便会造成浪费。服务的自动伸缩(可能还需要配合集群资源的自动伸缩)就能实现在高峰期扩容并在低峰期回收资源的效果,在公有云等按量计费的场景下实现成本优化。传统固定资源模式下,业务往往会冗余一定的资源来应对流量增长,使用自动伸缩后可以减少这部分冗余资源,也能更从容地应对热点流量等情况。
利用Crane提供的成本模型能够很好地对集群资源进行成本分析,在分析的基础上也能够给出合理化的推荐规则,并且利用数据可视化大屏,能够清晰看到成本改变的下降的趋势,非常直观。后续希望不断完善开源Crane社区生态,使得更多开发者能够接触到Crane项目并且参与进来,不断丰富社区生态,使得Crane更加强大!