基于DPU的云原生裸金属服务快速部署及存储解决方案

1.  背景介绍

1.1. 业务背景

在云原生技术迅速发展的当下,容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择,但裸金属服务器依然有其独特的价值和应用场景,是云原生架构中不可或缺的一部分。

裸金属服务器是一种高级的云计算解决方案,它成功地融合了传统云主机的灵活性、便捷性与物理服务器的强大性能与独立性。作为一类特别设计的计算类云服务,裸金属服务器直接向用户提供了云端部署的专属物理服务器,这意味着客户不再需要与其他租户共享硬件资源,从而确保了资源的独占性、性能的最优化以及数据的最高级别安全。

这种服务模式特别适合那些运行核心数据库系统、承载关键业务应用、实施大规模高性能计算项目或处理海量大数据分析的任务。裸金属服务器以其强大的计算能力,能够高效处理复杂的计算密集型作业,同时保证了低延迟和高吞吐量,是驱动企业数字化转型和创新业务场景的重要基石。

1.2. 问题与挑战

传统的裸金属服务通常采用Openstack Ironic架构,并通过PXE和TFTP实现安装引导流程,服务器的本地盘作为裸金属服务器的存储资源。这种方式导致了用户体验差、灵活性不足等诸多问题,难以满足用户越来越高的业务和技术需求。

Ironic 采用本地物理盘进行启动时,首先将远程镜像下载并写入到本地物理盘中,然后再从本地盘启动进入系统。流程如下:

可以看到,其重点是通过 PXE 启动一个小系统(在内存中运行),这个小系统中运行了 Ironic 定制的 ironic-python-agent(简称 IPA),IPA 负责从 Glance 下载真正的用户镜像,并写入到本地磁盘上。

物理服务器支持基于云盘的无盘启动方式,Ironic 也支持无盘启动,但目前支持的协议有限,仅支持 iSCSI Boot,且仍然依赖PXE。

目前在云原生生态中,提供裸金属服务的开源组件只有 metal3(或称Metal Kubed),但我们对其调研后发现,metal3只是抽象了裸金属的一个生命周期状态机,但裸金属本身的网络、存储、镜像管理等都依赖外部实现,而且目前仅有基于 Ironic 的实现。因此,相关的方案架构和 Ironic 没有区别。

因此,我们总结裸金属服务器部署和存储的关键痛点:

  • 部署周期长:传统裸金属服务采用PXE+TFTP技术安装引导,部署时间长(约20分钟),主要耗时在三个环节:(1)两次启动,(2)镜像下载,(3)镜像写入本地盘。这导致了业务弹性不足和效率低下,最终用户体验较差。
  •  存储能力弱:服务器本地盘作为系统盘,无法实现灵活扩容、整机克隆和冷迁移等操作;数据保存在本地,如果挂载云存储则需要侵入用户镜像,且云存储客户端运行于 Host,消耗计算资源,影响运维效率和使用体验。
  • 在云原生生态下无解决方案:目前在Kubenetes架构下,无法支持裸金属服务,不能以云原生统一的方式实现裸金属服务器的创建、删除、重启等操作,导致管理效率低下,服务器资源利用率低。

2.  方案介绍

2.1. 整体架构

为了解决传统裸金属服务方案的问题,中科驭数基于DPU开发了全新的云原生裸金属服务解决方案,整体架构图如下:

在本方案中,DPU支持裸金属服务器的网络和存储资源虚拟化,使得物理服务器能够像虚拟机一样灵活配置,动态添加或删除网卡、硬盘等资源。这为裸金属服务器提供了类似云服务的弹性,同时保持了物理机级别的性能。另外,DPU能够管理远程存储资源,如云盘,使得裸金属服务器可以使用云存储服务,同时通过DPU加速存储I/O,提高读写性能,使得云盘接近本地存储的体验。

我们定义了一类名为 BareMetalMachine 的 CRD 资源来管理裸金属实例,并自研了相关的 Kubenetes组件管理裸金属的生命周期,包含以下关键组件:

