【腾讯云 Finops Crane 集训营】安装使用及EHPA弹性演示

news2024/11/26 8:41:47

随着时间的推移,降本增效成为了企业界和组织中的一个新口号。在2023年,这个口号进一步获得了广泛的认可和重要性,成为了许多组织在业务运营中的关键目标。在2023年,许多组织开始将降本增效作为战略性目标,并将其融入到整个组织的文化和运营流程中。这需要组织内部的各个部门和团队共同努力,从高层管理层到基层员工,都需要意识到降本增效的重要性,并为之努力。
降本增效的方法多种多样,其中一个关键领域是技术和数字化转型。组织通过采用新技术、数字化工具和自动化流程来改进业务流程和运营效率。例如,采用先进的数据分析和人工智能技术,组织可以更好地理解和优化成本结构,找到潜在的成本节约机会。同时,云计算和容器化技术如Kubernetes等的应用,也为降本增效提供了新的机会,通过资源优化和自动化管理来降低成本并提高效率。
那么今天就为大家介绍Crane

什么是Crane?

Crane 是一个基于 FinOps 的云资源分析与成本优化平台。它的愿景是在保证客户应用运行质量的前提下实现极致的降本。

Crane 的整体架构如下:

架构

Craned

Craned 是 Crane 的最核心组件,它管理了 CRDs 的生命周期以及API。Craned 通过 Deployment 方式部署且由两个容器组成:

  • Craned: 运行了 Operators 用来管理 CRDs,向 Dashboard 提供了 WebApi,Predictors 提供了 TimeSeries API
  • Dashboard: 基于 TDesign’s Starter 脚手架研发的前端项目,提供了易于上手的产品功能

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的主要功能

成本可视化和优化评估

  • 提供一组 Exporter 计算集群云资源的计费和账单数据并存储到你的监控系统,比如 Prometheus。
    多维度的成本洞察,优化评估。通过 Cloud Provider 支持多云计费。
    推荐框架

  • 提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐。

基于预测的水平弹性器

EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。

负载感知的调度器

动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。

拓扑感知的调度器

Crane Scheduler与Crane Agent配合工作,支持更为精细化的资源拓扑感知调度和多种绑核策略,可解决复杂场景下“吵闹的邻居问题",使得资源得到更合理高效的利用。

基于 QOS 的混部

QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。

快速体验:

Crane Dashboard 在线 Demo: http://dashboard.gocrane.io/

安装及使用


单机简易版(kind)

官方训练营的实验手册访问地址:
https://www.aliyundrive.com/s/kn1bWt3ECah

官方为大家提供了一个实验手册,采用的是Kind部署的单节点,方便大家快速的跑通实验,仅需一条命令即可

运行本地的 Kind 集群和 Crane 组件
以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana).

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

export KUBECONFIG=${HOME}/.kube/config_crane
kubectl get deploy -n crane-system

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

自定义集群

建议使用kubernetes v1.25以前的版本,在安装手册上有明确的提示
在这里插入图片描述

修改脚本

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

# 修改crane_kubeconfig变量为,原本是 config_crane
CRANE_KUBECONFIG="${HOME}/.kube/config"

# 注释掉68 69的kind命令

在这里插入图片描述

然后再直接运行脚本即可,最终呈现效果如图
在这里插入图片描述

端口映射

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

在这里插入图片描述

EHPA智能弹性

EffectiveHorizontalPodAutoscaler(简称 EHPA)是 Crane 提供的弹性伸缩产品,它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。

  • 提前扩容,保证服务质量:通过算法预测未来的流量洪峰提前扩容,避免扩容不及时导致的雪崩和服务稳定性故障。
  • 减少无效缩容:通过预测未来可减少不必要的缩容,稳定工作负载的资源使用率,消除突刺误判。
  • 支持 Cron 配置:支持 Cron-based 弹性配置,应对大促等异常流量洪峰。
  • 兼容社区:使用社区 HPA 作为弹性控制的执行层,能力完全兼容社区。

案例演示

