本文重点
- 整体而言,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 哪个性能更好?一文了解多场景下的性能对比数据