负载测试 kubernetes 服务(使用 istio 服务网格)
Posted
技术标签:
【中文标题】负载测试 kubernetes 服务(使用 istio 服务网格)【英文标题】:load testing kubernetes service (with istio service mesh) 【发布时间】:2021-05-26 02:18:47 【问题描述】:在对通过 istio 完成路由的 Kubernetes 服务进行负载测试时,集群中的所有服务都变得无响应。当正在负载测试的服务出现 100% 故障时,就会发生这种情况。
有没有办法防止这种情况发生?我们应该应用 istio 熔断吗?
【问题讨论】:
【参考方案1】:简而言之,是的。断路器模式旨在检测端点何时响应缓慢或根本没有响应。
响应缓慢的端点特别麻烦,因为您已经发现它可能会导致您的系统滞后。断路器是控制流向端点的代理。如果端点失败或太慢(根据您的配置),代理将打开通往容器的电路。
使用connectionPool
参数,您可以设置要在正在建立的请求上等待多少请求。如果将 http1MaxPendingRequests
设置为 1 并将 maxRequestsPerConnection
设置为 1
在处理待处理的请求之前,任何其他请求都将被拒绝。
另一个有用的选项是OutlierDetection。它检测故障实例,然后使其在预先配置的时间(有时称为睡眠窗口)内不可用。虽然容器处于该时间段内,但它被排除在路由和负载平衡之外,并且有时间恢复,同时不会因更多请求而过载。
outlierDetection:
consecutive5xxErrors: 7
interval: 5m
baseEjectionTime: 15m
上述配置要求系统每5分钟扫描一次主机,如果连续7次失败,它将被弹出15分钟。
【讨论】:
以上是关于负载测试 kubernetes 服务(使用 istio 服务网格)的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes(k8s)之k8s高可用负载均衡集群(haproxy+pacemaker实现负载均衡+高可用)
Kubernetes(k8s)之k8s高可用负载均衡集群(haproxy+pacemaker实现负载均衡+高可用)
如何在 Kubernetes 中使用负载均衡器服务公开多个端口