如何从春季启动到Kubernetes发出“不良”而不是“致命”健康检查信号?

时间:2019-11-15 16:19:35

标签: kubernetes spring-boot-actuator kubernetes-health-check

我们正在寻找一种执行器健康检查的方法,以发出某种意图,例如“我正在am步但没有死亡。如果还有X个声称健康的豆荚,那么您应该重新启动我,否则,让我li行。”

我们在集群式Kubernetes容器中托管了一个休息服务,该容器会定期调出以从外部资源中获取新数据。有时,我们无法访问这些外部资源,有时但并非每次都可以,但重新启动Pod可以解决问题。

服务可以在可能过时的数据上正常运行。尽管我们不想继续对过时的数据进行操作,但最好还是完全关闭。

在此期间,我们计划让一个节点单方面决定在自上次成功同步以来经过X的时间后才通过执行器报告任何问题,但这实际上只是延迟了所有节点仍会延迟的时间点报告失败。

1 个答案:

答案 0 :(得分:1)

在Kubernetes中,您可以使用LivenessProbe和ReadinessProbe来让控制器修复您的服务,但是使用HTTP响应代码或替代的降级服务可以更好地处理某些情况。< / p>

LivenessPobe

使用LivenessProbe来解决僵局。如果您的Pod在LivenessProbe上没有响应,它将被杀死,并用新的Pod替换它。

ReadinessProbe

当您的广告连播未准备好处理请求时,使用ReadinessProbe,例如如果您的pod需要在读取请求之前读取一些文件或需要连接到外部服务。

影响所有副本的故障

如果您遇到所有副本都依赖的问题,例如外部服务已关闭,则无法通过重新启动Pod来解决它。在这种情况下,您可以使用OpsToogle或断路器,并通知其他服务您降级或显示有关临时错误的消息。

适合您的情况

  

如果还有X个声称健康的豆荚,那么您应该重新启动我,否则,让我li行。

您不能将该逻辑委托给Kubernetes。您的应用程序需要了解每种故障情况,例如如果错误是瞬时网络错误,或者您的错误将影响所有副本。