基于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训练等对计算性能和数据隔离有着极高要求的行业。本方案以其独特的技术优势,有望成为行业标准,吸引更广泛的客户群体,推动整个云服务市场的多元化与高端化发展。
本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。
相关文章:

基于DPU的云原生裸金属服务快速部署及存储解决方案
1. 背景介绍 1.1. 业务背景 在云原生技术迅速发展的当下,容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择,但裸金属服务器依然有其独特的价值和应用场景,是云原生架构中不可或缺的一部分。 裸金属服务器是一种高级…...
论文学习_Large Language Models Based Fuzzing Techniques: A Survey
论文名称发表时间发表期刊期刊等级研究单位Large Language Models Based Fuzzing Techniques: A Survey 2024年arXiv-悉尼大学 0.摘要 研究背景在软件发挥举足轻重作用的现代社会,软件安全和漏洞分析对软件开发至关重要,模糊测试作为一种高效的软件测试方法,并广泛应用于各个…...

响应式德米拉数字内容交易系统素材下载站模板
★模板说明★ 该数字交易系统设计非常完美,两种响应式模式,可打开边栏模式和盒子模式;八种网站颜色,四种风格颜色可供用户自行选择,还可在网站选背景图片;完美的分成系统、充值功能、个人中心等等都以html…...

数据库开发-MySQL
前言 首先来了解一下什么是数据库。 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app…...
香港大带宽服务器高性能配置选择灵活
香港大带宽服务器是指在香港数据中心托管的,配备了高速网络连接的服务器。这些服务器通常用于需要大量数据传输和快速响应时间的应用,如视频流媒体、在线游戏、远程工作和大规模数据处理任务。具体分析如下,rak部落为您整理发布。 1. **内存配…...
Oracle中生僻汉字的解决办法
在Oracle数据库中处理生僻汉字时,主要面临的问题是某些字符集可能无法完全支持所有的汉字,特别是生僻字。以下是一些解决Oracle中生僻汉字问题的办法: 检查当前字符集: 使用SELECT USERENV(language) FROM dual;命令来查看当前数…...
在Kotlin中,`field`关键字是一个特殊的标识符,用于在属性的自定义getter和setter中访问backing field(存储属性值的实际字段)
在Kotlin中,field关键字是一个特殊的标识符,用于在属性的自定义getter和setter中访问backing field(存储属性值的实际字段)。Kotlin属性默认提供getter和setter方法,但当你需要自定义它们的行为时,可以使用…...

如何在 MySQL 中创建和使用事务?
目录 1. 环境准备 2. 创建事务 3. 事务执行 4. 事务撤消 5. 总结 事务是数据库区别于文件系统的重要特征之一,当我们有了事务就会让数据库始终保持一致,同时我们还能通过事务机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会…...

Python数据分析-对驾驶安全数据进行了预测
一、研究背景和意义 随着汽车保有量的不断增加,交通事故已成为全球范围内的重大公共安全问题。每年因交通事故造成的人员伤亡和财产损失给社会带来了巨大的负担。为了提高驾驶安全,减少交通事故的发生,许多研究致力于探索影响驾驶安全的因素…...

全志 Android 11:实现响应全局按键
一、篇头 最近实现热键想功能,简单总结了下全志平台Android 11 的响应全局热键的方法。 二、需求 实现全局热键,响应F-、AF、F三个按键,AF只用于启动调焦界面,F-和F除了可以启动调焦界面外,还用于调整镜头的焦距&…...

DVWA 靶场 Open HTTP Redirect 通关解析
前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…...

Blender:渲染输出
一、渲染设置 渲染设置界面: 渲染器选择切换 Cycles渲染器 【文档】 Cycles渲染目标: Cycles是Blender用于产品级渲染,基于物理的路径跟踪器。主要关注于影视质量,更高质量的外观它旨在提供易于使用以及准确的物理渲染结果具有艺术…...

NTFS和exFAT哪个性能好 U盘格式化NTFS好还是exFAT好 mac不能读取移动硬盘怎么解决
文件系统的选择对存储设备的性能和兼容性有着重要影响。而NTFS和EXFAT作为两种常见的文件系统,它们各有特点,适用于不同的使用场景。我们将深入探讨NTFS和EXFAT的区别,帮助大家选择最适合自己需求的文件系统。 NTFS:稳定与性能的平…...

kafka的基本模型
kafka官网 线程和线程之间的数据交互 在jvm里不同的线程有自己的栈内存,但彼此之间交互可以在共享的内存中进行,即堆内存,堆内存会将这些消息放到队列中,具体实现jvm见,栈内存各自维护,堆内存大家共享 进…...

npm语义化版本和版本运算符
版本号组成 一个完整的版本号,由三部分组成:主版本号(major)、次版本号(minor)、修订版本号(patch),简称X.Y.Z,具体含义: 主版本号(major):项目(…...
孩子到了叛逆期,家长应该怎么教育孩子?
到了一定的年龄后,有些孩子会变得叛逆起来,那么对于家长来说,如何教育叛逆的孩子?孩子叛逆期教育方法有哪些呢? 叛逆期教育孩子用什么方法 一。要摒除父母对孩子居高临下的心态,放下身叚࿰…...

芋道源码 yudao-cloud 、Boot 文档,开发指南 看全部,破解[芋道快速开发平台 Boot + Cloud]
1、文档全部保存本地部署查看,真香 文档已抓取最新版本,2024.06.21。【唯一遗憾,表结构到2024.04月,已被限制放到知识星球】会员中心,支付中心,CRM,ERP,商城,公众号运行…...
工具函数-算法
1. 实现四舍五入,保留两位小数 const v 0.0635455; // 方式1,保留2位小数,返回的是number格式 const formatted Math.round(v * 100) / 100; // 方式2,保留2位小数,返回的是字符串格式 const formatted v.toFixed(…...

C# yolov8 OpenVINO 同步、异步接口视频推理
C# yolov8 OpenVINO 同步、异步接口视频推理 目录 效果 项目 代码 下载 效果 同步推理效果 异步推理效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Windows.Form…...

【STM32入门学习】定时器与PWM的LED控制
目录 一、定时器与PWM介绍 1.1定时器 1.1.1定时器分类简介 1.1.2STM32定时器分类比较表 1.1.3定时器启动操作: 1.2 PWM 1.2.1 简介: 1.2.2PWM工作原理 1.2.3使用步骤: 二、定时器计数控制LED灯亮灭 2.1HAL库 2.1.1使用HAL库创建…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...