性能评测|虚拟化和裸金属 K8s 哪个性能更好?
本文重点
- 整体而言,SKS(虚拟机 Kubernetes)可以达到裸金属 Kubernetes 性能的 82% – 96%,满足绝大部分场景下生产容器应用的性能需求。
- 更多虚拟化与裸金属 Kubernetes 架构、特性、适用场景与性能对比,欢迎阅读文末电子书《IT 基础架构团队的 Kubernetes 管理:从入门到评估(更新版)》。
前段时间,我们通过《虚拟化 vs. 裸金属:K8s 部署环境架构与特性对比》和《适合在虚拟化环境中部署 Kubernetes 的三个场景》两篇文章,从功能特性和应用场景的角度,对比了虚拟化环境和裸金属环境部署 Kubernetes 的区别和优劣势。在性能方面,虽然普遍认为裸金属支持 Kubernetes 性能更佳,但对于两个环境的具体表现和性能差距并没有明确的数据参考,甚至有不少用户认为“虚拟化上的 Kubernetes 不能满足生产需求”。
为了让用户直观感受两个环境对 Kubernetes 的支持能力,我们分别测试了基于裸金属与 SMTX Kubernetes Service(SKS)运行有状态应用和无状态应用的性能表现。综合结果显示,SKS(虚拟机 Kubernetes)可以达到裸机 Kubernetes 性能的 82% – 96%,满足绝大部分场景下生产容器应用的性能需求。
1 测试目标
在 Kubernetes 版本、相关的调优参数、应用的资源配置均保持一致的情况下,对比测试超融合(虚拟化环境)上部署 Kubernetes 集群与裸金属服务器部署 Kubernetes 集群的基础性能、有状态应用性能和无状态应用性能。其中,有状态应用选择 MySQL、Redis 和 Kafka,无状态应用选择 Nginx 和微服务测试 Online Boutique。
在这次测试中,我们使用了配置相同(包括 CPU、内存、本地盘和网络)的裸金属服务器。这些服务器被用于部署两种 Kubernetes 集群:一种是通过 SmartX 超融合(内置原生虚拟化 ELF)部署的 SKS Kubernetes 集群(包含 1 个 Control Plane 和 1 个 Worker),另一种是直接运行在一个裸金属上的 Kubernetes 集群。
SKS Kubernetes 集群使用了超融合集群自身的分布式存储,而裸金属上的 Kubernetes 集群则通过 CSI 使用了分离部署的分布式存储集群的资源。这个分布式存储集群的配置(CPU/内存/本地盘/网络)与超融合集群保持一致。


测试环境架构图
为了方便表述,下文中两种测试环境分别简称为“SKS”和“裸金属 Kubernetes”。
2 测试环境配置
2.1 软件环境
2.1.1 SKS 环境(基于超融合部署)
SMTX OS(SmartX 超融合软件):

SKS:

2.1.2 裸金属环境

2.2 硬件环境
裸金属服务器配置见下表。

3 测试过程与结果
3.1 基础性能测试
利用 FIO 对两个环境进行压力测试,结果显示,得益于 SMTX ELF CSI 具备超融合系统中 I/O 本地化的性能优势,SKS 相比裸金属 Kubernetes 性能更佳。




3.2 有状态应用测试
3.2.1 MySQL软件列表:

测试结果:
- ReadWrite

- 连续 1 小时压测

3.2.2 Redis参数设定:
- 10,000,000 requests
- 200 parallel clients
- Mixed 模式数据持久化模式(AOF、RDB)
测试结果:

3.2.3 Kafka参数设定:
- 6 Partition 3 Replication
- num-records 10,000,000
测试结果:

3.3 无状态应用测试
3.3.1 Nginx软件列表:

测试结果:
可以看到,20000 以下的用户并发场景下,SKS 与裸金属 Kubernetes 性能相差小于 1%。

长时间运行后,25000 用户并发场景下,SKS 与裸金属 Kubernetes 性能相差在 12% 左右。

3.3.2 微服务测试 Online Boutique
Online Boutique 是一个云优先的微服务演示应用程序,由 11 层微服务应用程序组成。该应用程序是一个基于网络的电子商务应用程序,用户可以在其中浏览商品、将其添加到购物车并购买。
软件列表:

