K8s Readiness探针失败时流量如何路由?是否会中断已有会话?
Kubernetes Readiness探针故障行为解答
结论
你描述的场景中,K8s会执行第2种操作。
原理说明
Readiness探针的设计定位就是标记Pod是否可以承接新流量,和负责检测Pod存活状态、失败会触发Pod重启的Liveness探针有明确分工:
- Readiness探针检测失败后,K8s只会将该Pod从对应Service的后端Endpoint列表中移除,停止向该Pod路由新流量,不会主动中断已经建立的TCP连接、也不会强制终止正在处理的业务会话。
- 已有会话可以继续运行直到处理完成,运行上限受你配置的Ingress会话超时时间、Pod的
terminationGracePeriodSeconds参数限制,只要在超时阈值内处理完成,就可以正常向用户返回结果。
适配你的场景的补充建议
你基于Readiness探针做Pod满载标记的方案是完全可行的,如果你的业务存在较长的耗时会话,可以将Pod的terminationGracePeriodSeconds参数设置为略长于你业务单任务的最大耗时,避免后续HPA缩容时Pod被强制销毁导致正在运行的任务中断。
内容的提问来源于stack exchange,提问作者Dmytro Sirant
相关产品推荐
相关产品推荐

