如何调试 GCP LoadBalancer 中的 502 错误
How to debug a 502 error in GCP LoadBalancer
-
google-cloud-platform
-
kubernetes
-
google-kubernetes-engine
-
kubernetes-ingress
-
google-cloud-load-balancer
我有一个 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,否则它不会自动更新健康检查对象。
google-cloud-platform
kubernetes
google-kubernetes-engine
kubernetes-ingress
google-cloud-load-balancer
我有一个 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,否则它不会自动更新健康检查对象。