【腾讯云 FinOps Crane 集训营】Crane平台介绍与实践

2023-10-22 04:59

本文主要是介绍【腾讯云 FinOps Crane 集训营】Crane平台介绍与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家,51CTO明日之星
📌 擅长领域:全栈工程师、爬虫、ACM算法

🤞Crane平台介绍与实践总结🤞

⛳⛳⛳

📗Crane简介

Crane是一个开源的容器编排工具 ,Crane提供了一种简单而灵活的方式来管理容器应用程序的生命周期,包括构建、部署、运行和维护。它支持多个容器编排引擎,如Docker Compose、Kubernetes和Mesos等。

主要功能

  • 🎈容器编排:
    Crane支持使用多种容器编排引擎来管理容器应用程序的生命周期,包括Docker Compose、Kubernetes和Mesos等。

  • 🎈容器构建和发布:
    Crane提供了简单而灵活的方式来构建和发布容器镜像,支持使用模板和插件来自定义构建流程。

  • 🎈应用程序部署和管理:
    Crane支持将多个容器组合成一个完整的应用程序,并提供了灵活的网络和存储选项,以便更好地管理和扩展应用程序。

  • 🎈配置管理:
    Crane使用简洁明了的配置文件格式来管理容器应用程序的配置,同时还支持使用环境变量和参数来动态配置应用程序。

  • 🎈监控和日志记录:
    Crane提供了集成的监控和日志记录功能,可以帮助开发者及时发现和解决应用程序的问题。

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

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

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

整体架构

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 部署在集群的节点上。
    在这里插入图片描述

📗基于Kubernetes+Crane的实践

随着云原生技术的发展,越来越多的公司正在选择将应用运行在云上或者自建的 Kubernetes 集群上,但是许多机构的调研发现,绝大多数的用户集群资源利用率并不高,使用Crane帮你快速提升资源利用率。

快速搭建一个基于Kubernetes+Crane的环境优化你的集群和应用。

实验涉及技术总结:

  1. Kubernetes:Kubernetes是用于自动部署、扩展和管理“容器化应用程序”的开源系统。
  2. Crane:Crane 是一个基于 FinOps 的云资源分析成本优化平台,Crane提供了一种简单而灵活的方式来管理容器应用程序的生命周期,包括构建、部署、运行和维护。它支持多个容器编排引擎,如Docker Compose、Kubernetes和Mesos等。使用Crane,您可以轻松地将多个容器组合成一个完整的应用程序,并在集群中进行管理和扩展。
  3. Prometheus:Prometheus是一个开源的系统监控和报警系统,一种在大规模分布式系统中进行度量、收集和聚合数据的标准方法。Prometheus使用一种称为PromQL的自定义查询语言来查询和分析收集的数据,并提供了图形化的Web界面和API。
  4. Grafana:Grafana是一个流行的开源数据可视化和监控平台,最初由Torkel Ödegaard于2013年创建。它可以连接多个数据源,包括Prometheus、InfluxDB、Elasticsearch、MySQL等,并使用图表、仪表盘、警报等工具进行数据可视化和分析。

🍮环境准备

  • 安装 kubectl

    curl.exe -LO "https://dl.k8s.io/release/v1.27.1/bin/windows/amd64/kubectl.exe" (WINDOWS环境)
    

    其它系统参考对应的文档安装 kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/

  • 安装 Helm

    choco install kubernetes-helm  (windows环境)
    

    其它系统参考对应的文档安装 Helm:https://helm.sh/zh/docs/intro/install/

  • 安装 kind

    choco install kind (windows环境)
    

    其它系统参考对应的文档安装 kind:https://kind.sigs.k8s.io/docs/user/quick-start/#installation

  • 安装 Docker
    安装kind的过程中会直接安装docker,如果没有安装在官网下载安装:https://docs.docker.com/get-docker/
    注意windows上需要开始硬件虚拟化支持和数据保护机制。

🍮安装 Crane

安装本地的 Kind 集群和 Crane 组件:以下命令将安装 Crane 以及其依赖 (Prometheus/Grafana).
在线安装和本地安装二选一
1.在线安装

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

2.本地安装(安装包为固定格式的,如公司使用,需要自行配置)
需要用的安装包都在这了:点击下载

# 必须在 installation 的上级目录例如:我们预设好的 training 跟目录中执行
# Mac/Linux
bash installation/local-env-setup.sh
# Windows(git bash中打开)
./installation/local-env-setup.sh

确保所有 Pod 都正常运行:

$ export KUBECONFIG=${HOME}/.kube/config_crane
$ kubectl get pod -n crane-systemNAME                                             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
添加本地集群:
在这里插入图片描述

