我应该为 Kubernetes 健康检查实施一个专用的 api 端点吗?

Should I implement a dedicated api endpoint for Kubernetes health checks?

我在 Kubernetes 集群上部署了一个 next.js 前端服务器和一个 express.js 后端服务器,它会发出自动健康检查,目前在两台服务器的根路径(“/”)上.

我的问题是,我应该实施自己的健康检查路由,例如“/health”,并且只在该路由上 return 一个 200 HTTP 响应代码,还是应该让它保持原样现在?

恐怕我会在两台服务器的根路径(“/”)端点上实现很多功能,这会给我的两台服务器带来更多压力,因为集群会继续发出请求到那些端点。

实际上,如果您担心影响应用程序的性能,从 compute/memory 资源的角度来看,这取决于 material 您在 / 下提供的服务。

如果您服务于 HTML 的大块,它实际上会影响您的性能,我建议实施不同的端点 /health 以便 healthcheck 与 Kubernetes Readiness Probes 一起使用例如。

如果/的内容很轻,不太可能会有所作为。就改进 'stress' 而言,当 运行 在 K8s 中使用 Liveness/Readiness 探测器进行健康检查时,您可以通过增加 periodSeconds in them, but keep in mind that if you have multiple pods behind a Kubernetes service 和其中之一来缓解这种情况pods 健康检查存在一些问题,从服务中删除该 pod 需要更长的时间,从而导致更长的潜在时间 'downtime'。