如何调试 GCP LoadBalancer 中的 502 错误

Mil*_*iez 1 google-cloud-platform kubernetes google-kubernetes-engine kubernetes-ingress google-cloud-load-balancer

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

每个服务都通过 httppath规则将流量路由到。例如。一个应用程序打开/foo,另一个应用程序打开/bar,等等。所有这些都工作正常。然后我添加了一个新的应用程序,具有后端服务和路由规则,一切与其他应用程序相同。

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

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.
Run Code Online (Sandbox Code Playgroud)

当我在 GCP 控制台中打开入口时,我可以看到以下警告:在此输入图像描述

而不健康的服务是我新添加的应用程序中的服务。

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

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

Mil*_*iez 5

因此,问题在于 LB 运行状况检查命中了/应用程序上不存在的端点(又名。它没有返回OK 200)。

我将readiness探针添加到 k8s 部署中。根据GCP Ingress 文档,如果有readiness探测器,入口将拾取它并将其用作 LB 运行状况检查。

我还必须手动更新后端服务的运行状况检查对象所访问的路径。我猜想带有就绪探针的 Pod 应该在设置入口之前存在,否则它不会自动更新运行状况检查对象。