前言

近期参加了由腾讯云联合CSDN 推出的“腾讯云Finops Crane开发者集训营"活动,通过线上直播、组织动手实验等一系列技术实践活动我对Finops Crane开源项目有一个深入的了解,同时也在云原生技能上有实质性收获。
本文对这次活动做出总结,向大家详细介绍腾讯云开源项目Crane的背景、优势以及如何部署。

FinOps云成本优化

FinOps是一种管理云计算成本的方法论,它将财务、运营和技术团队结合起来,使企业在云计算环境中实现最大化的效益。FinOps的目标是通过优化资源使用、控制成本和提高效率,达到最优的业务成果。
在这里插入图片描述

具体来说,FinOps包括以下几个方面:

  1. 成本可见性:通过监控和分析云资源使用情况,了解成本分布情况,以及哪些资源对成本影响最大。
  2. 成本优化:通过对资源使用情况的分析,采取相应的措施降低成本,如优化资源配置、删除不必要的资源等。
  3. 成本管理:建立有效的成本管理策略,确保资源的使用符合预算和预期效益。
  4. 团队协作:FinOps需要财务、运营和技术团队紧密协作,共同制定和实施成本管理策略,确保整个组织在云计算环境中的成本可控。

总之,FinOps是一种帮助企业在云计算环境中实现成本优化的方法学,可以帮助企业在云计算环境中实现高效、可控的成本管理。

腾讯云开源项目Crane

Crane是腾讯云推出的一款开源的轻量级容器编排系统,旨在为用户提供高效、稳定、可靠的容器编排服务。Crane采用了简单易用、快速部署、灵活扩展等特点,可以帮助用户更加便捷地管理和运行容器应用。
Crane基于Docker和Kubernetes技术,支持常见的容器化应用场景,如部署多个容器、水平扩展、自动伸缩、负载均衡等。Crane提供了友好的Web界面和命令行工具,方便用户管理和操作容器集群。同时,Crane还支持自定义插件和扩展,用户可以根据需求进行二次开发和定制化。
在这里插入图片描述

应用场景

Crane适用于多种容器化应用场景,如Web应用、微服务、数据处理等。以下是一些典型的使用场景:

  1. 云原生应用: 在云端部署、运行和管理面向互联网的大规模分布式应用。
  2. 企业级应用: 在企业内部快速搭建、部署和管理各种应用,提高效率和安全性。
  3. 测试环境: 为测试团队提供快速、灵活、可靠的容器化测试环境,提高测试效率和质量。
  4. 开发环境: 为开发者提供易用、高效、一致的开发环境,提高开发效率和协作能力。

核心功能

  1. 多租户支持
    在实际开发中,不同的应用程序可能需要使用不同的资源和配置。Crane可以通过多租户支持功能来实现资源隔离、权限控制和资源分配,从而满足企业内部应用程序的多样化需求。
  2. 高效的调度算法
    Crane的智能调度算法可以根据每个应用程序的资源需求和当前集群的资源情况来进行动态调度,以最大程度地提高资源利用率,并确保应用程序在可用性和性能方面都得到了充分保障。
  3. 稳定性高
    Crane提供了高可用性和容错性的特性,可以确保Kubernetes集群的稳定运行。它可以自动检测和恢复故障节点,并在出现异常情况时自动重试任务,从而避免了系统因故障而停机的问题。
  4. 集成友好
    Crane与Kubernetes集成非常紧密,可以无缝地扩展Kubernetes,并且可以与其他Kubernetes插件和工具集成。这使得开发者可以更加方便地使用Kubernetes进行容器编排和管理。
  5. 安全性高
    Crane遵循最佳的安全实践,可以保护Kubernetes集群的安全。它提供了许多安全功能,如RBAC、TLS加密等,并且具有独立的认证和授权机制,可以确保只有经过验证的用户能够访问敏感资源。
  6. 开发者友好
    Crane提供了易于使用的API和命令行工具,可以帮助开发人员更方便地管理和操作Kubernetes集群。开发者可以使用标准的Kubernetes
    API进行容器编排和管理,从而无需学习新的API或工具。
  7. 社区活跃
    Crane是一个开源项目,拥有庞大的社区支持。社区不断地更新和维护Crane,并提供了丰富的文档和教程。这使得开发者可以快速上手并使用Crane进行容器编排和管理。

部署Crane

了解到了Crane的各种功能以及特性,那么我们应该如何部署Crane呢?其实很简单,集训营也有动手实验直播,可以跟着直播体验一下。

直播回放
https://live.csdn.net/room/csdnnews/83xhNo4C

环境准备

安装Crane

以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana).

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

如果上面安装命令报网络错误,可以用本地的安装包执行安装,在命令行中执行以下安装命令:

必须在 installation 的上级目录例如:我们预设好的 training 跟目录中执行

Mac/Linux

bash installation/local-env-setup.sh

Windows

./installation/local-env-setup.sh

确保所有 Pod 都正常运行:

$ export KUBECONFIG=${HOME}/.kube/config_crane
$ kubectl get pod -n crane-system
NAME                                             READY   STATUS    RESTARTS       AGE
craned-6dcc5c569f-vnfsf                          2/2     Running   0              4m41s
fadvisor-5b685f4cd6-xpxzq                        1/1     Running   0              4m37s
grafana-64656f6d54-6l24j                         1/1     Running   0              4m46s
metric-adapter-967c6d57f-swhfv                   1/1     Running   0              4m41s
prometheus-kube-state-metrics-7f9d78cffc-p8l7c   1/1     Running   0              4m46s
prometheus-server-fb944f4b7-4qqlv                2/2     Running   0              4m46s

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

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

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

添加本地集群
在这里插入图片描述

成本展示:
在这里插入图片描述
在这里插入图片描述

使用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

创建 RecommendationRule 配置后,RecommendationRule 控制器会根据配置定期运行推荐任务,给出优化建议生成 Recommendation 对象,然后我们可以根据优化建议 Recommendation 调整资源配置。

比如我们这里集群中已经生成了多个优化建议 Recommendation 对象。
在这里插入图片描述

在 dashboard 的资源推荐页面也能查看到优化建议列表。
在这里插入图片描述

优化应用配置
在 dashboard 中开箱后就可以看到相关的成本数据,是因为在添加集群的时候我们安装了推荐的规则。

推荐框架会自动分析集群的各种资源的运行情况并给出优化建议。Crane 的推荐模块会定期检测发现集群资源配置的问题,并给出优化建议。智能推荐提供了多种 Recommender 来实现面向不同资源的优化推荐。

在成本分析>推荐规则页面可以看到我们安装的两个推荐规则。
在这里插入图片描述

实践环境清除
动手实践完成后,可以将本地的集群清理删除:

kind delete cluster --name=crane

总结

无论是否需要资源优化,当你希望实践 FinOps 时,Crane 都可以作为尝试对象。你可以首先通过集群的成本展示了解当前的 Kubernetes 集群的现状,并根据问题所在选择优化的方式,而本文介绍的资源配置优化是最直接和最常见的手段。
以下是个人的一些优化建议:

  1. 更加自由的可拓展性,一些可自定义的API集成到Dashboard中,可加入大数据监控以及数据流监控等。
  2. 加强产品的创新与技术研发,持续优化产品性能和用户体验。 例如提升推荐命令的精准性、推荐页面异常情况等等
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