🍮使用智能弹性 EffectiveHPA

  1. 安装Metrics Server

    用以下命令安装 Metrics Server:

    kubectl apply -f installation/components.yaml
    kubectl get pod -n kube-system
    
  2. 创建测试应用

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

    kubectl apply -f installation/php-apache.yamlkubectl apply -f installation/nginx-deployment.yaml
    
  3. 创建 EffectiveHPA

    kubectl apply -f installation/effective-hpa.yaml
    
  4. 运行以下命令查看 EffectiveHPA 的当前状态:

    kubectl get ehpa
    

    输出类似于:

    NAME         STRATEGY   MINPODS   MAXPODS   SPECIFICPODS   REPLICAS   AGE
    php-apache   Auto       1         10                       0          3m39s
    
  5. 增加负载
    在单独的终端中运行它
    如果你是新创建请配置环境变量

    export KUBECONFIG=${HOME}/.kube/config_crane$env:KUBECONFIG="${HOME}/.kube/config_crane" (whindows使用这个)# 以便负载生成继续,你可以继续执行其余步骤
    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_cranekubectl get hpa ehpa-php-apache --watch

成本展示:
在这里插入图片描述
在这里插入图片描述

🍮使用Grafana

登陆 Grafana 的方式可以通过以下命令建立一个 port-mapping:

# 如果你是新创建请配置环境变量 
export KUBECONFIG=${HOME}/.kube/config_cranekubectl -n crane-system port-forward service/grafana 8082:8082

🥽 访问本地 Grafana(账号密码:admin/admin): http://127.0.0.1:8082/grafana/login

创建 RecommendationRule 配置后,RecommendationRule 控制器会根据配置定期运行推荐任务,给出优化建议生成 Recommendation 对象,然后我们可以根据优化建议 Recommendation 调整资源配置。

比如我们这里集群中已经生成了多个优化建议 Recommendation 对象。

kubectl get recommendations -A
NAME                            TYPE       TARGETKIND    TARGETNAMESPACE   TARGETNAME       STRATEGY   PERIODSECONDS   ADOPTIONTYPE          AGE
workloads-rule-resource-8whzs   Resource   StatefulSet   default           nacos            Once                       StatusAndAnnotation   34m
workloads-rule-resource-hx4cp   Resource   StatefulSet   default           redis-replicas   Once                       StatusAndAnnotation   34m

在 dashboard 的资源推荐页面也能查看到优化建议列表。
在这里插入图片描述
优化应用配置
在 dashboard 中开箱后就可以看到相关的成本数据,是因为在添加集群的时候我们安装了推荐的规则。

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

在成本分析>推荐规则页面可以看到我们安装的两个推荐规则。
在这里插入图片描述

🍮实践环境清除

动手实践完成后,可以将本地的集群清理删除:

kind delete cluster --name=crane

🍚总结

以上是关于Crane的介绍与应用实践,具体的使用详情可移步官方仓库了解:https://github.com/gocrane/crane
通过动手实践收获:
通过本次实践,熟悉Crane的基本概念和使用方法,使用多个容器编排引擎来管理容器应用程序,通过使用crane与Grafana以及Prometheus联合使用,充分体现出Crane不仅简单易用,可视化操作。

  • 简单易用:Crane提供了简单易用的命令行工具和配置文件格式,使得用户可以快速地构建和部署容器化应用程序。
  • 灵活性高:Crane提供了丰富的配置选项和插件,用户可以根据实际需求自定义构建流程和容器编排引擎。
  • 生态系统完备:Crane与其他工具和技术生态系统相集成,如Docker、Kubernetes、Prometheus等,可以满足各种应用场景和需求。
  • 开放源代码:Crane是一款完全开放源代码的容器编排工具,用户可以根据自己的需求进行修改和定制,官方仓库地址。

Crane是一个灵活性高、易于使用的容器编排工具,可以帮助开发者更加高效地构建、部署和管理容器化应用程序。

🍚Crane 使用方向建议

DevOps:Crane可以用于DevOps自动化流程中,帮助开发团队更加高效地构建、测试和部署应用程序。

云原生应用程序:Crane可以用于构建和管理云原生应用程序,这些应用程序通常是分布式的、可扩展的和高可用的。

容器化微服务:Crane可以用于管理容器化的微服务,帮助开发者更加容易地部署、升级和管理微服务架构。

大规模集群:Crane可以用于大规模集群的部署和管理,例如使用Kubernetes等容器编排引擎管理的集群。

这篇关于【腾讯云 FinOps Crane 集训营】Crane平台介绍与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/259173

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}