【腾讯云 Finops Crane 集训营】降本增效利器Crane应用实战

news2024/11/19 16:35:34

文章目录

  • 前言
  • 一、Crane是什么?
  • 二、Crane的特点
  • 三、Crane使用
    • 1、环境准备
      • 安装 kubectl
      • 安装 Helm
      • 安装 kind
      • 安装 Docker
    • 2、安装Crane
    • 3、访问dashboard
    • 4、页面展示
      • 集群总览
      • 成本洞察
      • 成本分析
    • 5、功能应用
      • 智能弹性 EffectiveHPA
      • 推荐规则
  • 四、Crane的优势
  • 总结
  • 参考文献


前言

很荣幸参加了由腾讯云联合CSDN推出的“腾讯云 Finops Crane 集训营”,在集训过程,从0到1体验了Crane平台的搭建,也积极参与github的发言,提交两个issue帮助提升体验感。好了,话不多说,下面跟着我一起走入Finops Crane。

FinOps(Financial Operations)是一种管理云计算成本的方法,它强调将云计算资源的成本与使用情况及业务需求相匹配,从而提高企业的效率和效益。在当前云计算环境下,FinOps已经成为了越来越多企业的管理方法。本文将会介绍Crane这个云计算成本管理工具,并详细介绍如何在实际应用中使用Crane进行云计算资源成本管理。
在这里插入图片描述


一、Crane是什么?

Crane是一个开源的云计算成本管理工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane可以帮助企业在云计算环境中实现资源成本的透明化管理,从而更好地控制成本,提高效益。Crane可以通过API将云计算资源的使用情况与成本进行关联,并提供实时的成本分析和预测功能。

在这里插入图片描述

Crane的出现可以解决K8S原生能力的不足:

  • 资源配置浪费
    基于经验的资源配置不准导致大量浪费
  • 弹性不及时
    基于阈值的弹性的滞后性导致业务来不及弹
  • 业务稳定性
    CPU是可压缩资源,CPU承压时,所有Pod等比受损,独占式绑核能力造成较大资源浪费

二、Crane的特点

在这里插入图片描述

  • 成本透明化
    Crane可以帮助企业在云计算环境中实现资源成本的透明化管理。它可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
  • 基于预测的水平弹性器
    EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社区 HPA 做底层的弹性控制,支持更丰富的弹性触发策略(预测,观测,周期),让弹性更加高效,并保障了服务的质量。
  • 推荐框架
    提供了一个可扩展的推荐框架以支持多种云资源的分析,内置了多种推荐器:资源推荐,副本推荐,HPA 推荐,闲置资源推荐。
  • 负载感知的调度器
    动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。
  • 拓扑感知的调度器
    Crane Scheduler与Crane Agent配合工作,支持更为精细化的资源拓扑感知调度和多种绑核策略,可解决复杂场景下“吵闹的邻居问题",使得资源得到更合理高效的利用。
  • 基于 QOS 的混部
    QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。
  • 易于使用
    Crane非常易于使用。它可以与各种云计算平台集成,并提供简单易懂的用户界面,使用户可以轻松地使用它来管理云计算资源的成本。
  • 开源
    Crane是一个开源的工具,它可以帮助企业在使用云计算资源时更好地管理成本。Crane的开源性质使得企业可以自由地使用它,并根据自己的需求进行二次开发。

三、Crane使用

1、环境准备

安装 kubectl

kubectl官方文档:https://kubernetes.io/zh-cn/docs/tasks/tools/
下载kubectl

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

下载kubectl的校验和文件:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"

根据校验和文件验证kubectl:

echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check

安装 Helm

Helm官方文档:https://helm.sh/zh/docs/intro/install/

下载

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

赋权

chmod 777 get_helm.sh

安装

./get_helm.sh

安装 kind

kind官方文档:https://kind.sigs.k8s.io/docs/user/quick-start/#installation

下载

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64

赋权

chmod +x ./kind

安装 Docker

docker官方文档:https://docs.docker.com/get-docker/
参考往期文章:docker安装部署实战详细手册

2、安装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

验证安装完成,服务都为running即可
在这里插入图片描述

3、访问dashboard

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

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

4、页面展示

集群总览

在这里插入图片描述

在这里插入图片描述

成本洞察

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

成本分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、功能应用

智能弹性 EffectiveHPA

Kubernetes HPA 支持了丰富的弹性扩展能力,Kubernetes 平台开发者部署服务实现自定义 Metric 的服务,Kubernetes 用户配置多项内置的资源指标或者自定义 Metric 指标实现自定义水平弹性。

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

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

测试验证
安装 Metrics Server:

kubectl apply -f installation/components.yaml

启动一个 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

增加负载:

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"

在这里插入图片描述
观察负载情况:

kubectl get hpa ehpa-php-apache --watch

