编程自己做网站/企业网络组建方案
1. 方案背景和挑战
在传统的云环境中,通常存在着不同的技术栈,支撑多样化的计算服务,具体如下:
① OpenStack环境与虚拟化云主机及裸金属服务
OpenStack是一个开源的云计算管理平台项目,它提供了部署和管理大规模计算、存储、网络等基础设施的一整套软件堆栈。在OpenStack技术栈中,Nova服务主要负责管理虚拟化云主机,而Ironic服务则专注于裸金属资源的管理。
② Kubernetes环境与容器服务
Kubernetes(简称K8s)是广受欢迎的容器管理平台,是行业内的事实标准,主要用于自动化容器应用的部署、扩展和管理。Kubernetes技术栈围绕容器化应用构建,通过其核心组件如kubelet、kube-apiserver、scheduler等,实现了容器资源的高效调度与管理。
虚拟化云主机、裸金属、容器这三种计算服务及其对应的资源池通常独立运行和管理,各自遵循不同的管理和调度规则。
这种分池管理的方式虽然在一定程度上保证了资源的专属性和安全性,但也构成了一个明显的瓶颈,严重制约了资源的灵活性、扩展性和整体利用率,对运营效率和成本控制带来了多重挑战。以下是对这一问题的深入剖析:
1.1. 扩展性受限
在分池管理的框架下,业务的可扩展性受到了严重制约。首先,由于资源池的容量是固定的,当某一资源池的资源即将耗尽时,即便其他类型的资源池中尚有大量闲置资源,也无法实现快速调配。其次,资源池的扩容往往需要人工介入,包括资源的重新规划、配置、测试等一系列繁琐流程,不仅耗时费力,还可能因为预判失误导致资源闲置或供给不足,从而影响业务的连续性和服务质量。这种扩展性差的问题,使得企业在面对市场变化和业务增长时,难以做到敏捷响应和快速扩张,进而错失商机。
1.2. 资源分配僵化与切换困难
资源池之间的独立管理进一步加剧了资源分配的僵化,使得在不同资源池之间进行资源切换或重新分配变得异常困难。例如,在虚拟机资源池接近满负荷运行的同时,裸金属资源池可能仍存在大量未充分利用的节点,但由于缺乏有效的资源池间通信和资源共享机制,这些裸金属节点无法被快速转换为虚拟机资源,以缓解虚拟机资源池的压力。这种资源分配的不灵活性不仅限制了系统的弹性伸缩能力,还导致了资源的冗余和浪费。
1.3. 整体资源利用率低下
资源池的独立管理导致了资源利用率的显著下降。由于各资源池之间的资源无法实现共享,即便某些资源池存在资源过剩的情况,也无法有效支援资源紧张的池子,从而造成了资源分配的不平衡。例如,容器资源池中创建的节点可能只承载了少量的容器应用,而与此同时,虚拟机资源池却可能面临严重的资源挤兑现象,导致新虚拟机的创建受阻。这种资源孤岛现象不仅降低了整体资源的使用效率,还可能引发一系列连锁反应,如服务延迟、性能下降和客户满意度降低等问题。
综上所述,传统云环境中资源池的独立管理方式暴露出了一系列问题,包括扩展性差、资源分配不灵活和资源利用率低等,这些问题共同构成了云计算资源管理的一大难题。为了解决这一挑战,业界正在积极探索和实践资源池融合、自动化资源调度和智能资源配置等创新技术,以期实现资源的高效利用和灵活调度,推动云计算基础设施向着更加智能、弹性和经济的方向发展。
2. 方案介绍
2.1. 整体方案架构
为了解决上述问题,我们提出了基于DPU的云原生计算资源共池管理解决方案,结合了DPU的硬件优势与Kubernetes的能力和插件生态,在Kubernetes架构下实现了虚拟机、裸金属和容器资源的无缝整合与统一管理,可以实现当某一类资源池(如虚拟机资源池)面临资源紧张时,系统能够自动从共享资源池中调用资源,实现Worker节点的快速扩容,而当资源需求下降时,又能够智能缩容,将多余Worker节点回收至共享池中,确保资源的按需分配与适时释放。
本方案中包括了BareMetalManager,这是基于DPU的裸金属管理软件包,由bm-controller、bm-api、bm-handler三个组件组成。它负责管理裸金属机器的生命周期,实现裸金属服务器的无盘启动、云盘的动态热插拔以及网卡动态热插拔。BareMetalManager 将裸金属服务器作为 k8s资源进行统一管理,从而提升裸金属服务器的管理效率,并为虚拟机、容器资源池Worker节点的快速部署提供基础保障。
本方案的核心部分包括资源池状态感知、评估和调度,基于Kubernetes Cluster AutoScaler进行设计,其整体架构如下:
该架构主要是由以下几个核心组件完成:
- AutoScaler:核心模块,负责集群节点及Pod信息检查,调用扩缩容功能。
- Estimator:负责评估worker节点扩容需求,进行Pod预调度。
- Simulator:负责评估worker节点缩容需求,模拟节点缩容。
- Yusur Cloud Provider:负责将裸金属资源注册到为供Cluster AutoScaler扩缩容使用的NodeGroup。管理裸金属实例的创建和删除,并将裸金属实例加入或移出 Kubernetes 集群。
2.2. 方案详细描述
本节主要对云原生计算资源共池管理方案的核心部分,即Cluster AutoScaler模块、扩缩容逻辑以及cloud provider进行介绍。
2.2.1. AutoScaler
AutoScaler启动后触发循环控制逻辑。每10s执行一次,检测集群状态,决定是否执行扩容或缩容操作。整体流程图如下:
从流程图中可以看到,AutoScaler关键逻辑为发现node,pod以及cloud provider信息。经过几个模块处理,将因资源不足导致未调度的pod缓存起来。然后进行下一步判断,是否需要调用ScaleUp或者ScaleDown进行扩缩容控制。
2.2.2. ScaleUp
ScaleUp是AutoScaler评估后需要执行扩容操作后调用的模块,其流程图如下:
从流程图中可以看到,当AutoScaler检测到需要进行扩容操作后,ScaleUp还是会进行一些基础检查,如当前计算节点数量是否达到最大限制、扩容后资源是否超限等前置检查。然后通过调用Estimator,进行Pod预调度,进行扩容决策,最终选出一个NodeGroup,从该NodeGroup中申请节点对k8s集群进行扩容。
当集群中有多个 Node Group 可供选择时,可以通过expander选项配置选择 Node Group 的策略,支持如下三种方式:
- random:随机选择;
- most-pods:选择容量最大(可以创建最多 Pod)的 Node Group;
- least-waste:以最小浪费原则选择,即选择有最少可用资源的 Node Group。
2.2.3. ScaleDown
ScaleDown是AutoScaler评估后需要执行缩容操作后调用的模块,其流程图如下:
从流程图中可以看出,缩容也会进行前置检查。缩容过程中最重要的是检查需要驱逐pod再移除相应节点的流程。当节点上需要驱逐Pod才能回收时,会调用Simulator模拟Pod驱逐,为被需要驱逐的Pod寻找可调度节点。由于在删除worker节点时会发生Pod重新调度的情况,所以应用必须可以容忍重新调度和短时的中断(比如使用多副本的 Deployment),当满足以下条件时,worker节点不会删除:
- 节点上有pod被PodDisruptionBudget(PDB)控制器限制,PDB是k8s中的一种资源,它为 Pod 提供了一种保护机制;
- 节点上有命名空间是kube-system的pods;
- 节点上的pod不是被控制器创建,例如不是被deployment, replicaset, job, statefulset创建;
- Pod 使用了本地存储;
- 节点上pod驱逐后无处可去,即没有其他worker节点能调度这个pod;
- 节点有注解:”cluster-autoscaler.kubernetes.io/scale-down-disabled“:“true”,可以通过给节点打上特定注解保证节点不被Cluster AutoScaler删除;
- 配置 `cluster-autoscaler.kubernetes.io/safe-to-evict=false 注解,可以确保 pod不被驱逐,pod所在 worker节点不被缩减。
2.2.4 Yusur Cloud Provider
yusurCloudProvider会在Cluster AutoScaler初始化的过程中进行注册NodeGroup信息,在执行ScaleUp和ScaleDown后得到实际的调用。其具体流程如下:
其中将裸金属资源添加到集群共享资源池(NodeGroup),可以根据指定规则(如机型、CPU 等)将其划分为多个组。每个 NodeGroup 需要包含当前组中机器的详细配置,用于扩容过程中的模拟调度。
扩容与缩容操作中,裸金属实例的生命周期由BareMetalManager控制。
3. 方案优势
本解决方案针对传统云环境中资源池独立管理的挑战,提出了创新的资源共池管理机制,旨在大幅提升资源的灵活性、效率和利用率,以下是该方案的三大核心优势:
3.1. 增强业务可扩展性与弹性
该方案通过构建统一的资源池,打破了不同资源类型之间的界限,实现了资源的动态调配与共享。当某一资源类型(如虚拟机)面临资源瓶颈时,系统能够自动从共享资源池中申请额外资源,快速扩容以满足业务需求。反之,在资源空闲时,又能自动缩容,将多余的资源节点归还至共享池,避免了资源浪费。这种机制显著增强了业务的可扩展性和弹性,使得企业能够更加从容地应对业务波动和突发流量,提高服务的连续性和用户满意度。
3.2. 提升资源分配的灵活性与效率
通过资源共池管理,实现了资源的自动化和智能化分配,显著提升了资源分配的灵活性与效率。不再局限于固定资源池的限制,系统能够根据实时的资源需求和业务负载,自动在共享资源池中寻找最优的资源匹配,进行即时的资源调度。这种动态分配机制不仅简化了资源管理的复杂度,还极大地提高了资源分配的精准度和响应速度,使得资源能够更加高效地服务于业务需求,减少人为干预,提升整体运维效率。
3.3. 最大化资源利用率,降低成本
云原生计算资源共池管理解决方案通过打破资源池之间的壁垒,实现了资源的全局优化与共享,有效解决了资源孤岛问题,大幅提高了资源的整体利用率。在传统模式下,由于资源池的独立管理,资源分配往往呈现出不均衡状态,导致部分资源长期闲置。而共池管理方案能够根据实际需求动态调整资源分配,避免了资源的冗余和浪费,从而显著降低了企业的运营成本。此外,通过智能的资源调度算法,该方案还能进一步挖掘资源潜力,提升资源使用效率,为企业带来更大的经济效益。
基于DPU的云原生计算资源共池管理解决方案通过实现资源的统一管理、动态调配与智能优化,有效解决了传统云环境中资源管理的痛点,为构建更加灵活、高效和经济的云基础设施提供了有力支撑。
本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。
相关文章:

基于DPU的云原生计算资源共池管理解决方案
1. 方案背景和挑战 在传统的云环境中,通常存在着不同的技术栈,支撑多样化的计算服务,具体如下: ① OpenStack环境与虚拟化云主机及裸金属服务 OpenStack是一个开源的云计算管理平台项目,它提供了部署和管理大规模计…...

Bugly并非无所不能
在 iOS 应用因为内存占用过大而被系统 killed 的情况下,Bugly 以及大多数崩溃报告工具是无法捕获到这种类型的崩溃信息的。原因在于,当系统由于内存压力过大而终止应用时,是直接将应用进程杀死,不会触发常规的崩溃处理流程&#x…...

2024年信息系统项目管理师1批次上午客观题参考答案及解析(3)
51、探索各种选项,权衡包括时间与成本、质量与成本、风险与进度、进度与质量等多种因素,在整个过程中,舍弃无效或次优的替代方案,这种不确定性应对方法是()。 A.集合设计 B.坚韧性 C.多种结果…...

YOLOv8改进 | 注意力机制 | 对密集和小目标友好的EVAblock 【原理 + 完整代码】
秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…...

高效前端开发:解密pnpm的存储与链接
什么是pnpm PNPM(Performant NPM)是一种快速且节省磁盘空间的包管理工具。相较于其他包管理器如NPM和Yarn,PNPM通过独特的存储机制和链接技术解决了许多常见的问题。以下是PNPM如何避免这些问题以及其关键技术的详细介绍。 特性 PNPM Store…...

设置单实例Apache HTTP服务器
配置仓库 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# vi rpm.repo仓库代码: [BaseOS] nameBaseOS baseurl/mnt/BaseOS enabled1 gpgcheck0[AppStream] nameAppStream baseurl/mnt/AppStream enabled1 gpgcheck0挂载 [rootlocalhost …...

Python | Leetcode Python题解之第221题最大正方形
题目: 题解: class Solution:def maximalSquare(self, matrix: List[List[str]]) -> int:if len(matrix) 0 or len(matrix[0]) 0:return 0maxSide 0rows, columns len(matrix), len(matrix[0])dp [[0] * columns for _ in range(rows)]for i in…...

使用Python实现线性拟合
如下 Python 代码主要用于处理和分析数据,并使用 Matplotlib 库绘制出数据的拟合曲线。它的主要步骤包括数据预处理、进行线性回归分析,并根据结果绘图展示。下面是对代码及其所引用库的详细解释: 引用的库 numpy (np): 用于进行数值计算。这…...

如何在浏览器控制台Console中引入外部 JS
想要在某个网页执行一些脚本,却发现某个工具类,如 ajax 请求的 axios 该网页没有引入,或者引入了但控制台却访问不到,这时要怎么办呢? 只需要控制台执行如下代码就好了 var script document.createElement(script);…...

后端——全局异常处理
一、老办法try-catch 当我们执行一些错误操作导致程序报错时,程序会捕捉到异常报错,这个异常会存在一个Exception对象里 那我们在spring boot工程开发时,当我们执行一个sql查询时报错了,那就会从最底层的Mapper层捕捉到Exceptio…...

软件开发面试题(C#语言,.NET框架)
1. 解释什么是委托(Delegate),并举例说明它在C#中的用法。 委托是一种引用类型,它可以用于封装一个或多个方法。委托对象可以像方法一样调用,甚至可以用于创建事件处理程序。委托是C#中实现事件和回调函数的重要机制。…...

Spring学习04-[Spring容器核心技术AOP学习]
AOP学习 AOP介绍使用对业务方法添加计算时间的增强 EnableAspectJAutoProxyAOP的术语通知前置通知Before后置通知After返回通知AfterReturning异常通知AfterThrowing总结-通知执行顺序 切点表达式的提取-使用Pointcut进行抽取切点表达式的详细用法execution和annotation组合 Sp…...

第5章-组合序列类型
#全部是重点知识,必须会。 了解序列和索引|的相关概念 掌握序列的相关操作 掌握列表的相关操作 掌握元组的相关操作 掌握字典的相关操作 掌握集合的相关操作1,序列和索引 1,序列是一个用于存储多个值的连续空间,每一个值都对应一…...

大话光学原理:2.最短时间原理、“魔法石”与彩虹
一、最短时间原理 1662年左右,费马在一张信纸的边角,用他那著名的潦草笔迹,随意地写下了一行字:“光在两点间选择的路,总是耗时最少的。”这句话,简单而深邃,像是一颗悄然种下的种子,…...

spring tx @Transactional 详解 `Advisor`、`Target`、`ProxyFactory
在Spring中,Transactional注解的处理涉及到多个关键组件,包括Advisor、Target、ProxyFactory等。下面是详细的解析和代码示例,解释这些组件是如何协同工作的。 1. 关键组件介绍 1.1 Advisor Advisor是一个Spring AOP的概念,它包…...

