如何调试 GCP LoadBalancer 中的 502 错误

How to debug a 502 error in GCP LoadBalancer

我有一个 k8s ingress,背后有超过 5 个后端服务。入口生成一个 GoogleCloud LoadBalancer。

每个服务都通过 http path 规则路由流量。例如。一个应用程序在 /foo,另一个在 /bar,等等。 他们都工作正常。然后我添加了一个新的应用程序,有后端服务和路由规则,所有的方式都和其他人一样。

但是当我点击新应用程序的 URL 时,我不断收到此错误消息:

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

当我在 GCP 控制台中打开入口时,我可以看到这个警告:

不健康的服务来自我新添加的应用程序。

奇怪的是,当我点击 URL 时,应用程序确实获得了流量。我可以在日志中看到它。但我仍然收到 502 错误并且后端服务显示为不健康。

我不太确定如何调试它以找出问题所在。

所以,问题是 LB 健康检查正在命中 /,这是应用程序上不存在的端点(也就是它没有返回 OK 200)。

我向 k8s 部署添加了 readiness 探测器。根据 GCP Ingress docs,如果有 readiness 探测器,入口将拾取它并将其用作 LB 健康检查。

我还必须手动更新后端服务的健康检查对象命中的路径。我想在设置入口之前应该存在带有就绪探测的 pod,否则它不会自动更新健康检查对象。