aylei / blog

我的中文博客
https://www.aleiwu.com
22 stars 4 forks source link

post/tidb-opeartor-webhook/ #5

Open utterances-bot opened 5 years ago

utterances-bot commented 5 years ago

Kubernetes 中如何保证优雅地停止 Pod

https://aleiwu.com/post/tidb-opeartor-webhook/

ghost commented 5 years ago

基于AdmissionControl的解决方案太优雅了,对我启发很大,谢谢😄

Belyenochi commented 5 years ago

深受启发,感谢前辈

SharpZKing commented 4 years ago

请问:在提到接收SIGTERM信号后处理会遇到”已经卡死了,处理不了优雅退出的代码逻辑“,这句该怎么理解,一般在什么场景下会发生这种情况,谢谢

kevin123de commented 3 years ago

好像示意图看不到了

tan-zhuo commented 2 years ago

写得很不错,优雅停机很有必要,在开发中遇到过此问题,虽然设置了 k8s容器的最小就绪时间 确保容器发布时已进入 nacos 的健康可用状态,但旧的 pod 进行下线时 k8s 却是直接关闭容器,导致没有优雅停机,nacos 这边得等30秒的健康探测,这30秒会因为 gateway 负载均衡导致部分访问流量不可用。看了文章后有所启发。

tan-zhuo commented 2 years ago

后面仔细排查后发现是 spring-cloud-alibaba 中的 dubbo 模块导致该问题,dubbo 优雅下线时没有通知 nacos 导致此问题,问题不是 k8s。已在spring-cloud-alibaba 提交代码进行修复。

WeiFrank commented 1 year ago

pod 状态变成终止中那一刻,网络就被摘除清理,这个时候已经不能与外界进行网络通信了,为什么说可以实现对外部的一些反注册逻辑呢? 这块不太理解

tan-zhuo commented 1 year ago

就是要在 pod 完全关闭前,内部的 应用程序需要跟注册中心(自建注册中心,nacos,consul等)的组件进行最后下线通知。不然注册中心 会以为是宕机导致 pod 心跳中断。这样不够优雅,会存在部分业务流量流入已终止的pod中,导致部分流量处理异常。

tan-zhuo commented 1 year ago

就是不要 直接 删除掉 pod ,而是正常 pod 关闭,直接强制删除掉 pod 这样内部程序直接终止,走不了自己内部程序的一些下线通知流程