❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

零、前言

虚竹哥很荣幸参加了由腾讯云联合CSDN推出的“腾讯云 Finops Crane 集训营”,在该课程中,老师通过直播的方式手把手地指导从零到壹搭建Crane平台。虚竹哥迅速地完成了本地环境上的实验,并且得到了老师的认可,哈哈,开心~
在这里插入图片描述

把直播学到的内容整理成博客,分享给大家~

一、什么是Crane

Crane 是一个基于 FinOps 的云资源分析与成本优化平台。它的愿景是在保证客户应用运行质量的前提下实现极致的降本。
重点:Crane已经开源了:https://github.com/gocrane/crane

1.1、Crane 的背景和目标

云原生应用程序是一种以容器、微服务和云平台作为基础架构的应用程序开发和部署方式,具有高度的可扩展性、灵活性和可移植性等特点。随着云计算技术的不断发展,云原生应用程序已经成为了未来的趋势。

然而,在大规模的云原生环境下,云原生应用程序的成本管理变得越来越重要。

  • 传统的基础架构和应用程序监控方法已无法满足日益复杂的云原生应用程序的管理需求;
  • 云计算的成本模式由按量计费转向保留购买,企业需要一个能够有效降低运营成本和管理难度的方案。

因此,如何通过有效的成本优化,提高云原生应用程序的效率和可靠性,已成为了云原生领域的重要问题。追求更高效、更经济的云原生应用程序成本优化方案,能够对企业和组织的业务发展产生积极的影响。

为了解决这个问题,腾讯推出了 Crane 平台,该平台通过部署在 Kubernetes 集群上的控制器及其他组件,提供一种自动化、高效、可靠的方式来优化云原生应用程序成本。Crane 平台提供了一系列的优化策略和方案,可以轻松地对其云原生应用程序的成本进行跟踪、分析和管理。

1.2、Crane 的工作原理

在这里插入图片描述
Crane平台主要利用Kubernetes集群的能力,来对云原生应用程序进行成本优化。具体而言,它通过部署在集群上的控制器和其他组件来监控和管理云原生应用程序的资源使用情况,并提供一些自动化的策略和方案,以减少运行成本和提高效率。

实现这一目标的基础是Kubernetes(K8s),这是一个开源的容器编排平台,可以协调应用程序在容器化环境中的部署、扩展和管理。Crane平台依靠K8s提供的API和机制来实现自动化的成本优化策略。

针对不同的优化场景,Crane平台提供了多种自动化策略和方案,例如:

  • 成本可视化和优化评估:

    • 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus。
    • 多维度的成本洞察,优化评估。通过 Cloud Provider 支持多云计费。
  • 推荐框架:提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐

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

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

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

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

综述,Crane平台的工作原理是基于容器编排平台Kubernetes,并通过特定的控制器和组件提供自动化的成本优化策略,为企业和组织提供高效、可靠、经济的云原生应用程序管理方案。

二、Crane实战

从零到壹搭建Crane平台

2.1、安装环境

MacBook Pro
芯片:Apple M1 Pro
内存:32 GB

2.2、安装配套环境

安装 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

验证通过:
在这里插入图片描述

将 kubectl 置为可执行文件:

chmod +x ./kubectl

将可执行文件 kubectl 移动到系统可寻址路径 PATH 内的一个位置:

# 查看path路径
echo $PATH

sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

查看版本的详细信息:

kubectl version --client --output=yaml

在这里插入图片描述

安装 Helm

下载 需要的版本

在这里插入图片描述
解压
然后移动到需要的目录中

 mv darwin-arm64/helm /usr/local/bin/helm

查看版本号:

helm version

在这里插入图片描述

安装 kind

下载包:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-darwin-arm64

chmod +x ./kind

在这里插入图片描述

查看版本号:

kind version

在这里插入图片描述

安装 Docker

点击链接下载Docker for Mac:
阿里云传送门
注:对于10.10.3以上的用户

双击下载的 .dmg 文件,把应用图标拖拽到 Application 文件夹。
在这里插入图片描述

启动终端后,查看安装后的docker版本。

docker --version

在这里插入图片描述

配置阿里云加速

阿里云加速器:传送门
在这里插入图片描述

针对安装了Docker for Mac的用户,您可以参考以下配置步骤:
在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将
https://0vq0qofd.mirror.aliyuncs.com加到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。

