k8s的Deployment部署策略线上踩坑

线上问题

我们有个服务,专门做t-1日的增量数据入仓的. 入仓流程: 每日0点系统新建个csv文件, 通过kafka监听增量数据, 实时数据写入该csv文件, 供下游数仓次日取数.
每日产生数据50G(1.8亿条)左右, 有天重启服务, 下游数仓直接告警提示: 数据有好多条脏数据,导致无法继续入仓.

结论先行

我们服务托管在k8s平台上, 这个服务是单pod, k8s默认发版策略是滚动更新,当滚动更新发版时,会出现2个pod同时存在,双pod共同往csv文件写数据.
导致脏数据, 解决方案把发版策略滚动更新改为重建更新就好.

Deployment策略

滚动更新(Rolling Update)
滚动更新是默认的更新策略,一次仅更新一批Pod,当更新的Pod就绪后再更新另一批,直到全部更新完成为止;该策略实现了不间断服务的目标,但是在更新过程中,不同客户端得到的响应内容可能会来自不同版本的应用,会出现新老版本共存状态。
删除式更新(Recreate),当更新策略设定为Recreate,在更新镜像时,它会先删除现在正在运行的Pod,等彻底杀死后,重新创建新的RS(ReplicaSet),然后启动对应的Pod,在整个更新过程中,会造成服务一段时间无法提供服务。也称之为单批次更新。

重建更新(Recreate)
Recreate策略在更新镜像时,它会先删除现在正在运行的Pod,等彻底杀死后,重新创建新的RS(ReplicaSet),然后启动对应的Pod,在整个更新过程中,会造成服务一段时间无法提供服务。也称之为单批次更新。Recreate升级策略分为三个步骤:
1.杀死所有旧版本的Pod,此时Pod无法正常对外提供服务;
2.创建新的RS,启动新的Pod;
3.等待Pod就绪,对外提供服务;

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值