在典型的Kubernetes部署中,所有到Kubernetes服务的流量都流经ingress代理——从Internet到后端服务的流量。这样,ingress就在您提高性能的关键路径上。有多种基准测试和衡量性能的方法。
衡量ingress代理性能的最常见方法可能是原始吞吐量。在这种类型的测试中,通过代理发送越来越多的流量,并且测量代理可以处理的最大流量。典型的测量方法是以每秒请求(RPS)为单位来测量性能。
但是,实际上,大多数组织不太可能推动任何现代代理的吞吐量限制。此外,吞吐量呈线性增长——当代理服务器的吞吐量最大化时,可以部署第二个实例以有效地使吞吐量增加一倍。
本文探讨了另一种类型的性能:延迟。通过代理的每个请求都会在代理解析请求并将请求路由到适当的目的地时引入少量延迟。与吞吐量不同,仅通过扩展代理服务器的数量是无法改善延迟。而且,至关重要的是,延迟会对您的关键业务指标产生重大影响。
Kubernetes的Edge Proxies
可以说,当今最流行的三个L7代理是Envoy Proxy,HAProxy和NGINX。在Kubernetes中,这些代理通常是通过控制平面配置的,而不是直接部署的。在本文中,在Kubernetes上测试了三种流行的开源控制平面/代理组合:
ingress-nginx是Kubernetes最常见的入口,建立在NGINX之上。我们使用
nginx-ingress-controller:0.25.0
,它基于OpenResty 1.15.8,而后者又基于NGINX 1.15.8。HAProxy ingress controller(https://github.com/jcmo