该案例是官方提供的一个演示案例,展示的是随着请求增加,CPU负载会逐渐增高,通过EHPA,会自动扩容,增加或减少Pod,保持弹性和高效以及服务质量

安装Metrics Server

kubectl apply -f installation/components.yaml
kubectl get pod -n kube-system

创建测试应用

用以下命令启动一个 Deployment 用 hpa-example 镜像运行一个容器, 然后将其暴露为一个 服务(Service):

kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/php-apache.yaml
kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/analytics/nginx-deployment.yaml

创建 EffectiveHPA

kubectl apply -f https://raw.githubusercontent.com/gocrane/crane/main/examples/autoscaling/effective-hpa.yaml

运行以下命令查看 EffectiveHPA 的当前状态:

kubectl get ehpa

在这里插入图片描述

生成负载

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"

在这里插入图片描述

观察ehpa

kubectl get hpa ehpa-php-apache --watch

通过下图可以看到,当流量负载上来的时候,Ehpa会自动扩容,以降低目标值负载,在流量停止的时候,会自动缩容,以降低到MinPods,实现整个服务的弹性和高效以及高可用

在这里插入图片描述

总结

作为一个k8s的初学者,很巧的赶上了这次的活动,通过这次活动有幸了解到了crane,大致清楚了crane的功能及其特性,同时增本增效的确是一个很重要的点,通过Crane仪表盘,用户可以很清晰的看到整个kubernetes集群的使用情况以及成本,还可以通过平台推荐的规则进行管理,从而实现降本的需求。同时我也使用了Steampipe.io,其成本查询和gocrane中的Fadvisor有一点相似,不过从最终目标来看,Fadvisor似乎更有优势,Comparator 是云原生多云比价器,能够自动识别平台的工作负载类型,划分为 serverless 和 serverful 工作负载,并生成推荐资源规格,最后给出合理的迁移策略和成本费用优化。

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

活动介绍送门:https://marketing.csdn.net/p/038ae30af2357473fc5431b63e4e1a78

开源项目: https://github.com/gocrane/crane

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.fabric二进制工具包介绍

(1)Fabric二进制工具包: Fabric二进制工具包:Fabric二进制工具包(Fabric Binary Distribution)是Hyperledger Fabric的核心组件,它包含了一系列可执行的二进制文件,用于搭建、管理和操作Fabric网络。该工具包提供了一套命令行工具,可以执行各种与Fabric网络相关的任务…

模板(初阶)

