开发者社区> 问答> 正文

在业务部署滚动更新中,如果发现引起业务服务中的是被删除的老pod,原因是什么?

已解决

在业务部署滚动更新中,如果发现引起业务服务中的是被删除的老pod,原因是什么?

展开
收起
詹姆斯邦德00 2022-10-14 17:15:06 299 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    这是因为对于k8s来说, 在删除过程中需要对多个对象(如 Endpoint、ipvs/iptables、SLB)进行状态同步,这些同步操作是异步执行的。在pod被删除的时候,pod会被置于terminating状态,从相关的svc移除,不再承接新流量,但是依然可以处理老的流量请求。但是由于是异步进行的,所以存在相关pod已经收到了SIGTERM的信号,被终止,但是还未被从SLB后端移除,造成了流量被发送到了deleted的pod上,所以针对这种情况,建议使用PreStop,使pod收到了SIGTERM后不要马上终止,确保被SLB转发而来的流量请求依然可以被处理。 但是需要注意PreStop的时间不可以超过 terminationGracePeriodSeconds,如果到达了 terminationGracePeriodSeconds 时间,PreStop还未执行完毕,pod依然会被马上强制终止。

    以上内容摘自《企业级云原生白皮书项目实战》电子书,点击https://developer.aliyun.com/ebook/download/7774可下载完整版

    2022-10-17 16:54:08
    赞同 展开评论 打赏
问答分类:
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
基于流量的灰度发布和自动弹性实践 立即下载
运用新技术解决有状态应用的冷热迁移挑战 迁移策略+新容器运行时 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载