IOMesh 为 KubeVirt 提供高效稳定的持久化存储支持(附用户实践)

7 月 11 日,KubeVirt 社区正式宣布发布 Kubernetes 原生虚拟机管理插件 KubeVirt v1.0。这一版本发布不仅标志着 KubeVirt 已进化为生产就绪的虚拟机管理解决方案,也为正在使用虚拟化环境的用户提供了更多元的云化转型路线:搭配 Kubernetes 持久化存储方案,用户可在 Kubernetes 平台实现虚拟机和容器的统一管理的同时,为 Kubernetes 集群提供生产级稳定、高性能的存储支持。

作为国内首款 Kubernetes 原生的企业级分布式存储,SmartX 的 Kubernetes 原生存储 IOMesh 可以为 KubeVirt 提供性能强大、功能丰富的存储服务,帮助企业加快 IT 基础架构云原生转型的步伐。本文,我们将深入探讨 KubeVirt 对底层存储架构的能力要求,并通过性能测试和用户实践,验证 IOMesh 对 KubeVirt 的支持能力。

Gartner:以 KubeVirt 为代表的“容器-虚拟机融合管理”技术正在成为主流

云原生技术的成熟不仅给企业用户带来了更现代化的 IT 基础架构,也同时带来了一定程度的管理难题:怎样将用户原有的虚拟化架构与容器架构统一且高效地管理?为了解决这一问题,“容器-虚拟机融合管理(Converged VM and Container Management)”应运而生。

Gartner 在《容器管理市场指南》报告中指出,目前有两种主流方式,可以实现将容器与虚拟机架构整合并统一管理:

  • Container-centric:在 Kubernetes 集群中创建、运行、管理虚拟机,以 KubeVirt 为代表。这种方案下,Kubernetes 部署在裸金属上,用户使用 Kubernetes API 对 Kubernetes 集群上的容器和虚拟机进行统一管理。

  • Coexist:支持在虚拟机环境中部署、运行、管理容器和虚拟机,以 VMware Tanzu 和 SmartX SKS 为代表。这种方案下,用户部署虚拟化/超融合平台运行虚拟机,Kubernetes 集群构建在其中一部分虚拟机之上,用户通过虚拟化网络对 Kubernetes 集群和虚拟机进行统一管理。欲深入了解,请阅读:虚拟化 vs. 裸金属:K8s 部署环境架构与特性对比。

两种方案的对比如下图所示。

图片

左:以 Coexist 方式融合管理容器和虚拟机,右:使用 KubeVirt 融合管理容器和虚拟机

作为一种 Container-centric 融合管理方案,KubeVirt 最大的特点即支持运维人员使用 Kubernetes API 对容器和虚拟机进行统一管理:用户只需掌握 Kubernetes 相关技术,即可对两种架构同时进行管理,降低了管理难度。同时,不同于传统虚拟化环境中使用厂商专有 API,KubeVirt 使用 Kubernetes API,与 Kubernetes 集成更为紧密,使得集群管理更加敏捷、灵活,用户也可轻松使用 Kubernetes 丰富的生态系统和工具,如监控、日志、网络和存储等。

得益于成熟的技术和虚拟机的支持能力,Gartner 在《容器管理市场指南》中表示,相比使用裸金属服务器运行 Kubernetes,更多用户倾向于使用可同时支持容器和虚拟机的架构方案,兼顾两种部署环境优点的同时,逐步推进 IT 基础架构云化转型。

KubeVirt 需要什么类型的存储

想要充分发挥 KubeVirt 灵活部署、多架构支持的能力,离不开底层储存的支持。在 KubeVirt 场景下,存储方案不仅应具备可支持容器与虚拟机的高性能块存储能力,还需贴合 KubeVirt 的能力设计,为虚拟机提供高级特性。

Kubernetes 原生的生产级块存储能力

  • Kubernetes 原生、融合部署:存储方案需具备可在生产环境中支持有状态应用的 I/O 能力,因此要求存储产品使用 Kubernetes 原生技术(原生 CSI Driver 并支持声明式 API),且支持存储与计算的融合部署——相比于分离场景,融合部署具备 I/O 本地化能力,可以获得更好的性能;同时,由于 KubeVirt 通过 Kubernetes API 对虚拟机和容器进行统一管理,因此更适合存储和计算融合部署场景。

  • 可扩展性:允许用户从小规模开始部署,根据业务需求按需扩展存储资源,而无需更换基础架构的基本组件。
     