在这里插入图片描述
随着请求增多,CPU利用率会不断提升,可以看到 EffectiveHPA 会自动扩容实例。

推荐规则

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

推荐规则查看:

kubectl get RecommendationRule

在这里插入图片描述
workloads-rule 这个推荐规则的资源对象如下所示:

  • 每隔 24 小时运行一次分析推荐,runInterval 格式为时间间隔,比如: 1h,1m,设置为空表示只运行一次。
  • 待分析的资源通过配置 resourceSelectors 数组设置,每个 resourceSelector 通过 kind、apiVersion、name 选择 K8s 中的资源,当不指定 name 时表示在 namespaceSelector 基础上的所有资源。
  • namespaceSelector 定义了待分析资源的命名空间,any: true 表示选择所有命名空间。
  • recommenders 定义了待分析的资源需要通过哪些 Recommender 进行分析。目前支持两种 Recommender:
    • 资源推荐(Resource): 通过 VPA 算法分析应用的真实用量推荐更合适的资源配置
    • 副本数推荐(Replicas): 通过 HPA 算法分析应用的真实用量推荐更合适的副本数量

四、Crane的优势

  • 1、实时监控成本
    Crane可以帮助企业实时监控云计算资源的使用情况,并将其与成本进行关联,提供实时的成本分析和预测功能。这样,企业就可以更好地控制成本,提高效益。
  • 2、优化资源利用率
    Crane可以帮助企业优化云计算资源的利用率。它可以帮助企业发现不必要的资源浪费,并提供优化建议,使企业可以更好地利用云计算资源,提高资源利用效率。
  • 3、提高决策效率
    Crane可以帮助企业更好地了解云计算资源的成本和使用情况。这样,企业就可以更好地做出决策,以满足业务需求,并在成本和效益之间取得平衡。
  • 4、智能预测
    Crane可以帮助企业完成流量智能预测,进行自动扩缩容,应对大促节假日等有规律的流量洪峰。

总结

经过一段时间的试用,说一下我对Finops Crane的个人看法。

首先从安装部署到落地实践测试的过程中,没有遇到什么疑难杂症,易用性非常好,无论是初学者还是专业人士,都可以很容易地上手使用。这使得Finops Crane在使用过程中非常方便,能够帮助用户更快地完成任务。

其次在UI页面的视觉上,清爽度很高、简约而又不简单,配置与管理上也很便捷,可以快速地进行参数设置和管理,包括一键带入、生成命令等功能。

再者在功能的体验上,确实很强大,包括成本的计算、弹性伸缩的预判、资源推荐等等让人眼前一亮,这使得公司很容易计算K8S的整体成本并减少资源的浪费。

最后有两个建议希望后续能够加强:

  • 加强用户社区的建设、加强品牌营销与推广。
    由于Finops Crane产品是一款新兴的产品,社区支持相对较弱。用户在使用过程中可能会遇到一些问题和困难,需要自己进行摸索和解决,可能会带来一些不便和障碍。
  • 加强产品的创新与技术研发,持续优化产品性能和用户体验。
    例如提升推荐命令的精准性、推荐页面异常情况等等

参考文献

  • Crane github:https://github.com/gocrane/crane
  • Crane官网: https://gocrane.io/

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

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

相关文章

『iperf3 』服务器连接速度测试(2023/02/16 最新版)

文章目录 一、简介1.1 我的测速需求1.2 iperf 二、安装iperf2.1 windows中下载与构建2.2 Ubuntu中下载与构建 三、测速3.1 连接速度测试3.2 服务器网速测试 一、简介 1.1 我的测速需求 我目前有2个需求: 测试服务器的上传、下载速度;测试与服务器的连…

