前言
随着云计算的快速发展和云原生应用的兴起,容器技术成为了现代化应用部署和管理的重要工具。
越来越多的公司正在选择将应用运行在云上或者自建的 Kubernetes 集群上,但是许多机构的调研
发现,绝大多数的用户集群资源利用率并不高,浪费严重。本文将会演示如何快速搭建一个
Kubernetes+Crane 环境
Crane是什么
Crane是一个开源的云计算成本管理工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane可以帮助企业在云计算环境中实现资源成本的透明化管理,从而更好地控制成本,提高效益。Crane可以通过API将云计算资源的使用情况与成本进行关联,并提供实时的成本分析和预测功能。
Crane整体架构
Craned
Craned 是 Crane 的最核心组件,它管理了 CRDs 的生命周期以及API。Craned 过 Deployment
方式部署且由两个容器组成
- Craned
- Dashboard
Fadvisor
Fadvisor 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus。Fadvisor 通过 Cloud Provider
支持了多云计费的 API。
Metric Adapter
Metric Adapter 实现了一个 Custom Metric Apiserver
. Metric Adapter 读取 CRDs 信息并提供基于 Custom/External Metric API
的 HPA Metric 的数据。
Crane Agent
Crane Agent 通过 DaemonSet
部署在集群的节点上。
关键特点与功能
成本可视化和优化评估
Crane可以帮助企业在云计算环境中实现资源成本的透明化管理。它可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
推荐框架
提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐。
基于预测的水平弹性器
EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。
负载感知的调度器
动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。
拓扑感知的调度器
Crane Scheduler与Crane Agent配合工作,支持更为精细化的资源拓扑感知调度和多种绑核策略,可解决复杂场景下“吵闹的邻居问题",使得资源得到更合理高效的利用。
基于 QOS 的混部
QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。
Crane 安装
环境准备
安装kubectl
kubectl官方文档:https://kubernetes.io/zh-cn/docs/tasks/tools/
安装helm
Helm官方文档:https://helm.sh/zh/docs/intro/install/
安装kind
kind官方文档:https://kind.sigs.k8s.io/docs/user/quick-start/#installation
安装docker
docker官方文档:https://docs.docker.com/get-docker/
安装Crane
以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana).
curl -sf https://raw.githubusercontent.com/gocrane/crane/main/hack/local-env-setup.sh | sh -
如果上面安装命令报网络错误,可以用本地的安装包执行安装,在命令行中执行以下安装命令:
bash installation/local-env-setup.sh
增加环境变量
export KUBECONFIG=${HOME}/.kube/config_crane
确保所有 Pod 都正常运行:
pod的启动需要一定的时间,可以等待几分钟之后再查看集群的状态是否都Running
kubectl get pod -n crane-system
访问Dashboard
kubectl -n crane-system port-forward service/craned 9090:9090
访问127.0.0.1:9090即可
展示页面
添加集群
资源推荐
使用智能弹性EffectiveHPA
Kubernetes HPA 支持了丰富的弹性扩展能力,Kubernetes 平台开发者部署服务实现自定义 Metric 的服务,Kubernetes 用户配置多项内置的资源指标或者自定义 Metric 指标实现自定义水平弹性。
EffectiveHorizontalPodAutoscaler(简称 EHPA)是 Crane 提供的弹性伸缩产品,它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。
- 提前扩容,保证服务质量:通过算法预测未来的流量洪峰提前扩容,避免扩容不及时导致的雪崩和服务稳定性故障。
- 减少无效缩容:通过预测未来可减少不必要的缩容,稳定工作负载的资源使用率,消除突刺误判。
- 支持 Cron 配置:支持 Cron-based 弹性配置,应对大促等异常流量洪峰。
- 兼容社区:使用社区 HPA 作为弹性控制的执行层,能力完全兼容社区。
Crane总结
总的来说,Crane是一个功能丰富,易于使用的管理工具。具有简单易用,实时监控,自动化管理,可视化分析等关键特点和功能。通过Crane,用户可以轻松创建、管理和部署容器化应用,实现应用的快速交付和高效运行。
关于腾讯云 Finops Crane 集训营:
Finops Crane集训营主要面向广大开发者,旨在提升开发者在容器部署、K8s层面的动手实践能力,同时吸纳Crane开源项目贡献者,鼓励开发者提交issue、bug反馈等,并搭载线上直播、动手实验组队、有奖征文等系列技术活动。既能让开发者通过活动对 Finops Crane 开源项目有深入了解,同时也能帮助广大开发者在云原生技能上有实质性收获。
为奖励开发者,我们特别设立了积分获取任务和对应的积分兑换礼品。
- 活动介绍送门:https://marketing.csdn.net/p/038ae30af2357473fc5431b63e4e1a78
- 开源项目: https://github.com/gocrane/crane