`CyclicBarrier` 是 Java 中的一个同步辅助工具类,它允许一组线程相互等待,直到所有线程都达到了某个公共屏障点(barrier point)
CyclicBarrier 是 Java 中的一个同步辅助工具类,它允许一组线程相互等待,直到所有线程都达到了某个公共屏障点(barrier point)。当所有线程都到达屏障点时,它们可以继续执行后续操作。CyclicBarrier 的特点是可以重复使…...

华为机试HJ108求最小公倍数
华为机试HJ108求最小公倍数 题目: 想法: 要找到输入的两个数的最小公倍数,这个最小公倍数要大于等于其中最大的那个数值,遍历最大的那个数值的倍数,最大的最小公倍数就是输入的两个数值的乘积 input_number_list i…...

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.
Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…...

开发者必看:MySQL主从复制与Laravel读写分离的完美搭配
介绍 主从同步配置的主要性不用多说,本文将详细介绍了如何在MySQL数据库中设置主从复制,以及如何在Laravel框架中实现数据库的读写分离。 通过一系列的步骤,包括修改MySQL配置、创建同步账户、获取二进制日志文件名和位置、导出主服务器数据…...

二战架构师,拿下
前言 已经许久更新文章了,并不是因为我懒了,而是在备考系统架构师考试。个人感觉还是比较幸运的,低分飘过。现阶段任务也算完成了,记录一下感受。 什么是软考 软考,全称“计算机技术与软件专业技术资格(…...

泛微开发修炼之旅--35关于基于页面扩展和自定义按钮实现与后端交互调用的方法
文章链接:35关于基于页面扩展和自定义按钮实现与后端交互调用的方法...

原创作品—数据可视化大屏
设计数据可视化大屏时,用户体验方面需注重以下几点:首先,确保大屏信息层次分明,主要数据突出显示,次要信息适当弱化,帮助用户快速捕捉关键信息。其次,设计应直观易懂,避免复杂难懂的…...

AdaBoost集成学习算法理论解读以及公式为什么这么设计?
本文致力于阐述AdaBoost基本步骤涉及的每一个公式和公式为什么这么设计。 AdaBoost集成学习算法基本上遵从Boosting集成学习思想,通过不断迭代更新训练样本集的样本权重分布获得一组性能互补的弱学习器,然后通过加权投票等方式将这些弱学习器集成起来得到…...

uniapp内置组件uni.navigateTo跳转后页面空白问题解决
文章目录 导文空白问题 导文 在h5上跳转正常 但是在小程序里面跳转有问题 无任何报错 页面跳转地址显示正确,但页面内容为空 空白问题 控制台: 问题解决: 方法1: 可能是没有注册的问题,把没注册的页面 注册一下。 方…...

使用树莓派进行python开发,控制电机的参考资料
网站连接:https://www.cnblogs.com/kevenduan?page1 1、简洁的过程步骤, 2、有代码示例, 3、有注意事项,...

protobuf的使用
protobuf:是一种数据格式,独立于平台,独立于语言,是一种二进制格式,可以存储更加复杂的数据结构,比如图,树,结构体,类 作用: 1.持久化:把数据存…...

笔记15:while语句编程练习
练习一: 编写程序,求 2^24^26^2...n^2? -直到累加和大于或等于 10000 为止,输出累加和 -输出累加式中的项数,以及最大的数 n #include<stdio.h> int main() {int sum 0;int i 1;int n 0;while(sum < 10000)//将sum…...

打开excel时弹出stdole32.tlb
问题描述 打开excel时弹出stdole32.tlb 如下图: 解决方法 打开 Microsoft Excel 并收到关于 stdole32.tlb 的错误提示时,通常意味着与 Excel 相关的某个组件或类型库可能已损坏或不兼容。 stdole32.tlb 是一个用于存储自动化对象定义的类型库&#x…...

349. 两个数组的交集
哈喽!大家好,我是奇哥,一位专门给面试官添堵的职业面试员 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟! 文章目录 一、题目二、答案三、总结 一、题目 …...

重庆交通大学数学与统计学院携手泰迪智能科技共建的“智能工作室”
2024年7月4日,重庆交通大学数学与统计学院与广东泰迪智能科技股份有限公司携手共建的“智能工作室”授牌仪式在南岸校区阳光会议室举行。此举标志着数统学院与广东泰迪公司校企合作新篇章的开启,也预示着学院在智能科技教育领域的深入探索和实践。 广东…...