【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战

文章目录

  • 前言
  • 一、Crane是什么?
  • 二、Crane的特点
  • 三、Crane使用
    • 1、环境准备
      • 安装 kubectl
      • 安装 Helm
      • 安装 kind
      • 安装 Docker
    • 2、安装Crane
    • 3、访问dashboard
    • 4、页面展示
      • 集群总览
      • 成本洞察
      • 成本分析
    • 5、功能应用
      • 智能弹性 EffectiveHPA
      • 推荐规则
  • 四、Crane的优势
  • 总结
  • 参考文献


前言

很荣幸参加了由腾讯云联合CSDN推出的“腾讯云 Finops Crane 集训营”,在集训过程,从0到1体验了Crane平台的搭建,也积极参与github的发言,提交两个issue帮助提升体验感。好了,话不多说,下面跟着我一起走入Finops Crane。

FinOps(Financial Operations)是一种管理云计算成本的方法,它强调将云计算资源的成本与使用情况及业务需求相匹配,从而提高企业的效率和效益。在当前云计算环境下,FinOps已经成为了越来越多企业的管理方法。本文将会介绍Crane这个云计算成本管理工具,并详细介绍如何在实际应用中使用Crane进行云计算资源成本管理。
【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第1张图片


一、Crane是什么?

Crane是一个开源的云计算成本管理工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane可以帮助企业在云计算环境中实现资源成本的透明化管理,从而更好地控制成本,提高效益。Crane可以通过API将云计算资源的使用情况与成本进行关联,并提供实时的成本分析和预测功能。

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第2张图片

Crane的出现可以解决K8S原生能力的不足:

  • 资源配置浪费
    基于经验的资源配置不准导致大量浪费
  • 弹性不及时
    基于阈值的弹性的滞后性导致业务来不及弹
  • 业务稳定性
    CPU是可压缩资源,CPU承压时,所有Pod等比受损,独占式绑核能力造成较大资源浪费

二、Crane的特点

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第3张图片

  • 成本透明化
    Crane可以帮助企业在云计算环境中实现资源成本的透明化管理。它可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
  • 基于预测的水平弹性器
    EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。
  • 推荐框架
    提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐。
  • 负载感知的调度器
    动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。
  • 拓扑感知的调度器
    Crane Scheduler与Crane Agent配合工作,支持更为精细化的资源拓扑感知调度和多种绑核策略,可解决复杂场景下“吵闹的邻居问题",使得资源得到更合理高效的利用。
  • 基于 QOS 的混部
    QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。
  • 易于使用
    Crane非常易于使用。它可以与各种云计算平台集成,并提供简单易懂的用户界面,使用户可以轻松地使用它来管理云计算资源的成本。
  • 开源
    Crane是一个开源的工具,它可以帮助企业在使用云计算资源时更好地管理成本。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即可
【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第4张图片

3、访问dashboard

增加端口映射后,访问127.0.0.1:9090即可

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

4、页面展示

集群总览

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第5张图片

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第6张图片

成本洞察

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第7张图片
【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第8张图片
【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第9张图片

成本分析

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第10张图片
【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第11张图片
【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第12张图片

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

【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战_第13张图片
随着请求增多,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 算法分析应用的真实用量推荐更合适的副本数量

四、Crane的优势

  • 1、实时监控成本
    Crane可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
  • 2、优化资源利用率
    Crane可以帮助企业优化云计算资源的利用率。它可以帮助企业发现不必要的资源浪费,并提供优化建议,使企业可以更好地利用云计算资源,提高资源利用效率。
  • 3、提高决策效率
    Crane可以帮助企业更好地了解云计算资源的成本和使用情况。这样,企业就可以更好地做出决策,以满足业务需求,并在成本和效益之间取得平衡。
  • 4、智能预测
    Crane可以帮助企业完成流量智能预测,进行自动扩缩容,应对大促节假日等有规律的流量洪峰。

总结

经过一段时间的试用,说一下我对Finops Crane的个人看法。

首先从安装部署到落地实践测试的过程中,没有遇到什么疑难杂症,易用性非常好,无论是初学者还是专业人士,都可以很容易地上手使用。这使得Finops Crane在使用过程中非常方便,能够帮助用户更快地完成任务。

其次在UI页面的视觉上,清爽度很高、简约而又不简单,配置与管理上也很便捷,可以快速地进行参数设置和管理,包括一键带入、生成命令等功能。

再者在功能的体验上,确实很强大,包括成本的计算、弹性伸缩的预判、资源推荐等等让人眼前一亮,这使得公司很容易计算K8S的整体成本并减少资源的浪费。

最后有两个建议希望后续能够加强:

  • 加强用户社区的建设、加强品牌营销与推广。
    由于Finops Crane产品是一款新兴的产品,社区支持相对较弱。用户在使用过程中可能会遇到一些问题和困难,需要自己进行摸索和解决,可能会带来一些不便和障碍。
  • 加强产品的创新与技术研发,持续优化产品性能和用户体验。
    例如提升推荐命令的精准性、推荐页面异常情况等等

参考文献

  • Crane github:https://github.com/gocrane/crane
  • Crane官网: https://gocrane.io/

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

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

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

你可能感兴趣的:(云原生,finops,crane,云原生,腾讯云)