目录
目录
前言
很荣幸参加了由腾讯云联合CSDN推出的“腾讯云 Finops Crane 集训营”,在集训过程,从0到1体验了Crane平台的搭建,也积极参与github的发言,提交两个issue帮助提升体验感。好了,话不多说,下面跟着我一起走入Finops Crane。
FinOps(Financial Operations)是一种管理云计算成本的方法,它强调将云计算资源的成本与使用情况及业务需求相匹配,从而提高企业的效率和效益。在当前云计算环境下,FinOps已经成为了越来越多企业的管理方法。本文将会介绍Crane这个云计算成本管理工具,并详细介绍如何在实际应用中使用Crane进行云计算资源成本管理。
一、Crane的发展背景
我们先讲下Crane的发展背景:
1998 年亚马逊发布论文:《分布式计算宣言》,分布式、微服务架构初现雏形;
20 年代传入中国,以阿里、腾讯为代表首先进行服务 ”单体拆分至微服务“ 的架构演化;
在云技术成熟之后,架构演进的阶段来到了云原生时代。
2017 年,Crane 项目开源,旨在为云原生用户提供云成本优化一站式解决方案;
2022 年,中国电子技术节能协会2022年“云计算中心科技奖”正式颁布,腾讯云Crane荣获“云计算中心科技奖卓越奖”,成为国内首个获得该国家级奖项的云原生解决方案;
…
为何架构演进的历程会青睐云原生技术?具体原因可参看《云原生的崛起 一 :市场竞争中真正敏捷力量 !》 这里不做过多介绍。
Crane 云上资源极致利用,降本增效之四大必杀技
Crane 依托于云原生技术,结合监控可视化、水平弹性、负载及拓扑感知 等多项硬核科技,将优化措施应用到云成本的多个关键环节,从而辅助用户决策、简化运维效率、提升系统稳态、全面降本增效。
Crane 是国内第一个基于云原生技术的成本优化开源项目,全球范围内首个开源的FinOps认证解决方案。遵循 FinOps 标准,旨在为云原生用户提供云成本优化一站式解决方案,帮助企业降本增效。
目前,Crane 已经在腾讯、网易、小红书、思必驰、酷家乐、明源云、等多家互联网科技公司实现部署应用。
开源地址:https://github.com/gocrane/crane
二、Crane是什么?
Crane是一个开源的云计算成本管理工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane可以帮助企业在云计算环境中实现资源成本的透明化管理,从而更好地控制成本,提高效益。Crane可以通过API将云计算资源的使用情况与成本进行关联,并提供实时的成本分析和预测功能。
Crane的出现可以解决K8S原生能力的不足:
- 资源配置浪费
基于经验的资源配置不准导致大量浪费 - 弹性不及时
基于阈值的弹性的滞后性导致业务来不及弹 - 业务稳定性
CPU是可压缩资源,CPU承压时,所有Pod等比受损,独占式绑核能力造成较大资源浪费
三、Crane的特点
成本透明化
Crane可以帮助企业在云计算环境中实现资源成本的透明化管理。它可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
基于预测的水平弹性器
EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。
推荐框架
提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐。
负载感知的调度器
动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。
拓扑感知的调度器
Crane Scheduler与Crane Agent配合工作,支持更为精细化的资源拓扑感知调度和多种绑核策略,可解决复杂场景下“吵闹的邻居问题",使得资源得到更合理高效的利用。
基于 QOS 的混部
QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。
易于使用
Crane非常易于使用。它可以与各种云计算平台集成,并提供简单易懂的用户界面,使用户可以轻松地使用它来管理云计算资源的成本。
开源
Crane是一个开源的工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane的开源性质使得企业可以自由地使用它,并根据自己的需求进行二次开发。
四、Crane的优势
1、实时监控成本
Crane可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
2、优化资源利用率
Crane可以帮助企业优化云计算资源的利用率。它可以帮助企业发现不必要的资源浪费,并提供优化建议,使企业可以更好地利用云计算资源,提高资源利用效率。
3、提高决策效率
Crane可以帮助企业更好地了解云计算资源的成本和使用情况。这样,企业就可以更好地做出决策,以满足业务需求,并在成本和效益之间取得平衡。
4、智能预测
Crane可以帮助企业完成流量智能预测,进行自动扩缩容,应对大促节假日等有规律的流量洪峰。
五、Crane使用
1.环境准备
安装 kubectl
kubectl官方文档:https://kubernetes.io/zh-cn/docs/tasks/tools/
下载kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
下载kubectl的校验和文件:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
根据校验和文件验证kubectl:
echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
安装 Helm
Helm官方文档:https://helm.sh/zh/docs/intro/install/
下载
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
赋权
chmod 777 get_helm.sh
安装
./get_helm.sh
安装 kind
kind官方文档:https://kind.sigs.k8s.io/docs/user/quick-start/#installation
下载
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64
赋权
chmod +x ./kind
安装 Docker
docker官方文档:https://docs.docker.com/get-docker/
参考往期文章:docker安装部署实战详细手册
2、安装Crane
以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana)
curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -
如果上面安装命令报网络错误,可以下载本地的安装包执行安装,在命令行中执行以下安装命令:
bash installation/local-env-setup.sh
增加环境变量
export KUBECONFIG=${HOME}/.kube/config_crane
验证安装完成,服务都为running即可
3、访问dashboard
增加端口映射后,访问127.0.0.1:9090即可
kubectl -n crane-system port-forward service/craned 9090:9090
4、页面展示
5、功能应用
智能弹性 EffectiveHPA
Kubernetes HPA 支持了丰富的弹性扩展能力,Kubernetes 平台开发者部署服务实现自定义 Metric 的服务,Kubernetes 用户配置多项内置的资源指标或者自定义 Metric 指标实现自定义水平弹性。
EffectiveHorizontalPodAutoscaler(简称 EHPA)是 Crane 提供的弹性伸缩产品,它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。
- 提前扩容,保证服务质量:通过算法预测未来的流量洪峰提前扩容,避免扩容不及时导致的雪崩和服务稳定性故障。
- 减少无效缩容:通过预测未来可减少不必要的缩容,稳定工作负载的资源使用率,消除突刺误判。
- 支持 Cron 配置:支持 Cron-based 弹性配置,应对大促等异常流量洪峰。
- 兼容社区:使用社区 HPA 作为弹性控制的执行层,能力完全兼容社区。
测试验证
安装 Metrics Server:
kubectl apply -f installation/components.yaml
启动一个 Deployment 用 hpa-example 镜像运行一个容器, 然后将其暴露为一个 服务(Service)
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/php-apache.yaml
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/analytics/nginx-deployment.yaml
创建 EffectiveHPA
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/effective-hpa.yaml
增加负载:
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
观察负载情况:
kubectl get hpa ehpa-php-apache --watch
随着请求增多,CPU利用率会不断提升,可以看到 EffectiveHPA 会自动扩容实例。
推荐规则
推荐框架会自动分析集群的各种资源的运行情况并给出优化建议。Crane 的推荐模块会定期检测发现集群资源配置的问题,并给出优化建议。智能推荐提供了多种 Recommender 来实现面向不同资源的优化推荐。
推荐规则查看:
kubectl get RecommendationRule
workloads-rule 这个推荐规则的资源对象如下所示:
- 每隔 24 小时运行一次分析推荐,runInterval 格式为时间间隔,比如: 1h,1m,设置为空表示只运行一次。
- 待分析的资源通过配置 resourceSelectors 数组设置,每个 resourceSelector 通过 kind、apiVersion、name 选择 K8s 中的资源,当不指定 name 时表示在 namespaceSelector 基础上的所有资源。
- namespaceSelector 定义了待分析资源的命名空间,any: true 表示选择所有命名空间。
- recommenders 定义了待分析的资源需要通过哪些 Recommender 进行分析。目前支持两种 Recommender:
- 资源推荐(Resource): 通过 VPA 算法分析应用的真实用量推荐更合适的资源配置
- 副本数推荐(Replicas): 通过 HPA 算法分析应用的真实用量推荐更合适的副本数量
五.总结
从安装部署到实践测试,流程都非常清晰明了,初学者也是能够快速手上手实践,所以Finops Crane在使用过程是非常方便的,能够更快地完成任务;另外它的功能也非常成熟,安全,一些成本计算,推荐资源等等都非常实用,而且它的页面非常简洁明了,功能模块的布局也非常清晰,看着让人非常舒适,
参考文献
- Crane github:https://github.com/gocrane/crane
- Crane官网:http:// https://gocrane.io/
关于腾讯云 Finops Crane 集训营:
Finops Crane集训营主要面向广大开发者,旨在提升开发者在容器部署、K8s层面的动手实践能力,同时吸纳Crane开源项目贡献者,鼓励开发者提交issue、bug反馈等,并搭载线上直播、动手实验组队、有奖征文等系列技术活动。既能让开发者通过活动对 Finops Crane 开源项目有深入了解,同时也能帮助广大开发者在云原生技能上有实质性收获。
为奖励开发者,我们特别设立了积分获取任务和对应的积分兑换礼品。