【腾讯云Finops Crane集训营】降本增效之 Crane 初体验

在这里插入图片描述


最近有幸参加了腾讯云 Finops Crane 开源项目的第一季活动,对 Crane 有了一个深入的了解。作为一款云资源分析与成本优化平台,它为云原生领域相关的开发者和企业都提供了一种更简单、更高效的 Kubernetes 集群管理机制,正如 Crane 的愿景:“在保证客户应用运行质量的前提下实现极致的降本”,实现 降本增效 式的云原生应用管理便是其最大目标。接下来我们一起了解一下 Crane。

1. Crane 初识

Crane 是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目,遵循 FinOps 标准,是一个基于 FinOps 的云资源分析与成本优化平台。

在这里提到了 “FinOps 标准”,那么 FinOps 又是什么呢?

FinOps 是 DevOps、财务和业务整合在一起的变革,其目标在于优化一个组织在云计算上的支出的财务规范和技术解决方案,即根据支出的历史记录和来自预期负载的信息,FinOps 可以在需要时预分配资源或估算成本,可称为“财务运营”,或者更直白地称为“成本优化”,它是将财务问责制引入云的 IT 支持,进行调整以优化质量和支出。其实简单通俗理解就是四个字:“降本增效”。

Crane 就是基于 FinOps 为使用 Kubernetes 集群的企业提供了一种简单、可靠且强大的自动化部署机制,它易于使用、高度可定制和可扩展。提供了一组简单易用的命令行工具,使得开发者和管理员都能轻松地将应用程序部署到 Kubernetes 集群中。此外它还支持多种云平台,并且可以根据具体的业务需求进行定制。

以下是 Crane 的架构图,它整体上由 Craned 管理 CRDs 的生命周期以及 API,Craned 也是 Crane 的最核心组件。Fadvisor 用于提供一组 Exporter 计算集群云资源的计费和账单数据并存储至监控系统。Metric Adapter 读取 CRDs 信息并提供基于 Custom/External Metric API 的 HPA Metric 的数据。Crane Agent 通过 DaemonSet 部署在集群的节点上。底层则是 Linux 内核(Linux Kernel)。

在这里插入图片描述

2. Crane 如何进行成本优化?

Crane 是通过三个方面开启成本优化之旅的:

  1. 成本展示:Kubernetes 资源( Deployments, StatefulSets )的多维度聚合与展示。
  2. 成本分析:周期性的分析集群资源的状态并提供优化建议。
  3. 成本优化:通过丰富的优化工具更新配置达成降本的目标。

以下是 Crane 的优化过程,由 Visualization 进行可视化展示,Analytics 进行成本分析,Optization 进行成本优化。先输入(input) k8s 资源对象(k8s Resources)和监控所得的各项指标数据(Monitoring Data),接下来由 Dashboard 可视化展现接收到的各项数据,Fadvisor 则会提供一组 Exporter 计算集群云资源的计费和账单数据并存储至监控系统,至此就完成了 成本展示;接下来由 Recommendation Framework 根据实际的历史记录和相关指标等做出一些分析并提供优化建议,这就是 成本分析;最后 Optization 来完成 成本优化,这部分包含的方面较多,如动态调度、弹性扩缩容等等,这里不作具体阐述。

在这里插入图片描述

3. Crane 快速上手体验

Crane 的安装访问流程如下:

  • 使用 Kind 安装一个本地运行的 Kubernetes 集群
  • 使用 Helm 安装 Prometheus 和 Grafana
  • 使用 Helm 安装 Crane
  • 通过 kubectl 的 port-forward 访问 Crane Dashboard

环境要求:

  • kubectl
  • Kubernetes 1.18+
  • Helm 3.1.0
  • Kind 0.16+

关于 k8s 集群的搭建与 kubectl、helm、Grafana 等工具的使用博主在往期专栏已有详细介绍,参见《云原生/云计算 - 入门到实战》。所以下面基于已有 k8s 环境的情况进行演示。

3.1 安装 Prometheus 和 Grafana

Crane 使用 Prometheus 抓取集群工作负载对资源的使用情况。安装 Prometheus:

helm repo add prometheus-community https://finops-helm.pkg.coding.net/gocrane/prometheus-community
helm install prometheus -n crane-system --version 19.6.1 \
    --set pushgateway.enabled=false \
    --set alertmanager.enabled=false \
    --set server.persistentVolume.enabled=false \
    -f https://gitee.com/finops/helm-charts/raw/main/integration/prometheus/override_values.yaml \
    --create-namespace  prometheus-community/prometheus

Crane 的 Fadvisor 使用 Grafana 展示成本预估。安装 Grafana:

helm repo add grafana https://finops-helm.pkg.coding.net/gocrane/grafana
helm install grafana --version 6.11.0 \
    -f https://gitee.com/finops/helm-charts/raw/main/integration/grafana/override_values.yaml \
    -n crane-system \
    --create-namespace grafana/grafana

3.2 安装 Crane 和 Fadvisor

helm repo add crane https://finops-helm.pkg.coding.net/gocrane/gocrane
helm install crane -n crane-system --create-namespace crane/crane
helm install fadvisor -n crane-system --create-namespace crane/fadvisor

3.3 验证安装是否成功

使用如下命令查看安装是否成功;

kubectl get deploy -n crane-system

当看到各个容器均已处于 Ready 状态,说明已经安装成功;

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
craned                          1/1     1            1           31m
fadvisor                        1/1     1            1           41m
grafana                         1/1     1            1           42m
metric-adapter                  1/1     1            1           31m
prometheus-kube-state-metrics   1/1     1            1           43m
prometheus-server               1/1     1            1           43m

如下是我的实操场景截图:

在这里插入图片描述

3.4 访问 Dashboard

这里我们通过端口映射访问 Dashboard:

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

最终效果如下:

在这里插入图片描述

4. Crane 初体验 - 总结&建议

通过本次 Finops Crane 集训营活动,我先观看了 Finops Crane 开源项目的直播和开发者集训营直播,后来又实际上手体验了 Crane 的安装与使用操作。这几个流程下来对 Crane 的基本概念和实操方法均更加熟悉了,而且对它降本增效的原理也有了认知。最大的感受就是 Crane 对于 k8s 集群的管理显而易见的高效便捷,一是其操作与数据完全可视化,二是通过各种前沿技术的应用对于某一项操作的简化,为开发者省去了很多繁琐的操作。无论是应用部署还是资源监控等各个方面,即使是新手也可以快速入门。

但是对于初次想要安装部署 Crane 的伙伴来说,我还是建议是先了解学习一下云原生领域特别是 Kubernetes 技术栈,如果能够在熟悉 Kubernetes 集群搭建与命令行工具 kubectl 的情况下上手 Crane,会很轻松。

在使用腾讯云 Finops Crane 文档的过程中,我觉得可以将用户手册、操作教程更加细化,以加强用户的体验,因为肯定是有初次入门或者无技术经验的用户上手 Crane 的,对于这部分人群来说我觉得文档还是有点偏难;其次就是建议 Finops Crane 持续进行产品升级创新,引入更多先进的技术和方案,满足不断变化的市场和行业需求,让平台更加实用和灵活。


5. 关于腾讯云 Finops Crane 集训营

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

猜你喜欢

转载自blog.csdn.net/weixin_53072519/article/details/130760530