【问题标题】:GKE Ingress: 502 error when downloading fileGKE Ingress:下载文件时出现 502 错误
【发布时间】:2018-03-28 16:59:51
【问题描述】:

我在 GKE 上部署了集群,并使用 Ingress 公开。静态资源和多数或 REST 请求工作正常。但我在下载文件请求时收到 502 服务器错误。错误信息是:The server encountered a temporary error and could not complete your request.Please try again in 30 seconds.

没有 Ingres,当使用 LoadBalancer 时,下载工作正常。我怀疑 Ingress 不喜欢后端响应。这是成功响应标头(没有 Ingress):

HTTP/1.1 200 OK
transfer-encoding: chunked
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Transfer-Encoding: chunked
Date: Wed, 28 Mar 2018 13:55:39 GMT

我尝试过的:

  1. 将云控制台中入口转发规则的后端服务超时时间从默认的 30 秒增加到 100 秒
  2. 搜索 stackdriver 日志 - 未找到任何 Ingress 控制器的日志。

为什么这个请求不适用于 Ingress,如何解决?我在哪里可以找到 GKE 中的 Ingress 日志?

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine kubernetes-ingress


    【解决方案1】:

    据我所知,入口没有具体的日志,但您可以查看入口状态和详细信息:

    kubectl get ingress
    
    kubectl describe ingress [YOUR INGRESS]  
    

    然后检查哪个是配置的后端 pod 并检查那里的日志。

    kubectl logs [BACKEND POD NAME]
    

    【讨论】:

    • 这似乎不是后端而是 Ingress 的问题,所以我对 Ingress 日志很感兴趣。后端日志不包含 502 错误的原因 - 这是 Ingress 的一些内部错误。
    • 你能分享这些输出吗? - kubectl 描述入口 [YOUR INGRESS] - kubectl 获取事件 - kubectl 获取 [YOUR INGRESS] -o yaml
    【解决方案2】:

    当调用超过 30 秒(这是 GKE 中后端服务的默认超时)向服务器(通过 Ingress)发出请求时,我遇到了同样的问题。

    我知道这是个老问题了,所以我在这里的回答只针对未来的 Google 员工。

    您写道,您增加了未修复错误的超时。 请注意,后端服务的超时增加确实需要一些时间才能生效。我在某个地方读到它可能需要长达 20 分钟。

    因此,如果您在调用 30 秒后仍然收到 502 错误,则问题可能仍然是由 GCP 中的后端服务达到超时引起的 - 所以请等待 20 分钟,然后重试。

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多