【问题标题】:Intermittent responses from our AKS cluster; suspected load balancer problem来自我们 AKS 集群的间歇性响应;怀疑负载均衡器问题
【发布时间】:2021-08-14 22:02:49
【问题描述】:

我们最近设置了一个带有 NGINX 控制器的 AKS 集群。

访问好像没问题,但后来发现偶尔请求无法连接。

为了演示这个问题,我们使用了一个简短的 powershell 脚本,它向 URL 重复请求,写出响应的状态代码,等待 0.5 秒,然后重复。

$url = "https://staging.[...].[...]"
$i = 0

while($true)
{
    $statusCode = "ERROR"   

    try{
        $statusCode = (invoke-webrequest $url).statuscode
    }
    catch{
        $statusCode = $_
    }    

    $i = $i + 1
    write-host "$i Checking $url --> $statusCode"
    start-sleep -seconds 0.5
}

当我运行这个脚本时,它可以运行大约 200 个请求,每次返回一个 200 (OK) 响应,然后它将暂停大约 30 秒(我假设这是 Invoke-WebRequest 方法的超时时间)然后写“无法连接到远程服务器”。

为了调试问题,我们启用了端口转发以绕过负载均衡器,从而直接寻址 pod(添加了主机标头):没问题; powershell 脚本在至少 10 分钟内始终显示 200 响应。

我们还启用了到 NGINX 控制器的端口转发并重复测试:再次,一致的200 响应。

但如果未启用端口转发,对 URL 的请求(现在通过负载平衡器)会显示间歇性连接问题。

奇怪的是,当我运行脚本时,这些连接问题每 200 或 201 个请求发生一次,但是当一位同事运行相同的脚本时,他对每个第二个或第三个请求都没有响应。我可以重复此操作,并以一致的时间间隔继续查看这些连接问题。

更新:
负载均衡器看起来像这样......

【问题讨论】:

  • 您为集群设置了哪种负载均衡器?它的日志显示什么?
  • 我添加了一个显示负载均衡器详细信息的屏幕截图。
  • 你好@awj。你能提供你当前的 yaml 配置吗?

标签: kubernetes azure-aks azure-load-balancer


【解决方案1】:

我无法解释为什么,但我们发现如果我们将节点池中的虚拟机从可爆发的虚拟机更改为不可爆发的虚拟机(从“B”类更改为“D”类),那么问题消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多