bmctl:类似于 kubectl 的一个便于操作裸金属的命令行工具。

bm-controller:裸金属核心控制器,工作在 master 节点。负责裸金属对象生命周期的管理,通过 BMC 来操作裸金属服务器的电源(开关机、重启等)状态。

bm-api:作为K8s APIServer 的扩展,封装裸金属的 api 接口,实现 console、重启等功能。

bm-handler:作为DaemonSet 部署在 DPU Soc 上,负责该DPU上裸金属的管理。

ycloud-cni:为裸金属提供虚拟网卡配置功能,调用 OVS 进行配置。

ycloud-csi:为裸金属提供云盘挂载功能,最终通过SPDK 进行配置,SPDK 通过 PCIe给裸金属模拟磁盘。是一个框架,对接到外部或开源的 CSI Driver。

以上组件均为自研,完全基于云原生生态,在用户平面实现和Kubevirt虚机类似的管理操作,填补了云原生生态中管理裸金属服务的空白。

2.2. 方案描述

在基于DPU的裸金属服务方案下,实现了裸金属的部署启动、云盘热插拔、热扩容、cloudinit、冷迁移、快照恢复及克隆等常用功能,以下对主要部分做详细描述,并和传统 Ironic 方案进行部分对比。

2.2.1.  基于DPU的无盘启动方案

在基于 DPU 的方案中,我们采用直接挂载云盘系统的方式,不使用本地盘,过程如下:

bm-controller 根据裸金属资源描述,创建系统盘对应的 PVC,指定从原始镜像所在的PVC 进行克隆。

ycloud-csi 监听到 PVC 创建后,调用后端存储以快照方式克隆原始镜像卷,创建新的镜像卷。远程存储卷拷贝的时候采用的是快照方式(COW),并不是完整拷贝,速度很快,一般在数秒内完成。

镜像卷创建完成后,ycloud-csi 将其映射到DPU,调用 SPDK 进行配置,给Host 侧挂载对应的系统盘。

系统盘挂载完成后,bm-controller 通过 BMC重启裸金属节点,此时BIOS 能扫描到系统盘,启动进入系统,裸金属启动完成。

与Ironic 方案相比,没有 PXE 过程,也只需启动一次。

2.2.2.  存储对接

Ironic 存储对接方案:

Ironic 的存储对接在 Host 侧,Host 网络需和存储网络连通,且Host 中如安装相关组件,如下图:

为了完成云盘的挂载/卸载,Host 中需要安装一个 ironic-agent 及相应存储客户端,ironic-agent调用存储客户端完成云盘的挂载/卸载操作。Ironic 的 StorageDriver 会配置好存储服务端,并调用 ironic-agent 完成云盘的操作。

基于DPU的存储对接方案:

在基于DPU 的方案中,存储对接在DPU 侧,如下图所示:

裸金属上看到的盘,是DPU 上的 SPDK 通过 PCIe 模拟的设备。存储网络也是由 OVS 连接的和配置的。为了便于系统组件通过统一的框架屏蔽存储的细节,我们开发了ycloud-csi 这个基于 DPU的通用框架,可以和多种外部 CSI Driver进行对接。ycloud-csi 和 API Server 通信,监听 PVC 的更新,通过 CSI Driver 调用后端存储,并调用 SPDK 给Host 配置相应的模拟盘。

与 Ironic 方案相比,存储相关组件全部下沉到了DPU侧,存储网络也统一通过 DPU 侧OVS 对外连接,Host侧屏蔽了网络细节。

2.2.3.  硬盘热插拔

如Ironic存储对接方案中所示,Ironic 中的 StorageDriver 调用 Host 中的 ironic-agent 完成硬盘热插拔,用户镜像需安装相关依赖。

在基于 DPU 的方案中,由于裸金属上的盘是 DPU 通过PCIe 模拟的,因此,通过动态调整 DPU 上的 SPDK 配置,即可实现硬盘的热插拔。

2.2.4.  硬盘热扩容

Ironic 中,支持云盘热扩容,在 Cinder 中调整存储卷的大小后,刷新客户端即可。

