1

我在 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. 搜索堆栈驱动程序日志 - 没有找到入口控制器的任何日志。

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

4

2 回答 2

0

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

kubectl get ingress

kubectl describe ingress [YOUR INGRESS]  

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

kubectl logs [BACKEND POD NAME]
于 2018-04-01T14:33:33.437 回答
0

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

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

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

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

于 2020-03-20T12:26:12.927 回答