引言: 最近我参加了由腾讯云联合 CSDN 推出的“腾讯云 Finops Crane 开发者集训营”活动,通过这个活动我对腾讯云的 Finops Crane 开源项目有了更深入的了解。在本篇博客中,我将分享我对该项目的认识和体验,并介绍其中一些关键特性和实验操作指南。
Finops Crane 是腾讯云推出的一款开源项目,它是一套用于云资源管理和优化的工具集。该项目旨在帮助开发者和云架构师更好地管理云资源、降低成本、优化性能,并提供实时的可视化监控和报告。
云资源管理:Finops Crane 提供了一套丰富的工具和功能,可以帮助用户对云资源进行全面管理和优化,包括资源的创建、配置、监控和删除等。 成本控制:该项目提供强大的成本控制功能,可以帮助用户深入了解资源消耗情况,并提供优化建议,以降低云资源的成本。 自动化操作:Finops Crane 支持自动化的任务调度和操作执行,用户可以根据需求定义定时任务,实现自动化的资源管理和优化。 实时监控和报告:项目内置了实时监控和报告功能,用户可以随时查看资源的使用情况、性能指标和报告数据,从而更好地了解云资源的状态和趋势。
随着云原生技术的发展,越来越多的公司正在选择将应用运行在云上或者自建的 Kubernetes 集群上,但是许多机构的调研发现,绝大多数的用户集群资源利用率并不高,浪费严重。本次训练营将会演示如何快速搭建一个 Kubernetes+Crane 环境,以及如何基于 Crane 优化你的集群和应用。
Kubernetes是用于自动部署、扩展和管理“容器化应用程序”的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation来使用。 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。
实验准备步骤 (课前准备) 安装 kubectl 请参考官方文档依据你的本地环境系统参考对应的文档安装 kubectl:安装工具 | Kubernetes 安装 Helm 请参考官方文档依据你的本地环境系统参考对应的文档安装 Helm:Helm | 安装Helm 安装 kind 请参考官方文档依据你的本地环境系统参考对应的文档安装 kind:kind – Quick Start 安装 Docker 请参考官方文档依据你的本地环境系统参考对应的文档安装 docker:Get Docker | Docker Documentation
安装本地的 Kind 集群和 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
访问 Crane Dashboard
kubectl -n crane-system port-forward service/craned 9090:9090
# 后续的终端操作请在新窗口操作,每一个新窗口操作前请把配置环境变量加上(不然会出现8080端口被拒绝的提示)
export KUBECONFIG=${HOME}/.kube/config_crane
点击 这里 访问 Crane Dashboard
安装Metrics Server
用以下命令安装 Metrics Server:
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
输出类似于:
NAME STRATEGY MINPODS MAXPODS SPECIFICPODS REPLICAS AGE
php-apache Auto 1 10 0 3m39s
增加负载
# 在单独的终端中运行它
# 如果你是新创建请配置环境变量
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"
现在执行:
# 准备好后按 Ctrl+C 结束观察
# 如果你是新创建请配置环境变量
export KUBECONFIG=${HOME}/.kube/config_crane
kubectl get hpa ehpa-php-apache --watch
随着请求增多,CPU利用率会不断提升,可以看到 EffectiveHPA 会自动扩容实例。
说明:预测数据需要两天以上的监控数据才能出现。
Crane Dashboard 提供了各式各样的图表展示了集群的成本和资源用量
下面是一些使用 Finops Crane 的示例场景: - 自动停止闲置资源:通过设定规则和定时任务,Finops Crane 可以检测和自动停止闲置的云资源,从而节省成本。 - 资源性能优化:通过实时监控和报告,Finops Crane 可以帮助用户分析资源的性能瓶颈,并提供优化建议,以提升应用程序的性能。 - 预测和规划:基于历史数据和趋势分析,Finops Crane 可以预测资源需求,帮助用户做出合理的资源规划和预算安排。
腾讯云 Finops Crane 是一个功能强大的开源项目,为开发者和云架构师提供了一套全面的资源管理和优化工具。通过使用Finops Crane,用户可以有效地管理云资源、降低成本并优化性能。该项目具有自动化操作、实时监控和报告等特性,使用户能够更好地了解云资源的使用情况并做出相应的决策。
在实际应用中,Finops Crane可以用于自动停止闲置资源,通过设定规则和定时任务,及时检测并停止不再使用的云资源,从而避免资源的浪费和成本的增加。此外,通过实时监控和报告功能,用户可以获取资源的性能指标和使用情况,及时发现性能瓶颈并采取相应的优化措施。
另一个重要的应用场景是资源的预测和规划。Finops Crane基于历史数据和趋势分析,能够预测未来的资源需求,帮助用户做出合理的资源规划和预算安排。这有助于避免资源不足或过剩的问题,提高资源利用率并确保应用程序的正常运行。
总之,腾讯云 Finops Crane开源项目为开发者提供了一个强大的工具集,帮助他们更好地管理和优化云资源。通过自动化操作、实时监控和报告等功能,用户可以降低成本、提高性能,并进行有效的资源规划。如果您对云资源管理和优化感兴趣,我强烈推荐您了解并尝试使用腾讯云 Finops Crane开源项目。
关于腾讯云 Finops Crane 集训营: Finops Crane集训营主要面向广大开发者,旨在提升开发者在容器部署、K8s层面的动手实践能力,同时吸纳Crane开源项目贡献者,鼓励开发者提交issue、bug反馈等,并搭载线上直播、动手实验组队、有奖征文等系列技术活动。既能让开发者通过活动对 Finops Crane 开源项目有深入了解,同时也能帮助广大开发者在云原生技能上有实质性收获。 为奖励开发者,我们特别设立了积分获取任务和对应的积分兑换礼品。
活动介绍送门:https://marketing.csdn.net/p/038ae30af2357473fc5431b63e4e1a78
开源项目: https://github.com/gocrane/crane