贴合 KubeVirt 的高级特性

  • 虚拟机快照、还原、克隆:KubeVirt 利用 Kubernetes CSI 驱动程序的 VolumeSnapshot 功能来实现虚拟机快照和还原,因此需要存储方案在 CSI 驱动中实现 Snapshot 和 Restore 功能。此外 Kubernetes Volume Snapshot APIs 还需要是 v1 版本。对于虚拟机克隆能力,KubeVirt 依赖于快照、还原 API。

  • Live Migration:对于虚拟机 Live Migration 能力,需要持久卷支持多读写(RWX) 能力。

此外,GigaOm 在《Key Criteria for Evaluating Kubernetes Data Storage Solutions v4.0》报告中,列举了 Kubernetes 存储在常规应用场景下应具备的 4 项标准能力、5 项关键差异能力和 3 项新兴技术支持能力。这些能力也应被纳入 KubeVirt 存储能力评估范围内。欲了解详细能力评估标准,请阅读:一文了解评估 K8s 原生存储产品需要关注的关键能力。


综上所述,一个高性能、具备企业级存储特性的云原生的分布式块存储比较适合 KubeVirt 场景。

IOMesh 如何满足 KubeVirt 需求

IOMesh 是 SmartX 自主研发并经过生产环境验证的 Kubernetes 原生的企业级分布式存储产品。作为一种 Kubernetes 原生的存储解决方案,IOMesh 能够与 Kubernetes 完美集成,实现融合部署并提供一致的容器与虚拟机存储支持,可以很好地支撑 KubeVirt 场景。方案架构如下图所示。

图片

得益于 IOMesh 的以下特点,该方案可充分满足 KubeVirt 场景下的存储需求。

高性能块存储

IOMesh 为全分布式架构,通过多节点并发消除了性能瓶颈,同时利用多种 I/O 优化技术进一步提升性能:

  • I/O 本地化消除了网络访问时延。

  • 冷热数据自动分层与对裸设备的直接管理最大化地发挥了硬件的性能。

  • 支持卷级别的存储策略:支持2和3副本。

  • 支持精简和厚制备方式。

  • 通过副本分配策略(拓扑安全、本地优先、局部化、容量均衡)实现了数据的精准放置。

通过以下的性能测试数据,可以直观地感受到 IOMesh 对比其他 K8s 存储的性能优势:

图片

图片

图片

图片

注:

3N1P:3 Node 1 Pod,测试单节点存储性能。

3N3P:3 Node 3 Pod,测试集群存储整体性能。

版本:IOMesh v1.0.1、Rook v1.12.1、Longhorn v1.5.1。

Kubernetes 原生

通过 Kubernetes CSI 动态制备存储,并支持诸如 PV 扩容、快照、还原、克隆、认证等能力。

企业级特性

IOMesh 具备数据校验、多副本冗余的企业级高可用特性;支持硬盘异常探测(通过智能算法探测不健康盘,自动触发磁盘隔离和数据恢复)等功能增加了可靠性和安全性。

降低使用成本

充分利用 Kubernetes Worker 节点的硬件资源融合部署,节省硬件成本和机架空间,降低部署难度。同时通过 Kubernetes 原生的操作方式和工具,可进一步降低 Kubernetes 运维团队的学习成本。

更多 IOMesh 产品特性与应用场景,请扫描下方二维码,获取《IOMesh 用户指南》进行深入了解。

用户实践

某视频技术研究公司从事视频离线渲染业务开发,采用容器虚拟化方案(Kubernetes + KubeVirt),以虚拟机(Windows + Linux)和容器方式混合部署的形式支持业务应用。

图片

