Rolling Update

  1. 滚动更新是一次只更新一小部分副本,成功之后在更新更多的副本,最终完成所有的副本的更新,滚动更新的最大好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性

  2. 部署三副本的应用,初始镜像为httpd:2.2.31,然后将其更新到httpd:2.2.32

    1. httpd:2.2.31的配置文件为:在这里插入图片描述

    2. 通过kubectl apply部署在这里插入图片描述

    3. 部署过程为:

      1. 创建Deployment htpd
      2. 创建ReplicaSet httpd-551879778
      3. 创建三个pod
      4. 当前镜像为:httpd:2.2.31
    4. 将配置文件中的httpd:2.2.31替换为httpd:2.2.32,再执行kubectl apply在这里插入图片描述

    5. 发现:

      1. Deployment httpd的镜像更新为httpd:2.2.32
      2. 新创建了ReplicaSet httpd-1276601241,镜像为httpd:2.2.32并且管理了三个新的pod
      3. 之前的ReplicaSet httpd-551879778里面已经没有任何Pod
    6. 结论:ReplicaSet httpd-551879778的三个httpd:2.2.31 pod已经被ReplicaSet httpd-1276601241的三个httpd:2.2.32 pod替换掉了

    7. 具体过程通过kubectl describe deployment httpd查看在这里插入图片描述

    8. 每次替换的Pod数量是可以定制的,kubernetes提供了两个参数maxSurge和maxUnavailable来精细控制Pod的替换数量

  3. 回滚

    1. kubectl apply每次更新应用时,kubernetes都会记录下当前的配置,保存为一个revision(版次),这样就可以回滚到某个revision

    2. 默认配置下,kubernetes只会保留最近的几个revision,可以在Deployment配置文件中通过revisionHistoryLimit属性增加revision数量

    3. 测试:三个配置文件,即httpd.v1.yml,httpd.v2.yml和httpd.v3.yml,分别对应不同的httpd镜像2.4.16,2.4.17,2.4.18在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    4. 通过kubectl apply部署并更新应用在这里插入图片描述

    5. –record的作用是将当前命令记录到revision记录中,这样我们就可以知道每个revision对应的是哪个配置文件,通过kubectl rollout history deployment httpd查看revision历史记录在这里插入图片描述

    6. change-cause就是–record的结果,如果要回滚到某个版本,比如revision 1,可以执行命令kubectl rollout undo deployment httpd --to-revision=1在这里插入图片描述

    7. 此时,revision历史记录也会发生变化,revision1变为了revision4,不过可以通过change-cause知道每个revision的具体含义,所以一定要在执行kubectl apply时加上 --record参数在这里插入图片描述

  4. 回滚的意义:滚动更新采用渐进的方式逐步替换旧版本Pod,如果更新不如预期,可以通过回滚操作恢复到更新前的状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值