腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践

一、 相关活动介绍:

自从上次参加完CSDN联合腾讯云发起的《云原生之降本增效》活动后,只是停留聚焦在优秀实践方法论、资源与弹性、架构设计上的了解,本次《腾讯云 Finops Crane 开发者集训营》是深入了解并实践基于 FinOps 框架开展的一个成本优化项目Crane。

  1. 活动相关链接:

https://marketing.csdn.net/p/038ae30af2357473fc5431b63e4e1a78

  1. 相关讲座视频回放链接:

https://live.csdn.net/room/csdnnews/CPEN2JKh

https://live.csdn.net/room/csdnnews/83xhNo4C


二、 背景来由:

1.云上资源利用率低,导致浪费成本:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第1张图片

2.在后云原生时代,成本管理面临着诸多挑战?

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第2张图片

  1. 面临云原生上的降本挑战:

面对云原生成本管理现状与挑战,FinOps 定义了一系列云财务管理规则和最佳实践,通过助力工程和财务团队、技术和业务团队彼此合作, 进行数据驱动的成本决策,使组织能够获得最大收益。


三、 什么是FinOps?

腾讯的云原生降本增效最佳实践是基于FinOps框架开展的。

FinOps团队的日常工作涵盖降本增效战略、成本分析与浪费识别、目标制定与下发、费率优化、业务侧优化、平台侧优化。

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第3张图片

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第4张图片
腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第5张图片
腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第6张图片

基于以上的方法论,腾讯开源了一个成本优化项目Crane(Cloud Resource Analytics and Economics)。


四、 什么是Crane?

Crane是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目,遵循FinOps标准,已经获得FinOps基金会授予的全球首个认证降本增效开源方案。

Crane项目开源链接,可以star和收藏:
https://github.com/gocrane/crane

1.成就:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第7张图片

2.价值:

Crane 能够帮助云原生用户充分发挥云上资源的最大价值,从而实现企业降本增效。

在这里插入图片描述

3.功能:

Crane 依托于云原生技术,结合监控预测、调度增强、业务混部等多项硬核科技,将优化措施应用到了云成本优化的多个关键环节,从而辅助用户决策、简化运维效率、提升系统稳态、全面降本增效。

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第8张图片

4.组成部分:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第9张图片

五、 Crane的应用:

在这里插入图片描述


六、 公司Crane可行性分析:

公司的业务集群中的业务大多是内存消耗型的,因此极易出现内存利用率很高的节点,并且各个节点的内存利用率分布也很不平均。

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第10张图片

1.公司目前业务服务k8s的使用情况:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第11张图片
2.公司业务报表相关服务使用情况:

在这里插入图片描述3. 相关CPU与内存使用率:
腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第12张图片
4. 慢SQL导致系统缓慢:
在这里插入图片描述
5. 针对于大型活动内存使用率:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第13张图片
6. 大量的阻塞任务:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第14张图片


七、 本地环境实验:

需要一些提前的预装的软件:docker、kubectl、Helm、kind,如果环境中已经有,不需要再安装

1.安装docker:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

在这里插入图片描述2. 安装 kubectl:

# 下载最新发行版:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 下载 kubectl 校验和文件:
   curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
# 基于校验和文件,验证 kubectl 的可执行文件:
echo "$(cat kubectl.sha256)  kubectl" | sha256sum –check
# 安装 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 执行测试,以保障你安装的版本是最新的:
kubectl version --client

在这里插入图片描述
3. 安装 Helm:

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

在这里插入图片描述

  1. 安装 kind:
# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.19.0/kind-linux-amd64
# For ARM64
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.19.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

在这里插入图片描述
5. 安装本地的 Kind 集群和 Crane 组件:

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

在这里插入图片描述

提示:Pod 的启动需要一定的时间,等几分钟后输入命令查看后集群状态是否都 Running

  1. 确保所有 Pod 都正常运行:
export KUBECONFIG=${HOME}/.kube/config_crane
kubectl get pod -n crane-system

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第15张图片7. 访问 Crane Dashboard:

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

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第16张图片
8. 添加本地集群:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第17张图片

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第18张图片

后续的终端操作请在新窗口操作,每一个新窗口操作前请把配置环境变量加上(不然会出现8080端口被拒绝的提示)

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


八、 使用智能弹性 EffectiveHPA:

  1. HPA的不足:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第19张图片
2. EHPA 的主要架构:
腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第20张图片
腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第21张图片
3. 实验:

3.1 安装Metrics Server:

kubectl apply -f installation/components.yaml
kubectl get pod -n kube-system 

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第22张图片
3.2 创建测试应用:
用以下命令启动一个 Deployment 用 hpa-example 镜像运行一个容器, 然后将其暴露为一个 服务(Service):

kubectl apply -f installation/php-apache.yaml

kubectl apply -f installation/nginx-deployment.yaml

3.3 创建 EffectiveHPA:

kubectl apply -f installation/effective-hpa.yaml

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

kubectl get ehpa

在这里插入图片描述
3.4 增加负载:

# 在单独的终端中运行它
# 如果你是新创建请配置环境变量 
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"

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第23张图片

随着请求增多,CPU利用率会不断提升,可以看到 EffectiveHPA 会自动扩容实例。
说明:预测数据需要两天以上的监控数据才能出现。

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第24张图片
腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第25张图片可以看到蓝色的预测数据与绿色的实时监控数据几乎吻合,表示预测数据的准确性。同时黄色曲线即为上文所说的未来时间内预测数据的最大值,所以将预测指标也作为 HPA 的阈值之一就可以达到提前扩容的效果。

  1. Crane Dashboard显示:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第26张图片

  • 当月总成本:过去一个月集群总成本。从安装Crane时间开始,按小时累加集群成本
  • 预估每月成本:以最近一小时成本估算未来一个月的成本。每小时成本 * 24 * 30
  • 预估CPU总成本:以最近一小时CPU成本估算未来一个月的CPU成本。每小时CPU成本 * 24 * 30
  • 预估Memory总成本:以最近一小时Memory成本估算未来一个月的Memory成本。每小时Memory成本 * 24 * 30

成本洞察->集群总览:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第27张图片

成本洞察->应用成本分布:

腾讯云 Finops Crane 开发者集训营 - 云成本优化一站式解决方案实践_第28张图片


六、总结:

毫无疑问,Crane 已经是 K8s 集群中用于云资源分析和经济的最佳 FinOps 平台了。目前,腾讯云 Crane 已进入 CNCF LandScape,这意味着 Crane 已成为云原生领域的重要项目。面向未来,腾讯云还将持续反馈开源社区、共建开源生态,帮助更多企业通过云原生全面释放生产力,加速实现数字化和绿色化双转型。

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