在基于 DPU 的方案中,ycloud-csi 调用存储完成后端存储卷的扩容,然后通过 SPDK 支持 bdev 的热扩容,并通过PCIe 通知到 Host侧。

3.  方案测试结果

3.1. K8s上裸金属创建及管理

与其他K8s 资源的创建类似,裸金属的通过一个yaml描述进行创建,类似以下命令:

kubectl apply -f bm-xxx.yaml

(由于描述yaml较长,这里不贴出)

创建后,可通过 kubectl 命令查看:

可以看到bm-01、bm-02及 bm-node3三个裸金属实例,均为 Running 状态。

我们提供了类似 kubectl 的一个 bmctl 命令行工具,方便进行管理维护。通过该命令,可以方便的进行开关机、重启、硬盘插拔、网卡插拔等操作:

3.2. 部署启动时间

我们定义裸金属的部署启动时间为:下发创建裸金属实例的命令,到裸金属实例网络 IP 可以ping 通的时间。

在联创万通 LCWT R7220 服务器上,镜像 OS 为 Ubuntu 22.04 Server,内核版本为 5.15.0-106-generic 时测得的启动时间:

从创建到可ping 通共耗时 153 秒(2min33s)。

基于DPU的裸金属服务方案启动时间在 2-3min 内,具体耗时取决于服务器类型和镜像版本。相比之下,我们测试传统 Ironic 本地盘方式在 20min 以上。

3.3. CPU消耗

在裸金属实例上对多块盘同时执行 fio 测试,查看 CPU 消耗,可以看到,由于存储组件全部卸载到了DPU侧,Host几乎没有 CPU 消耗(fio 和 top 进程除外):

相比之下,若 Host 直接运行 Ceph RBD客户端连接存储,fio 读写时,通过Top可看到 RBD 内核进程:

将以上Ceph RBD 内核进程的消耗CPU 百分百相加,可以看到,fio读写时消耗CPU为235.2%,超过200%(即2个物理Core),在更多的盘读写时,会消耗更多CPU:

3.4. 硬盘热插拔

本测试为在不关机重启的情况下插拔云盘,测试结果显示可正常操作。

拔盘前:

拔盘后:

插入新盘后:

3.5. 硬盘热扩容

热扩容测试时,使用 fio 对目标盘进行读写,扩容过程中fio 的数据操作不受影响。

扩容前:

扩容后:

4.  总结

4.1. 方案优势

本方案创新性地在云原生架构框架下融入裸金属服务,依托自研的Kubenetes插件,巧妙运用DPU技术,实现系统盘与数据盘的云端托管,显著优化资源配置与管理效能。其核心优势概览如下:

•填补空白,引领创新:鉴于目前云原生生态系统中缺乏成熟的开源裸金属服务解决方案,本方案的成功实施不仅填补了这一市场和技术空白,更为行业树立了新的标杆,推动了云原生技术的深入发展与应用。

•加速部署,效率飞跃:依托DPU驱动的云盘启动机制,与传统的本地盘启动方式相比,本方案极大提升了裸金属服务器的交付速度,部署时间从20分钟锐减至大约2分钟,显著增强了业务敏捷性。

•深度整合,简化管理:通过DPU挂载云盘,将裸金属服务器的控制面与数据面下沉至DPU层面,无需依赖用户自定义镜像,且存储客户端功能与用户系统完全隔离,确保了环境的纯净与管理的便捷。

•强化安全,隐匿复杂性:该方案有效屏蔽存储网络架构及后端存储细节,既增强了存储层面的安全防御能力,又简化了运维视图,提升了整体系统的安全性和可维护性。

•资源优化,专注业务:通过将存储功能外移到DPU,彻底释放了裸金属服务器本身的资源约束,确保所有服务器资源都能集中服务于业务需求,极大提升了资源的有效利用率。

•性能卓越,逼近本地:充分利用DPU提供的硬件加速能力,本方案中的云盘性能逼近甚至达到本地硬盘水平,确保了数据访问的高速度与低延迟,满足了高性能计算与大数据处理的严苛要求。

