我在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
我尝试了什么:
为什么这个请求不能与Ingress一起使用,如何解决?我在哪里可以找到GKE中Ingress的日志?
答案 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分钟,然后重试。