写点什么

【腾讯云 Finops Crane 集训营】安装使用及 EHPA 弹性演示

作者:指剑
  • 2023-05-22
    重庆
  • 本文字数:3130 字

    阅读完需:约 10 分钟

【腾讯云 Finops Crane 集训营】安装使用及EHPA弹性演示

随着时间的推移,降本增效成为了企业界和组织中的一个新口号。在 2023 年,这个口号进一步获得了广泛的认可和重要性,成为了许多组织在业务运营中的关键目标。在 2023 年,许多组织开始将降本增效作为战略性目标,并将其融入到整个组织的文化和运营流程中。这需要组织内部的各个部门和团队共同努力,从高层管理层到基层员工,都需要意识到降本增效的重要性,并为之努力。降本增效的方法多种多样,其中一个关键领域是技术和数字化转型。组织通过采用新技术、数字化工具和自动化流程来改进业务流程和运营效率。例如,采用先进的数据分析和人工智能技术,组织可以更好地理解和优化成本结构,找到潜在的成本节约机会。同时,云计算和容器化技术如 Kubernetes 等的应用,也为降本增效提供了新的机会,通过资源优化和自动化管理来降低成本并提高效率。那么今天就为大家介绍 Crane

什么是 Crane?

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

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 的主要功能

成本可视化和优化评估

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

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

基于预测的水平弹性器

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

负载感知的调度器

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

拓扑感知的调度器

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

基于 QOS 的混部

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

快速体验:

Crane Dashboard 在线 Demo: http://dashboard.gocrane.io/

安装及使用

单机简易版(kind)

官方训练营的实验手册访问地址:https://www.aliyundrive.com/s/kn1bWt3ECah


官方为大家提供了一个实验手册,采用的是 Kind 部署的单节点,方便大家快速的跑通实验,仅需一条命令即可


运行本地的 Kind 集群和 Crane 组件以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana).


curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -
export KUBECONFIG=${HOME}/.kube/config_cranekubectl get deploy -n crane-system
kubectl -n crane-system port-forward service/craned --address 0.0.0.0 9090:9090
复制代码

自定义集群

建议使用 kubernetes v1.25 以前的版本,在安装手册上有明确的提示


修改脚本

wget https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh
# 修改crane_kubeconfig变量为,原本是 config_craneCRANE_KUBECONFIG="${HOME}/.kube/config"
# 注释掉68 69的kind命令
复制代码



然后再直接运行脚本即可,最终呈现效果如图


端口映射

kubectl -n crane-system port-forward service/craned --address 0.0.0.0 9090:9090
复制代码


EHPA 智能弹性

EffectiveHorizontalPodAutoscaler(简称 EHPA)是 Crane 提供的弹性伸缩产品,它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。


  • 提前扩容,保证服务质量:通过算法预测未来的流量洪峰提前扩容,避免扩容不及时导致的雪崩和服务稳定性故障。

  • 减少无效缩容:通过预测未来可减少不必要的缩容,稳定工作负载的资源使用率,消除突刺误判。

  • 支持 Cron 配置:支持 Cron-based 弹性配置,应对大促等异常流量洪峰。

  • 兼容社区:使用社区 HPA 作为弹性控制的执行层,能力完全兼容社区。

案例演示

该案例是官方提供的一个演示案例,展示的是随着请求增加,CPU 负载会逐渐增高,通过 EHPA,会自动扩容,增加或减少 Pod,保持弹性和高效以及服务质量

安装 Metrics Server

kubectl apply -f installation/components.yamlkubectl get pod -n kube-system
复制代码

创建测试应用

用以下命令启动一个 Deployment 用 hpa-example 镜像运行一个容器, 然后将其暴露为一个 服务(Service):


kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/php-apache.yamlkubectl 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
复制代码

运行以下命令查看 EffectiveHPA 的当前状态:

kubectl get ehpa
复制代码


生成负载

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"
复制代码


观察 ehpa

kubectl get hpa ehpa-php-apache --watch
复制代码


通过下图可以看到,当流量负载上来的时候,Ehpa 会自动扩容,以降低目标值负载,在流量停止的时候,会自动缩容,以降低到 MinPods,实现整个服务的弹性和高效以及高可用


总结

作为一个 k8s 的初学者,很巧的赶上了这次的活动,通过这次活动有幸了解到了 crane,大致清楚了 crane 的功能及其特性,同时增本增效的确是一个很重要的点,通过 Crane 仪表盘,用户可以很清晰的看到整个 kubernetes 集群的使用情况以及成本,还可以通过平台推荐的规则进行管理,从而实现降本的需求。同时我也使用了Steampipe.io,其成本查询和 gocrane 中的 Fadvisor 有一点相似,不过从最终目标来看,Fadvisor 似乎更有优势,Comparator 是云原生多云比价器,能够自动识别平台的工作负载类型,划分为 serverless 和 serverful 工作负载,并生成推荐资源规格,最后给出合理的迁移策略和成本费用优化。


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


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


开源项目: https://github.com/gocrane/crane


发布于: 刚刚阅读数: 2
用户头像

指剑

关注

InfoQ签约作者 2022-07-13 加入

AWS社区建设者,AWS学生大使,微软学生大使,阿里云签约作者,Info Q签约作者,CSDN博客专家,华为云云享专家

评论

发布
暂无评论
【腾讯云 Finops Crane 集训营】安装使用及EHPA弹性演示_腾讯云_指剑_InfoQ写作社区