目录 一、泛型编程二、函数模板2.1 函数模板的概念2.2 函数模板的格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 三、类模板3.1 类模板的定义格式3.2 类模板的实例化 一、泛型编程 如何实现一个通用的Swap函数 void Swap(int& x, int& y) {int …

chatgpt赋能Python-pythonapp自动化

Python App自动化:优化SEO的终极解决方案 随着互联网的发展,SEO(搜索引擎优化)变得日益重要。对于任何网站或应用程序开发人员来说,SEO应该是一个非常重要的考虑因素。为了帮助开发人员和企业提高其在线可见性&#x…

Squid代理服务器应用

在web架构中,用户一般进入负载均衡层,通过调度来访问web应用层,但是如果访问量太大,并发量较高,web应用层会吃不消,我们把静态资源、经常要访问的资源放入缓存,用户直接访问缓存层,加…

解析使用FPGA逻辑实现FIR滤波器的几种架构

有限脉冲响应(finite impulse response,FIR)数字滤波器 一、FIR数字滤波器理论介绍 FIR滤波器的实质就是输入序列与系统脉冲响应的卷积,即: 其中,N为滤波器的阶数,也即抽头数;x(n)为第n个输入序列&#xff…

人工智能轨道交通行业周刊-第45期(2023.5.15-5.21)

本期关键词:动车洗澡、热备列车、火车司机室、无缝线路、图像分割、自动标注 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道…

Linux开发工具:yum和vim的使用

目录 一. Linux下的软件 1.1 软件安装的三种方法 1.2 采用yum安装软件 1.3 yum源的问题 二. vim开发工具的使用 2.1 vim的三种基本模式 2.2 命令模式下vim的常用指令 2.2.1 定位相关指令 2.2.2 光标移动相关指令 2.2.3 插入相关指令 2.2.4 复制粘贴相关指令 2.2.5 替…

Tauri应用开发(三):自定义拖拽区域

1. 自定义拖拽:data-tauri-drag-region tauri默认的顶部可拖拽,有时候我们不需要这个拖拽,或者需要自定义拖拽区域时,就需要通过tauri提供的data-tauri-drag-region属性来自定义拖拽区。 ![在这里插入图片描述](https://img-blog…

基于Python的图书信息管理系统

1引言 进入21世纪以来,信息技术从根本上推动了图书馆的飞速发展,计算机和计算机管理系统已成为图书馆进行图书管理的主要设备和系统。虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分…

【Python 虚拟环境创建】解决遇到的问题并在vscode上测试

目录 一、前提准备 二、python虚拟环境创建 解决问题:‘virtualenv’/‘mkvirtualenv‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决问题:pycharm终端提示无法加载文件 E:\software\python_pycharm\venv\Scripts\activat…

Kuberntes云原生实战09 Kubernetes高可用安装小结

大家好,我是飘渺。 今天咱们继续更新Kubernetes云原生实战系列,本节文章是我们在安装过程中可能会遇到的问题以及解决方法。(都是我踩过的坑,你们大概率也会遇到~) 1. kubesphere平台无法使用kubectl命令行工具 问题现象 如果你给你的KubeSphere在Nginx上配置了域名访…

【2023 雷泽杯 · Misc】png的秘密

一个关于png结构的题目 一、题目 一张打不开的png文件,唉。 二、解题思路 少了头,就给他加上。我比较笨,还是萌新,采用导出16进制,添加后,010editor导入16进制。 添加之后,顺眼多了。然后用png…

阿里云服务器 之 mqtt服务器搭建及使用

本文主要是对mqtt的学习使用,其中服务器是基于阿里云服务器的mqtt功能,客户端使用的是mqttx软件。 一、服务器部分搭建说明 1、如果是首次使用,则需要经过注册与认证的步骤。 2、找到"产品与服务"-->"物联网平台"&…

DAY 60 mysql的备份与恢复

数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 数据库备份…

redis 高可用与优化

一、Redis高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提…

成绩管理系统

系列文章 任务28 成绩管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试读入数据浏览全部信息增加学生信息保存数据删除学生信息修改学生…

加密与解密 基础篇/win API/小端序大端序

1.1加密和解密的概念 是侧重于windows 的加密保护和解密技术 首先我们先要了解 软件逆向工程 可执行程序->反编译->源代码这就是逆向工程 接着 逆向分析技术是什么 静态调试 和动态调试 主要分为这俩类1.通过软件的执行 来分析程序 我们可以通过阅读程序的执行 或…

这个Set接口真牛逼

偶然间看到 java.util 包下的 Set 接口,看着好搞笑哈哈哈哈哈哈哈 包括了如下几个方法: 创建包含0个元素的不可修改的Set集合创建包含1个元素的不可修改的Set集合创建包含2个元素的不可修改的Set集合创建包含3个元素的不可修改的Set集合创建包含4个元素…

ROS:laser激光雷达数据格式、发送laser数据、订阅laser数据

一.激光雷达数据格式 图片来源:ROS-订阅与处理激光雷达scan话题_ros激光雷达数据处理_zhhao1326的博客-CSDN博客 # 测量的激光扫描角度,逆时针为正 # 设备坐标帧的0度面向前(沿着X轴方向) Header header # Header也是一…

Java学习路线(8)——面向对象基础(2)

一、static关键字 概念: static是静态的意思,可以修饰成员变量和成员方法。当修饰成员变量时,在内存中只存储一份,可以被共享访问、修改。当修饰成员方法时,可以被共享访问,也被称为公共方法。 静态成员变…