我正在构建一些Spring Boot微服务,这些服务将部署在Kubernetes(专用于AKS)集群中。我打算为活泼和准备状态检查设置probePaths到执行器运行状况端点的两个点,但是我想知道这是否不是最佳选择。我最初的想法是检查路径将很有用(至少对于准备就绪而言),以便在Spring启动并能够处理请求之前,不向其发送流量。由于这些服务使用数据库连接,并且如果执行器运行状况指示器无法建立连接,则执行器运行状况指示器将报告状态为关闭,这不是一个好主意吗?
[以活泼的态度,我想它可能会一遍又一遍地回收豆荚/容器,即使(在数据库关闭的情况下,它可能无法解决任何问题。
准备就绪,我想如果数据库关闭,这可能会导致可用应用程序池为0。如果数据库关闭,该应用程序本身很有可能不是很有用,但是我想某些部件可能仍然可以工作。
是否有针对此类事情的推荐最佳实践?
使用运行状况检查来检查该应用是否已准备好处理新请求。可以在/actuator/health
中实现。另请参见下面的[[StartupProbe。
在高负载下?
如果您的应用程序处于高负载
下,请考虑使用Horizontal Pod Autoscaler获取更多副本以处理负载。LivenessProbe-应用是否死锁了?java.lang.System.exit(1)
。如果应用程序可能出现死锁,无法继续运行,请考虑为LivenessProbe
实现端点,此may
与ReadinessProbe
相同。长时间未响应准备就绪
如果您的应用长时间没有响应ReadinessProbe
,例如很多分钟,可能是有问题(除非您期望应用会发生这种情况),然后您可能还应该将/actuator/health
用作LivenessProbe,但具有较高的failureThreshold
和high [ C0](例如几分钟)[StartupProbe-Kubernetes 1.16+上的更好替代方案ReadinessProbe
在应用启动过程中最有用,因为它可能需要加载例如准备好接收请求之前的数据-在Pod生命周期中定期执行but ReadinessProbe。 StartupProbeinitialDelaySeconds
,用于与LivenessProbe组合使用的缓慢启动的应用程序,该应用程序仅在startupProbe之后才有效。使用管理服务器端口kubelet
。考虑将is now a better alternative用于探头。您无需将此端口暴露给Management Server Port,最好将一个端口用于http,将另一个端口用于management。入口健康检查Service
默认为Google Cloud Platform。 在我看来,不与其数据库(或其他重要基础结构)保持连接的应用程序就像无用一样好。由于它可能无法正常运行,因此您最好报告它不可用。因此,除非您遇到与数据库的连接不良或其他问题,否则我真的看不到使用/ actuator / health既活泼又准备就绪的危害。另外,这是一种检查应用程序是否已启动并运行的廉价方法,只需很少的手动工作即可进行设置。