测试结果:
可以看到,5000 以下的用户并发场景下,SKS 与裸金属 Kubernetes 性能相差小于 4%,后随着用户数量提升,最大差距在 20% 左右。

4 测试结论
综合以上测试结果,可以看到,在 SKS 上运行的有状态和无状态应用的整体性能水平,可达到裸金属 Kubernetes 的 82% – 96%,在一些常规业务压力的场景下,SKS 与裸金属 Kubernetes 几乎可以提供相同的性能,满足绝大多数业务场景的性能需求。具体来说:
- SKS 可以很好地支撑处于早期和起步阶段的用户的容器化应用。
- SKS 可以很好地支撑所有场景中的研发测试集群上的容器化应用。
- 虽然各类企业应用对性能的需求不尽相同,但通过以上多个场景的测试结果可以看出,SKS 可满足大部分常规应用场景的性能需求(除非应用对性能要求非常严格,或同时在线用户数可达到较高水平)。SKS 在下一版本也会增加对裸金属部署环境的支持能力,以满足不同用户和应用的性能需求。
- 另外值得注意的是,此次测试时 SKS 基于 SmartX 超融合部署,并开启了 Boost 模式进行加速,其他的虚拟化方案可能无法达到相同的性能水平。

此外,正如《适合在虚拟化环境中部署 Kubernetes 的三个场景》文章中提到,虽然虚拟化和裸金属支持 Kubernetes 在性能上有所差距,但由于虚拟化在资源效率、弹性扩缩、安全隔离、简易运维等方面的优势,Gartner 预计直到 2027 年依旧会有 70% 的数据中心 x86 工作负载部署在虚拟化环境,为容器化应用提供敏捷支持。