综上所述,本方案凭借其在部署效率、资源管理、安全性能、资源优化及技术创新方面的显著优势,为云原生环境下的裸金属服务应用开辟了新的路径,展现了强大的竞争力和前瞻视野。

4.2. 未来与展望

随着企业对高性能计算、数据安全及业务敏捷性的需求日益增长,本方案将进一步整合云原生架构的灵活性与物理服务器的性能优势,助力客户在激烈的市场竞争中脱颖而出。客户将享受到更短的业务上线时间、更低的总体拥有成本(TCO)、更强的数据安全性和定制化的高性能计算环境,从而加速数字化转型,推动业务创新与发展。

伴随云原生技术的普及与深化,裸金属服务作为关键基础设施之一,其市场需求将持续攀升,特别是在金融、电信、医疗、大数据分析和AI训练等对计算性能和数据隔离有着极高要求的行业。本方案以其独特的技术优势,有望成为行业标准,吸引更广泛的客户群体,推动整个云服务市场的多元化与高端化发展。

本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。

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

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

相关文章

主机游戏也可以上云桌面玩了?

最近steam夏季促销活动也快到了,对于很多钟情于主机游戏的小伙伴们,是不是也在摩拳擦掌了? 但有时候现实想愉快地玩到自己想玩的游戏实在是太难了! 当你一直关注的新游戏终于上线Steam时,你的钱包是这样的… 而游戏的…

前端新手小白的Vue3入坑指南

昨天有同学说想暑假在家学一学Vue3,问我有没有什么好的文档,我给他找了一些,然后顺带着,自己也写一篇吧,希望可以给新手小白们一些指引,Vue3欢迎你。 目录 1 项目安装 1.1 初始化项目 1.2 安装初始化依…

Vscode中的行尾序列CRLF/LF不兼容问题

最近开发的的时候,打开项目文件经常会出现爆红错误提示信息,显示如下图: 这东西太烦人了,毕竟谁都不希望在遍地都是爆红的代码里写东西,就像能解决这个问题,根据提示可以知道这是vscode中使用的prettier插件…

11、鸿蒙学习—UDID获取方法

一、手机的UDID获取方法如下: 1、打开“设置 > 关于手机”,多次点击版本号,打开开发者模式。 2、打开“设置 > 系统和更新”,在最下方找到“开发人员选项”,打开“USB调试”开关。 3、使用PC连接手机后&#…

【Spine学习10】之 创建新骨骼时,自动绑定图片和插槽的快捷方式

两天没更新了。 遇到一些难解的难题 用的版本是破解版 不知道为啥现在的教程非常地快 明明有些细节很重要还略过讲 所以创建骨骼这里 基本创建是都会 可是骨骼一多 实际工作中的重命名也太麻烦了 。 这就需要学习快捷创建方式&#xff1a; <将对应图片自动绑定到新骨骼上并…

Android 大话binder通信 (上)

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 本文摘要 用故事的方式把binder通信的整个过程都描述出来&#xff0c;binder通信都经历了哪些节点&#xff0c;在这些节点上的数据有哪些变化&#xff0c;同时还对binder通…

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch2 贝尔曼公式

PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍 1、学堂在线 视频 习题 2、相应章节 过电子书 复习 GitHub界面链接 3、总体 MOOC 过一遍 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链接 PPT和书籍下载网址&#xff1a; 【github链接】 文章目录 计算…

泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统

具小编了解&#xff0c;泽众云真机即将升级支持华为机型HarmonyOS NEXT系统。有些人可能对HarmonyOS NEXT系统了解不多。 之前我们有个银行项目&#xff0c;客户要求测试华为HarmonyOS NEXT系统环境&#xff0c;当时我们云真机尚未有该系统的机型&#xff0c;然后技术人员向华为…

护眼必看!台灯怎么选对眼睛好的方法