在这里插入图片描述
在这里插入图片描述
验证镜像是否配置成功:docker info
在这里插入图片描述

2.3、本地安装 Crane

在线安装:

curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -

我没开github加速,所以采用本地安装包安装的方式。

链接: https://pan.baidu.com/s/1YVsHa1xHeiDPPiRi9-hMMA 提取码: 5pgf

有需要自取
用本地的安装包执行安装,在命令行中执行以下安装命令:

# 必须在 installation 的上级目录执行命令:
bash installation/local-env-setup.sh

在这里插入图片描述
安装过程比较久,要几分钟时间,有耐心等待一会。

确保所有 Pod 都正常运行:

export KUBECONFIG=/Users/zhw/.kube/config_crane

kubectl get deploy -n crane-system

kubectl get pod -n crane-system

在这里插入图片描述

如图各个服务是running的,说明启动正常。

访问 Crane Dashboard

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

在这里插入图片描述

2.4、使用智能弹性 EffectiveHPA

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

  • 提前扩容,保证服务质量:通过算法预测未来的流量洪峰提前扩容,避免扩容不及时导致的雪崩和服务稳定性故障。
  • 减少无效缩容:通过预测未来可减少不必要的缩容,稳定工作负载的资源使用率,消除突刺误判。
  • 支持 Cron 配置:支持 Cron-based 弹性配置,应对大促等异常流量洪峰。
  • 兼容社区:使用社区 HPA 作为弹性控制的执行层,能力完全兼容社区。

安装Metrics Server

新开个终端:

export KUBECONFIG=${HOME}/.kube/config_crane
kubectl apply -f installation/components.yaml
kubectl get pod -n kube-system

在这里插入图片描述

创建测试应用

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

kubectl apply -f installation/php-apache.yaml

kubectl apply -f installation/nginx-deployment.yaml

在这里插入图片描述

创建 EffectiveHPA

kubectl apply -f installation/effective-hpa.yaml

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

kubectl get ehpa

输出类似于:
在这里插入图片描述

kubectl get hpa ehpa-php-apache --watch

随着负载请求增多,CPU利用率会不断提升,可以看到 EffectiveHPA 会自动扩容实例。

2.5、增加负载

新开一个终端:

export KUBECONFIG=${HOME}/.kube/config_crane

增加负载

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"

在这里插入图片描述

再去看EffectiveHPA的终端:
在这里插入图片描述

2.6、成本展示

Crane Dashboard 提供了各式各样的图表展示了集群的成本和资源用量
在这里插入图片描述
当月总成本:过去一个月集群总成本。从安装Crane时间开始,按小时累加集群成本
预估每月成本:以最近一小时成本估算未来一个月的成本。每小时成本 * 24 * 30
预估CPU总成本:以最近一小时CPU成本估算未来一个月的CPU成本。每小时CPU成本 * 24 * 30
预估Memory总成本:以最近一小时Memory成本估算未来一个月的Memory成本。每小时Memory成本 * 24 * 30

在这里插入图片描述
在这里插入图片描述
更多的成本分析图表可以通过登陆 Grafana 的页面或者分析源码研究。
登陆 Grafana 的方式可以通过以下命令建立一个 port-mapping:
新开一个终端:

export KUBECONFIG=${HOME}/.kube/config_crane

kubectl -n crane-system port-forward service/grafana 8082:8082

访问本地 Grafana(账号密码:admin/admin)
http://127.0.0.1:8082/grafana/login
在这里插入图片描述
在这里插入图片描述

2.7、如何计算成本

成本计算功能是由组件 Fadvisor 实现,在安装 Crane 时会一起安装,一起提供了成本展示和成本分析功能:

  • Server:收集集群 Metric 数据并计算成本
  • Exporter:将成本 Metric 暴露出来

在 dashboard 中开箱后就可以看到相关的成本数据,是因为在添加集群的时候我们安装了推荐的规则。
在这里插入图片描述
推荐框架会自动分析集群的各种资源的运行情况并给出优化建议。Crane 的推荐模块会定期检测发现集群资源配置的问题,并给出优化建议。智能推荐提供了多种 Recommender 来实现面向不同资源的优化推荐。
这些推荐规则实际上在将 K8s 集群接入Dashboard时安装上的 RecommendationRule CRD 对象:
新开一个终端:

