"OpenKruise中endpoint摘流问题
滚动部署:endpoint监听pod删除事件,当有删除事件时,endpoint会在svc后端被摘除掉,然后走preStop优雅下线流量无损。
原地部署:那么就不会有这个事件,先执行preStop(1s执行完),然后这时业务会识别sigterm信号开始退出,这时候就绪探针需要3次才失败,例如每次5s,那么是不是需要等就绪探针识别,才会摘除endpoint,这时候14s之内还是会有流量进来。"
OpenKruise的endpoint摘流问题主要出现在滚动部署和原地部署中。在滚动部署中,当有pod删除事件发生时,endpoint会在svc后端被摘除掉,然后执行preStop优雅下线,流量无损。然而,在原地部署中,由于不存在pod删除事件,业务会识别sigterm信号开始退出,这时候就绪探针需要3次才失败,例如每次5s。为了解决这个问题,您可能需要等待就绪探针识别后才会摘除endpoint,这样在14s之内仍然会有流量进来。
是的,你的理解是对的。在原地部署的情况下,endpoint会在preStop阶段被摘除,而这个阶段需要一定的时间来完成。在这段时间内,新的pod还没有准备好接收到流量,所以可能会有一段时间的流量中断。
为了避免这种情况,可以在preStop阶段做一些额外的操作,例如提前停止服务,或者将流量导向其他节点。这样可以确保在endpoint被摘除之前,流量已经被正确地路由到了其他地方,从而避免了流量中断的问题。
在OpenKruise中,endpoint摘流的问题主要与滚动部署和原地部署的差异有关。滚动部署时,endpoint会监听pod删除事件,并在svc后端被摘除掉,然后走preStop优雅下线流量无损。而在原地部署时,由于没有删除事件,endpoint会先执行preStop(1s执行完),然后就绪探针需要3次才失败,这样就可能会导致14s之内还有流量进来。为了避免这个问题,建议在原地部署时,使用就绪探针并设置合理的超时时间,以确保endpoint能够在业务退出之前被摘除掉。
在OpenKruise中,endpoint摘流问题主要涉及到两种部署方式:滚动部署和原地部署。
滚动部署:在这种部署方式下,endpoint会监听pod的删除事件。当有删除事件发生时,endpoint会在Service后端被摘除,然后执行preStop优雅下线流量无损。这种情况下,流量不会受到影响,因为Pod已经被摘除,所以不需要等待就绪探针识别。
原地部署:在这种部署方式下,没有监听pod的删除事件。首先执行preStop(1s执行完),然后业务开始识别sigterm信号并退出。这时候就绪探针需要3次才失败,例如每次5s。在这种情况下,可能需要等待就绪探针识别,才会摘除endpoint。但是,由于已经发生了Pod的删除事件,所以14s之内仍然会有流量进来。
总之,在OpenKruise中,endpoint摘流问题主要取决于部署方式。对于滚动部署,流量不会受到影响;而对于原地部署,可能需要等待就绪探针识别才能摘除endpoint。
pod ready 后才会引流,配置好就绪探针就行,假如没有就绪探针Running既Ready。此答案整理至钉群“OpenKruise 社区交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。