负载测试 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 服务网格)的主要内容,如果未能解决你的问题,请参考以下文章

[K8s]Kubernetes-服务负载均衡联网(上)

Kubernetes(k8s)之k8s高可用负载均衡集群(haproxy+pacemaker实现负载均衡+高可用)

Kubernetes(k8s)之k8s高可用负载均衡集群(haproxy+pacemaker实现负载均衡+高可用)

如何在 Kubernetes 中使用负载均衡器服务公开多个端口

将 kubernetes(GKE) 服务层指标发送到 GCP 负载均衡器

Kubernetes Ingress 模块初探