家长们是否和我一样发现孩子时常作出眯眼的行为&#xff01;那就要小心了&#xff01;最近我注意到家中的孩子开始表现出眯眼的习惯。经过仔细观察后发现&#xff0c;这可能与她长时间晚上熬夜写作业导致的光线不足有关。随着孩子学习负担的增加&#xff0c;我作为家长开始担心…

ubuntu下同时安装和使用不同版本的库 librealsense

apt 安装的最新版本在/usr 源码安装的旧版本在/usr/local set(realsense2_DIR /usr/local/) find_package(realsense2 2.50.0 REQUIRED) message( "\n\n ${realsense2_INCLUDE_DIR} ${realsense2_VERSION} RealSense SDK 2.0 is FINDINGING, please install it from…

英伟达和IBM搞事情!主攻“量子计算+AI”

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨娴睿/慕一 排版丨沛贤 深度好文&#xff1a;2000字丨8分钟阅读 Ismael Faro是一位计算机工程师&#xff0c;自2015年以来&#xff0c;他就成为开发IBM量子软件生态系统的重要人物。从2016…

【Linux】rouyiVue 项目部署全过程(含MySQL,Nginx等中间件部署)

查看nginx 进程命令 ps aux | grep server_name 1. 安装MySQL 1.1 下载压缩包 官网下载 1.2 解压 上传并解压好放在指定位置 创建soft文件夹 mkdir /soft上传文件&#xff0c;在该目录下再创建一个mysql文件夹&#xff0c;将安装包解压到新文件夹中 mkdir /soft/mysql-…

【odoo】常用的字符转义:“>“,“<“,““,“/“等

概要 字符转义是指在编写代码或处理文本数据时&#xff0c;将特殊字符转换为另一种形式&#xff0c;以便在特定的上下文中正确解析和处理这些字符。 内容 特殊字符描述XML转义表示法&和符号&amp;<小于符号<>大于符号>"双引号&quot;单引号&ap…

CentOS7 部署安装ClickHouse

一、什么是ClickHouse ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 OLAP场景需要…

Laravel - excel 导入数据

在Laravel中&#xff0c;可以使用maatwebsite/excel这个库来处理Excel文件的导入。 1.用命令行窗口打开项目根目录&#xff0c;使用 Composer 安装 maatwebsite/excel composer require maatwebsite/excel --ignore-platform-reqs 在你的config/app.php文件中注册服务提供者&…

何在 Vue3 中使用 Cytoscape 创建交互式网络图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中加载 Cytoscape.js 的技术实现 应用场景 Cytoscape.js 是一个用于创建交互式网络的可视化库。在生物信息学、社会网络分析和药物发现等领域中得到了广泛应用。 基本功能 本代码片段演示了如何在 V…

二叉树的这五种遍历方法你们都会了吗?

说在前面 &#x1f388;二叉树大家应该都很熟了吧&#xff0c;那二叉树的这五种遍历方式你们都会了吗&#xff1f; 以这一二叉树为例子&#xff0c;我们来看看不同遍历方式返回的结果都是怎样的。 前序遍历 前序遍历的顺序是&#xff1a;首先访问根节点&#xff0c;然后递归地…

使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。

在页面中显示电影排行榜 当单击“&#xff08;收起&#xff09;”链接时&#xff0c;排行榜中后三项的电影名称隐藏而且链接的文本更改为“&#xff08;展开&#xff09; ” 当单击“&#xff08;展开&#xff09;”的链接时&#xff0c;后三项的电影名称重新显示且链接的文本…

视频剪辑技巧大揭秘:轻松掌握为视频添加梦幻光晕效果的绝妙方法!

在这个视觉盛宴的时代&#xff0c;每一个画面都渴望被赋予独特的魅力与魔法。今天&#xff0c;我要为你揭秘一个神秘的视频剪辑技巧——给视频添加光晕效果&#xff0c;让你的作品瞬间脱颖而出&#xff0c;成为朋友圈的焦点 首先&#xff0c;你可以打开原视频进行查看。此时&am…

QT自定义标题栏窗口其一:实现拖动及可拉伸效果

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(paren