基于虚拟化/超融合建设 Kubernetes 的优势
更多关于 Kubernetes 平台的管理运维知识,您可点击获取电子书《IT 基础架构团队的 Kubernetes 管理:从入门到评估(更新版)》。
阅读原文:虚拟化和裸金属 K8s 哪个性能更好?一文了解多场景下的性能对比数据
相关文章:
性能评测|虚拟化和裸金属 K8s 哪个性能更好?
本文重点 整体而言,SKS(虚拟机 Kubernetes)可以达到裸金属 Kubernetes 性能的 82% – 96%,满足绝大部分场景下生产容器应用的性能需求。更多虚拟化与裸金属 Kubernetes 架构、特性、适用场景与性能对比,欢迎阅读文末电…...
【大厂AI课学习笔记】【1.6 人工智能基础知识】(1)人工智能、机器学习、深度学习之间的关系
6.1 人工智能、机器学习与深度学习的关系 必须要掌握的内容: 如上图:人工智能>机器学习>深度学习。 机器学习是人工智能的一个分支,该领域的主要研究对象是人工智能,特别是如何在经验学习中改进具体算法的性能。 深度学习…...
计算机毕业设计基于的农村蔬菜销售系统SSM
项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: vue mybatis Maven mysql5.7或8.0等等组成,B…...
【Chrono Engine学习总结】3-地型terrain
由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 1、关于物体材质 在介绍地型之前,要初步了解chrono中关于材质的一些基本概念。 首先,最基本的材质类是ChMaterialSurface,其进一步包括&…...
【Linux】构建模块
🔥博客主页:PannLZ 🎋系列专栏:《Linux系统之路》 🥊不要让自己再留有遗憾,加油吧! 文章目录 构建第一个模块1模块的makefile2内核树内构建3内核树外构建 构建第一个模块 可以在两个地方构建模…...
vscode远程连接失败
目录 解决方案尝试1解决方案尝试2 解决方案尝试1 最近通过vscode一直使用腾讯云的服务器作为远程开发环境,以前一直很好用。 直到最近重装了系统之后,发现vscode没法对云服务器进行连接了,即使在远程主机添加了本地的公钥也不行。直接报错:…...
C#系列-C#访问FTP服务器实现上传下载(8)
FTP Server是什么? FTP Server(File Transfer Protocol Server),即文件传输协议服务器,是在互联网上提供文件存储和访问服务的计算机。它依照FTP协议提供服务,专门用来传输文件。 FTP Server允许不同的客…...
django中实现登录
Django中实现登录功能,通常涉及以下几个步骤: 一:实现步骤 1:创建用户模型:Django自带了一个用户认证系统,通常使用内置的User模型来管理用户。你也可以根据需要自定义用户模型。 2:创建登录表…...
【安卓操作系统——讲解】
安卓操作系统 安卓操作系统 安卓操作系统 安卓(Android)是一种基于Linux内核和其他开源软件的移动操作系统,主要用于触屏移动设备如智能手机和平板电脑。由Andy Rubin等人开发,最初的目的是创建一个先进的操作系统,用…...
Linux发行版全景:选择、使用和未来趋势
1. 引言 Linux操作系统的简介 Linux是一种自由和开源的操作系统内核,由Linus Torvalds在1991年首次发布。随着时间的发展,Linux已经成为世界上最流行的操作系统之一,广泛用于服务器、桌面电脑、移动设备以及嵌入式系统。Linux的主要特点是其…...
STM32 与 ARM 的联系
STM32 和 ARM 是两个不同的概念,但它们之间存在一定的联系。 STM32是一种微控制器产品,由意法半导体(STMicroelectronics)推出,其内核采用了 ARM Cortex-M 核。ARM 是一家英国芯片设计公司,专注于设计和许可…...
每日五道java面试题之java基础篇(二)
第一题. 为什么说 Java 语⾔“编译与解释并存”? ⾼级编程语⾔按照程序的执⾏⽅式分为编译型和解释型两种。 简单来说,编译型语⾔是指编译器针对特定的操作系统将源代码⼀次性翻译成可被该平台执⾏的机器码;解释型语⾔是指解释器对源程序逐…...
【Linux】Shell编程
Shell编程 目录 Shell编程1.shell基础1.输入重定向 & 输出重定向2.管道3.特殊字符(3.1)通配符(3.2)引号(3.3)注释符(#) 4.别名5.命令历史history 2.Shell脚本Shell脚本的执行方式(1)为脚本文件加上可执行权限,然后在命令行直接输入shell脚本文件名执行。(2)sh shell脚本名(…...
斯巴鲁Subaru EDI需求分析
斯巴鲁Subaru是日本运输集团斯巴鲁公司(前身为富士重工)的汽车制造部门,以性能而闻名,曾赢得 3 次世界拉力锦标赛和 10 次澳大利亚拉力锦标赛。 斯巴鲁Subaru EDI 需求分析 企业与斯巴鲁Subaru建立EDI连接,首先需要确…...
golang 集成sentry:PostgreSQL
本文介绍通过 pgx库集成sentry, pgx 特点是速度快,可以完全控制,并且支持所有 postgres 数据类型。 pgx地址: https://github.com/jackc/pgx 最简单的接入方式是自定义一个logger, 然后注入到pgx, 完整示…...
ubuntu20.04 安装mysql(8.x)
安装mysql命令 sudo apt-get install mysql-server安装完毕后,立即初始化密码 sudo mysql -u root # 初次进入终端无需密码ALTER USER rootlocalhost IDENTIFIED WITH caching_sha2_password BY yourpasswd; # 设置本地root密码设置mysql远程登录 设置远程登录账…...
ChatGPT升级至GPT-4 Turbo:性能升级同时更为经济
ChatGPT升级至GPT-4 Turbo:性能升级同时更为经济 随着技术的进步,ChatGPT迎来了其最新的迭代版本——GPT-4 Turbo。这一最新版本不仅在性能上得到了显著提升,而且在成本效益上也更加引人注目。 性能提升 GPT-4 Turbo带来了诸多改进&#x…...
Android 粒子喷泉动效
一、前言: 在学习open gl es实现动效的时候,打算回顾了一下用普通的2D坐标系实现粒子效果和 open gl 3d 坐标系的区别,以及难易程度,因此本篇以Canvas 2D坐标系实现了一个简单的demo。 粒子动效原理: 粒子动效本质上…...
fast.ai 深度学习笔记(一)
深度学习 2:第 1 部分第 1 课 原文:medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-1-602f73869197 译者:飞龙 协议:CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它,这…...
【机器学习】Ubuntu系统下CUDA驱动卸载及重装
目录 背景 驱动卸载 驱动安装 CUDA驱动安装 安装nvidia-smi 背景 这里包含显卡驱动和CUDA驱动,在如下场景下,我们需要卸载显卡驱动并重新安装。 在某些情况下需要对显卡驱动进行升级某些情况下(如重启,或者调整系统配置等&a…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
