【腾讯云FinOps Crane 集训营】 Crane入门

news/2024/12/22 15:23:26/

前言

随着云计算的快速发展和云原生应用的兴起,容器技术成为了现代化应用部署和管理的重要工具。

越来越多的公司正在选择将应用运行在云上或者自建的 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


http://www.ppmy.cn/news/85967.html

相关文章

软件测试基础知识整理(八)- 软件缺陷

目录 一、软件缺陷 1.1 缺陷定义 1.2 缺陷判定标准 1.3 软件缺陷产生的原因 1.4 软件缺陷产生的根源 1.5 软件缺陷信息 1.5.1 缺陷状态 1.5.2 缺陷严重程度 1.5.3 缺陷优先级 1.6 缺陷报告模板 1.7 缺陷报告注意事项 1.8 缺陷跟踪流程 1.9 缺陷数据分析关注的问题 …

我的创作纪念日 - 拥抱AI时代

思考三个可行的用AI创业方案,且每个方案的成本控制到不超500美元 1. 基于机器学习的翻译工具 执行步骤: 使用机器学习技术,如神经网络,构建翻译模型 将翻译功能整合到网站或App上,实现智能在线翻译 不断优化并添加新…

基于BES2300 SDK平台数字音频信号算法处理实验

++v hezkz17进数字音频系统研究开发交流答疑 1 可以对提示音音频数据进行滤波处理。 2 可以对BT音频流数据进行滤波处理。 3 可以对通话音频流数据进行滤波处理。 4 可以对外置Line-in ADC I2S/TDM 数据进行滤波处理。 下面是一个使用C语言实现的IIR音频高通滤波器算法: #i…

电子科技大学编译原理复习笔记(三):控制结构

目录 前言 重点一览 语句级控制结构 单元级控制结构 四种单元级控制结构 本章小结 前言 本复习笔记基于张老师的课堂PPT,供自己期末复习与学弟学妹参考用。 重点一览 语句级控制结构 定义:用来构造各种语句执行顺序的机制 传统三种语句级控制结…

ChatGPT 插件清单(中文版)

整理了一份ChatGPT插件清单,部分插件可能已下线,也可能不在列表中。除了这份清单外,还整理了一份:ChatGPT学习指南 欢迎大家转发、收藏、点赞支持!谨防失联! 插件名称功能基本提示高级提示KeyMate.AI搜索使…

ADC模数转换器

目录 逐次逼近型ADC 原理图 ADC基本框图​编辑 输入通道 ​编辑 转换模式 ADC触发控制​编辑 数据对齐 ​编辑 采样时间 校准 硬件电路 来源b站江科大stm32入门教程 逐次逼近型ADC 原理图 规则组最好要和DMA一起使用 ADDCLK来自ADC预分频器 ,根据下图看出&…

12-BOM-使用 js 定时器实现倒计时功能

可以使用定时器 setInterval() 或 setTimeout() 来实现倒计时功能。这两个方法的作用类似&#xff0c;都用于周期性地调用函数。 下面是一个实现倒计时十秒的例子&#xff1a; <!DOCTYPE html> <html> <head><title>倒计时</title><meta ch…

体验使用 InsCode AI 创作助手 来帮我完成一篇博客

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 InsCode AI 创作助手 它来啦回答不满意可以要求重新生成在输入 prompt 时&#…