本文重点

  • 整体而言,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裸金属性能测试1.png

sks-bare-metal-performance-2.png

测试环境架构图

为了方便表述,下文中两种测试环境分别简称为“SKS”和“裸金属 Kubernetes”。

 

2 测试环境配置

2.1 软件环境

2.1.1 SKS 环境(基于超融合部署)

SMTX OS(SmartX 超融合软件):

sks-bare-metal-performance-3.png

SKS:

sks-bare-metal-performance-4.png

2.1.2 裸金属环境

sks-bare-metal-performance-5.png

2.2 硬件环境

裸金属服务器配置见下表。

sks-bare-metal-performance-6.png

 

3 测试过程与结果

3.1 基础性能测试

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

skstest-7.pngskstest-8.pngskstest-9.pngskstest-10.png

3.2 有状态应用测试

3.2.1 MySQL软件列表:

sks-bare-metal-performance-11.png

测试结果:

  • ReadWrite

sks裸金属性能测试4.png

  • 连续 1 小时压测

sks裸金属性能测试5.png

3.2.2 Redis参数设定:

  • 10,000,000 requests
  • 200 parallel clients
  • Mixed 模式数据持久化模式(AOF、RDB)

测试结果:

sks裸金属性能测试6.png

3.2.3 Kafka参数设定:

  • 6 Partition 3 Replication
  • num-records 10,000,000

测试结果:

sks裸金属性能测试7.png

3.3 无状态应用测试

3.3.1 Nginx软件列表:

sks-bare-metal-performance-16.png

测试结果:

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

sks裸金属性能测试8.png

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

sks裸金属性能测试9.png

3.3.2 微服务测试 Online Boutique

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

软件列表:

sks-bare-metal-performance-19.png

测试结果:

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

sks裸金属性能测试10.png

 

4 测试结论

综合以上测试结果,可以看到,在 SKS 上运行的有状态和无状态应用的整体性能水平,可达到裸金属 Kubernetes 的 82% – 96%,在一些常规业务压力的场景下,SKS 与裸金属 Kubernetes 几乎可以提供相同的性能,满足绝大多数业务场景的性能需求。具体来说:

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

sks裸金属性能测试11.png

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

sks裸金属性能测试13.png

基于虚拟化/超融合建设 Kubernetes 的优势

更多关于 Kubernetes 平台的管理运维知识,您可点击获取电子书IT 基础架构团队的 Kubernetes 管理:从入门到评估(更新版)

继续阅读