该场景下,业务应用对存储产品在性能和高可用方面的要求比较高,为了支持应用稳定、高效运行,用户调研并测试了多个云原生存储方案,在性能和企业级别特性方面均难以达到预期。用户对存储方案的具体要求如下:

  • 存储类型:云原生分布式存储。

  • 具备企业级特性:通过多副本机制保证数据高可用性。

  • 高性能:视频渲染应用对存储性能要求比较高(随机读写 IOPS 和顺序读写带宽),需要满足以下条件:

    - 单机随机读 IOPS:100K+;

    - 单机随机写 IOPS:40K+;

    - 单机顺序读、顺序写带宽:1GiB/s。

  • 生产级别可用、稳定,资源消耗低。

为了解决存储痛点,用户引入了 IOMesh 进行性能测试。测试结果显示,IOMesh 在模拟实际业务需求条件下,单机随机读写 IOPS 可达到 130K+ 和 45K+,单机顺序读写宽带可达到 1.6GiB/s+,大大超出了客户预期。同时,IOMesh 丰富的企业级特性和 SmartX 专业的技术支持,充分保证了业务的稳定运行,满足了用户对 Kubernetes 集群高可用方面的要求。


想免费体验 IOMesh 功能与特性?快来参加 SmartX 近期开展的“IOMesh 社区版部署大挑战”活动!仅需半个小时,即可完成 IOMesh 社区版部署,获取 IOMesh 商业版基本功能的永久免费使用权,并解锁社区专家支持和更多挑战奖励。欲了解活动详情和报名方式,请阅读:有奖体验|IOMesh 社区版部署大挑战开始啦!

参考文章:

1. Market Guide for Container Management, Gartner

https://www.gartner.com/document/4012524

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

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

相关文章

【结构型】享元模式(Flyweight)

目录 享元模式(Flyweight)适用场景享元模式实例代码(Java) 享元模式(Flyweight) 运用共享技术有效地支持大量细粒度的对象。(业务模型的对象进行细分得到科学合理的更多对象) 适用场景 一个应用程序使用了大量的对象。完全由于…

概率统计笔记:从韦恩图的角度区分 条件概率和联合概率

联合概率:两个或多个事件同时发生的概率。用 P(A∩B) 或 P(A,B) 表示 条件概率:在已知某个事件发生的条件下,另一个事件发生的概率。用P(A∣B) 表示在事件 B 发生的条件下,事件 A 发生的概率。 不难发现联合概率的样本空间更大&am…

小白学Unity03-太空漫游游戏脚本,控制飞船移动旋转

首先搭建好太阳系以及飞机的场景 需要用到3个脚本 1.控制飞机移动旋转 2.控制摄像机LookAt朝向飞机和差值平滑跟踪飞机 3.控制各个星球自转以及围绕太阳旋转(rotate()和RotateAround()) 1.控制飞机移动旋转的脚本 using System.Collections; using…

【GAMES202】Real-Time Ray Tracing 1—实时光线追踪1

一、前言 这篇我们开始新的话题—Real-Time Ray Tracing简称RTRT,也就是实时光线追踪,关于光线追踪,我们已经不止一次提到过它的优点,无论是软阴影还是全局光照,光线追踪都很容易做,唯一的缺点就是速度太慢…

状态管理艺术——借助Spring StateMachine驭服复杂应用逻辑

文章目录 1. 什么是状态2. 有限状态机概述3. Spring StateMachine4. Spring StateMachine 入门小案例4.1 接口测试 5. 总结 1. 什么是状态 在开发中,无时无刻离不开状态的一个概念,任何一条数据都有属于它的状态。 比如一个电商平台,一个订…

第31章_瑞萨MCU零基础入门系列教程之WIFI蓝牙模块驱动实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

(LeetCode)两数相加深入分析Java版

两数相加(题目如下) 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数…

【深度学习】Pytorch 系列教程(二):PyTorch数据结构:1、Tensor(张量): GPU加速(GPU Acceleration)

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量(Tensor) 1. 维度(Dimensions) 2. 数据类型(Data Types) 3. GPU加速(GPU Acceleration) 一、前言 ChatGP…

【Linux环境】基础开发工具的使用:yum软件安装、vim编辑器的使用

​👻内容专栏: Linux操作系统基础 🐨本文概括: yum软件包管理、vim编辑器的使用。 🐼本文作者: 阿四啊 🐸发布时间:2023.9.12 Linux软件包管理 yum 什么是软件包 在Linux下安装软件…