export KUBECONFIG=${HOME}/.kube/config_crane

kubectl get RecommendationRule

在这里插入图片描述

2.8、推荐配置

查看一次闲置节点推荐规则的资源对象,如下所示:

kubectl get recommendationrule idlenodes-rule -oyaml

在这里插入图片描述
生成了多个优化建议 Recommendation 对象:

kubectl get recommendations -A

在这里插入图片描述
可以随便查看任意一个优化建议对象。


kubectl get recommend workloads-rule-resource-6tknq -n crane-system -oyaml

在这里插入图片描述

也有界面化效果:
在 dashboard 的资源推荐页面也能查看到优化建议列表。
在这里插入图片描述
通过查看监控查看详细的监控数据。
在这里插入图片描述
查看采纳命令:
在这里插入图片描述
执行命令即可完成优化,其实就是修改资源对象的 resources 资源数据。

三、Crane 的使用场景

Crane平台 在政务行业 可以帮助政府机构实现数字化转型,提升工作效率,降低成本开支。
虚竹哥对Crane平台 和政务行业的了解,Crane平台至少有以下应用场景可以帮助到政府机构。

1、云资源成本控制

政府机构通常需要大量使用云计算和容器化技术,但是当资源过度使用或误用时,会给政府机构带来昂贵的费用。通过使用Crane平台的云资源分析服务,政府机构可以实现针对云资源的成本控制。Crane平台通过数据分析出影响成本的主要因素,并同时针对性地制定更有效的成本控制策略,为政府机构节省大量开支。

技术帮助: Crane平台拥有先进的指标监控和成本核算功能,可以实时跟踪云资源使用情况,并自动调整资源配置,实现自动化成本优化,从而提高资源使用效率和可持续性。

2、费用核算与精细化管理

政府机构可以通过Crane平台实现对每个使用单位的资源使用情况进行精准监管,并对不合理的资源使用进行精细化扣费,从而提高资源使用效率和质量。

技术帮助: Crane平台拥有自动化费用报告功能,可以灵活定制云资源使用报告,方便政府机构精细化管理和核算费用。

3、数据安全保障

政府机构通常需要处理大量敏感数据,因此在云计算应用过程中,数据安全保障显得尤为重要。Crane平台通过提供强大的安全性和隐私保护机制来保障政府机构数据的安全性。Crane平台拥有先进的安全监控和审计功能,对各类云资源进行实时监测和风险预警,并对敏感数据进行加密和隔离保护。

技术帮助: Crane平台基于开源容器编排平台Kubernetes和其他云原生技术,提供全面的安全性保障机制,包括访问控制、流量控制、敏感数据保护等方面。
重点:Crane平台已经开源,支持私有化部署,将Crane平台部署在自己的服务器上,政府机构可以实现更高的安全性和可控性。
而且私有化部署提供更高的灵活性和定制化。政府机构可以针对自身需求进行定制化开发和优化,满足多元化的应用场景和业务需求。

四、结论

通过本文的学习,知道了Crane平台的背景、目标和工作原理,以及如何从零搭建平台和在政务行业中应用场景。

在从零到壹搭建平台的实战中,带大家深入的了解了Crane平台的结构和组成,一步步实际操作,加深了对Crane平台的理解。以虚竹哥在政务行业的行业经验,政府机构可以通过Crane平台,实现数字化转型和成本管控,进而提升工作效率和服务质量。可以为政府机构节省不少钱。同时,还提供了强大的安全性和隐私保护机制(私有化部署)来保障政府机构数据的安全性。

在虚竹哥看来,Crane平台的核心价值是:降本增效稳定性保障 。在当前数字化转型大势下,Crane平台能够帮助政府机构更好地管理云资源,从而提升服务质量和工作效率。虽然Crane平台的技术操作需要一定的技术水平要求,这方面有待提高加强。但Crane平台的未来发展很有潜力,期待Crane平台的继续持续发展,为更多企业和组织提供更好的服务。

最后的最后,@老板,给您省了这么多钱了!能给我涨多少薪!!哈哈哈~

五、参考

安装 kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/
安装 Helm:https://helm.sh/zh/docs/intro/install/
安装 kind:https://kind.sigs.k8s.io/docs/user/quick-start/#installation
开源git:https://github.com/gocrane/crane

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

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

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

我是虚竹哥,我们下文见~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