hive数据库表基本操作

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 分区 [CLUSTERED BY (col_name, col_name, ...) 分桶 [SORTED BY (c…

ijkplayer音视频同步

接上篇: ijkplayer框架的集成( 从开始到优化秒开) 补充: ijkplayer - 拓展: 资料收集备用。 1、在弱网时使用 2、ijkplayer播放卡顿 3、如何支持https链接播放 4、如何降低ijkplayer延迟效应 5、ijkplayer中音…

javaIO流之文件流

目录 简介一、File的构造方法二、File的常用方法1、获取功能的方法2、绝对路径和相对路径3、判断功能的方法4、创建、删除功能的方法5、目录的遍历6、递归遍历 三、RandomAccessFile1、主要方法 四、Apache FileUtils 类1、复制文件或目录:2、删除文件或目录&#x…

提高运算放大器输出功率

运算放大器的串联:如何同时实现高精度和高输出功率 复合放大器 复合放大器由两个单独放大器组合而成,分别具有不同的特性。 图1所示就是这种结构。放大器1为低噪声精密放大器ADA4091-2。 在本例中,放大器2为AD8397,具有高输出功率&#xff…

召回/粗排阶段 负样本常见构造方法

文章目录 1、曝光未点击2、全局随机选择负例3、batch内随机选择负例4、曝光数据随机选择负例5、基于popularity随机选择负例6、基于hard选择负例大佬的总结: 大佬的名言:“如果精排是特征的艺术,那么召回就是样本的艺术(负样本为王…

linux 用mv替代rm将文件移动到回收站,避免误操作

有时候在linux上操作rm -rf 删除命令时,不下心就会将不想删除的文件给删除了,删完后,顿时傻眼了,比如 ,文件夹test下面有 a ,a1 ,b ,b2四个文件,本来想删除test文件夹下面的a和a1连个文件, 输入…

TCP、UDP原理、DNS协议、CDN原理

1. 如何理解UDP 和 TCP? 区别? 应用场景? 一、UDP UDP(User Datagram Protocol),用户数据包协议,是一个简单的面向数据报的通信协议,即对应用层交下来的报文,不合并,不拆分,只是…

Win10搭建Docker Desktop

Win10搭建Docker Desktop 1 介绍 Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序,为构建、交付和运行dockerized应用程序提供易于使用的开发环境。Docker Desktop for Windows 使用 Wi…

ChatGPT 插件,组合后更妙了

ChatGPT 插件,组合后更妙 大家好,我是章北海mlpy 昨天极简介绍了一些热门的ChatGPT插件 我测试了一些组合玩法,感觉效率、效果都远超预期。 今天就演示一下如何利用多个插件,高速阅读、理解一篇论文。 备注:一个C…

HTB靶机013-Poison-WP

013-Poison 靶机IP: 10.10.10.84 Scan Nmap 快速扫描: ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 10.10.10.84 -F Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-30 16:41 CST Nmap scan report for 10.10.10.84 Host is up (0.27s…

公牛车充拆解 | 拓尔微A+C双口快充方案IM2403+TMI3451

在快节奏的生活中,手机已成为人们不可或缺的工具。对于经常开车出门的人来说,在车上给手机充电已经成为刚需,因此车载充电器是很多车主的不二之选,它能便捷地解决手机在车内充电的问题,让车主在开车途中保持电量充足。…

MySQL高级_第10章_索引优化与查询优化

MySQL高级_第10章_索引优化与查询优化 1. 数据准备 学员表 插 50 万 条, 班级表 插 1 万 条。 步骤 1 :建表 CREATE TABLE class ( id INT ( 11 ) NOT NULL AUTO_INCREMENT , className VARCHAR ( 30 ) DEFAULT NULL , address …

FlinkKafkaProducer 源码分析

initializeState 先查询是否开启isCheckpointingEnabled配置,如果没开,但是使用了EXACTLY_ONCE或者AT_LEAST_ONCE语义,就报错。 然后从checkpoint中保存的state中读取nextTransactionalIdHintState。 NEXT_TRANSACTIONAL_ID_HINT_DESCRIPTOR…

表情、特殊字符、字符串截取

码元与码点 关于码元和和码点,通过一个例子进行介绍。 如图,字符串😊只有一个“笑脸”符号,但是通过length属性发现,“长度”为2,string.length到底表示什么? 答:码元的个数 什么是…

C语言爬取HTML-爬取壁纸 文末附源码

前言:这学期计算机软件课程设计的其中一个题目是使用C语言爬取HTML,本打算使用C语言的CSpidr库来实现,但是因为它的依赖liburi没有找到在哪里安装,所以放弃了这个想法,使用的是curl以及libxml2这两个库,能够…

这几款实用且有趣的软件不容错过

软件一:天若ocr 这款Windows平台的天若OCR文字识别工具一定更适合你。 软件作者来自天若游心,我爱破解。 发布一年半以来一直深受好评,更新速度也非常快。 最近,它增加了批次识别功能。 软件二:腾讯柠檬精简版 除了Q…

P2233 [HNOI2002]公交车路线

题目描述 在长沙城新建的环城公路上一共有 8 个公交站,分别为 A、B、C、D、E、F、G、H。公共汽车只能够在相邻的两个公交站之间运行,因此你从某一个公交站到另外一个公交站往往要换几次车,例如从公交站 A 到公交站 D,你就至少需要…

keycloak介绍与使用示例,超时时间设置

keycloak介绍 Keycloak是一款由Red Hat开源社区开发的开放源代码的身份和访问管理解决方案,它提供了安全的单点登录(SSO)、多因素身份验证、社交登录和基于角色的访问控制等功能Keycloak基于OAuth 2.0和OpenID Connect协议,并支持SAML 2.0,可…

spring Bean的循环依赖问题

public class Husband {private String name;private Wife wife;public void setName(String name) {this.name name;}public String getName() {return name;}public void setWife(Wife wife) {this.wife wife;}// toString()方法重写时需要注意:不能直接输出wif…