我们正在寻找一种执行器健康检查的方法,以发出某种意图,例如“我正在am步但没有死亡。如果还有X个声称健康的豆荚,那么您应该重新启动我,否则,让我li行。”
我们在集群式Kubernetes容器中托管了一个休息服务,该容器会定期调出以从外部资源中获取新数据。有时,我们无法访问这些外部资源,有时但并非每次都可以,但重新启动Pod可以解决问题。
服务可以在可能过时的数据上正常运行。尽管我们不想继续对过时的数据进行操作,但最好还是完全关闭。
在此期间,我们计划让一个节点单方面决定在自上次成功同步以来经过X的时间后才通过执行器报告任何问题,但这实际上只是延迟了所有节点仍会延迟的时间点报告失败。
答案 0 :(得分:1)
在Kubernetes中,您可以使用LivenessProbe和ReadinessProbe来让控制器修复您的服务,但是使用HTTP响应代码或替代的降级服务可以更好地处理某些情况。< / p>
使用LivenessProbe来解决僵局。如果您的Pod在LivenessProbe上没有响应,它将被杀死,并用新的Pod替换它。
当您的广告连播未准备好处理请求时,使用ReadinessProbe,例如如果您的pod需要在读取请求之前读取一些文件或需要连接到外部服务。
如果您遇到所有副本都依赖的问题,例如外部服务已关闭,则无法通过重新启动Pod来解决它。在这种情况下,您可以使用OpsToogle或断路器,并通知其他服务您降级或显示有关临时错误的消息。
适合您的情况
如果还有X个声称健康的豆荚,那么您应该重新启动我,否则,让我li行。
您不能将该逻辑委托给Kubernetes。您的应用程序需要了解每种故障情况,例如如果错误是瞬时网络错误,或者您的错误将影响所有副本。