GKE Ingress:下载文件时出现502错误

时间:2018-03-28 16:59:51

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

我在GKE部署了集群,并使用Ingress公开了。静态资源和多数或REST请求工作正常。但是我在下载文件请求时收到了502 Server Error。错误消息为: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控制器的任何日志。
  3. 为什么这个请求不能与Ingress一起使用,如何解决?我在哪里可以找到GKE中Ingress的日志?

2 个答案:

答案 0 :(得分:0)

据我所知,没有针对入口的特定日志,但您可以检查入口状态和详细信息:

kubectl get ingress

kubectl describe ingress [YOUR INGRESS]  

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

kubectl logs [BACKEND POD NAME]

答案 1 :(得分:0)

当呼叫超过30秒(这是GKE中后端服务的默认超时时间)时(通过Ingress)对服务器的请求时,我遇到了同样的问题。

我知道这是一个老问题,所以我在这里的答案仅供未来的Google员工使用。

您写道,您增加了超时时间,但并未解决该错误。 请注意,后端服务的超时增加确实需要一些时间才能生效。我读过某个地方,大概需要20分钟。

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