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