ingress-nginx 性能压测
Ingress是目前Kubernetes集群流量接入的重要入口,了解其性能指标有助于用户选用合适的网络方案。
测试方案
通过wrk压测后端nginx服务,对比ingress-nginx和原生nginx以及直连后端性能的差异,如下图:
方案1:压测后端Nginx,通过直连POD IP,Service IP以及External IP等方式
方案2:压测经过Nginx代理,通过直连POD IP,Service IP以及External IP等方式
方案3:压测经过Ingress,通过域名以及不同CPU和worker的性能差距
硬件配置
CPU:2.5GHz Intel® Xeon® Cascade Lake 处理器,睿频3.1GHz,8 cores
Memory: 32GB
测试环境
wrk: 0896020 [epoll] Copyright (C) 2012 Will Glozer
nginx:1.19.4
k8s:1.18.4
centos:7.9.2009
Linux:Linux version 4.14.105-19-0012 (root@TENCENT64.site) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16)
wrk的安装可以参考如下文章:Http性能压测工具 | wrk
性能测试
通过wrk测试,主要关注RPS(每秒请求量):
wrk -t8 -c200 -d30s --latency <待测试地址>
如Ingress测试命令:
wrk -t8 -c200 -d30s --latency http://nginx.qcloud.com/1kb.bin
以下表格数据的单位都是RPS
方案1:压测后端Nginx
分别对POD IP,Service IP以及External IP进行多次测试取平均值:
方案2:压测经过Nginx代理
分别对POD IP,Service IP以及External IP进行多次测试取平均值:
方案3: 压测经过Ingress
对比默认配置下,ingress-ingress的性能:
对比不同CPU,不同worker数量的性能差异,以下ingress-nginx已做性能调优:
不同方案性能对比
以上测试的影响因素还有很多,但是可以看出ingress-nginx的rps对比后端Nginx相差挺大的,而且最新版本的ingress-nginx优化过后的性能提升也不明显。
配置文件
本文测试文件见:https://github.com/DevOpsDays2020/ingress-nginx-benchmark
参考资料
ingress nginx benchmark:https://qingwave.github.io/ingress-benchmark/