【LeetCode-简单题】剑指 Offer 58 - II. 左旋转字符串

文章目录 题目方法一:连续双指针翻转 题目 方法一:连续双指针翻转 class Solution {public String reverseLeftWords(String s, int n) {StringBuffer sb new StringBuffer(s);reverseWord(sb,0,n-1);reverseWord(sb,n,sb.length()-1);return sb.revers…

WebServer 解析HTTP 响应报文

一、基础API部分&#xff0c;介绍stat、mmap、iovec、writev、va_list 1.1 stat​ 作用&#xff1a;获取文件信息 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>// 获取文件属性&#xff0c;存储在statbuf中 int stat(const char *…

CH06_第一组重构(上)

提取函数&#xff08;Extract Function |106&#xff09; 曾用名&#xff1a;提炼函数&#xff08;Extract Function&#xff09; 反向重构&#xff1a;内联函数&#xff08;115&#xff09; 示例代码 function printOwing(invoice) {printBanner();let outstanding calcul…

SpringBoot表现层数据一致性

1.定义Restful类 说明&#xff1a;使用Data注解是Lombok库提供的一个注解&#xff0c;用于自动生成类的getter、setter、equals、hashcode和toString方法。 package com.forever.controller.utils;import lombok.Data;Data public class Restful {private Boolean flag;//dat…

Redis 常用命令

目录 全局命令 1&#xff09;keys 2&#xff09;exists 3) del(delete) 4&#xff09;expire 5&#xff09;type SET命令 GET命令 MSET 和 MGET命令 其他SET命令 计数命令 redis-cli&#xff0c;进入redis 最核心的命令&#xff1a;我们这里只是先介绍 set 和 get 最简单的操作…

Java集合(Collection、Iterator、Map、Collections)概述——Java第十三讲

前言 本讲我们将继续来讲解Java的其他重要知识点——Java集合。Java集合框架是Java编程语言中一个重要的部分,它提供了一套预定义的类和接口,供程序员使用数据结构来存储和操作一组对象。Java集合框架主要包括两种类型:一种是集合(Collection),存储一个元素列表,…

MySQL入门指南:数据库操作的基础知识

当谈到关系型数据库管理系统(RDBMS)时&#xff0c;MySQL无疑是最常见和广泛使用的一个。它是一个强大的工具&#xff0c;用于存储、管理和检索数据。在这篇博客中&#xff0c;我们将介绍MySQL的基本知识&#xff0c;包括数据库的操作、数据表的操作以及数据的增删改查~~ 目录 …

嵌入式学习笔记(27)uart stdio的移植

什么是stdio&#xff1f; &#xff08;1&#xff09;#include <stdio.h> &#xff08;2&#xff09;stdio:standard input output &#xff08;3&#xff09;stdio是os定义的默认的输入和输出通道。一般在PC机的情况下&#xff0c;标准输入指的是键盘&#xff0c;标准…

VIOOVI干货分享:企业车间动作作业分析如何改善?

企业车间动作作业分析是将操作动作分解为最小的分析单位&#xff0c;我们通常称之为动素。通过对动素的定性研究&#xff0c;找出合理有效的动作&#xff0c;缩短操作时间&#xff0c;实现标准化操作。在实际应用中&#xff0c;应分析和研究操作员的各种动作&#xff0c;去除没…

深入探讨Kubernetes(K8s)在云原生架构中的关键作用和应用

文章目录 1. 容器化的应用程序管理2. 自动化扩展和负载均衡3. 容器编排和调度4. 存储管理5. 自动化滚动更新6. 多云和混合云部署7. 监控和日志8. 安全9. 社区支持和生态系统10. 未来展望案例 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1…

Nginx部署前后端分离项目(Linux)

Nginx代理前端页面、后端接口 一、前端打包二、后端打包三、Linux部署Nginx启动、暂停、重启服务器部署文件地址&#xff1a; 一、前端打包 npm run build二、后端打包 通过Maven 使用package打包 三、Linux部署 安装Nginx 安装环境 yum -y install gcc pcre pcre-devel z…