虚拟化vs.裸金属:两种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 环境(基于超融合部署)
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 平台的管理运维知识,您可扫描下方二维码,一键获取电子书《IT 基础架构团队的 Kubernetes 管理:从入门到评估(更新版)》。
扫码关注“SmartX 用户社区”后将自动弹出电子书
未来,SmartX 学院还会陆续更新更多 IT 基础架构热门技术解读、运维管理参考、行业用户场景实践等方面的干货资料,欢迎读者订阅感兴趣的内容频道,及时获取最新资料!
>>订阅方式:进入 SmartX 用户社区,点击菜单栏右侧“我的社区”-“内容订阅”。
推荐阅读: