美文网首页
理解K8S RollingUpdate

理解K8S RollingUpdate

作者: Tommy1989 | 来源:发表于2021-08-19 14:09 被阅读0次

前言

一直以来,知道K8S具有滚动更新的策略,能支持我们发布的应用实时切换上线,不用停机发布,这个本身也是趋势,但是没有好好的了解过K8S是怎么去实现的,今天正好有人问了我这个问题,所以趁着有时间了解了一下。

常用的部署方式

在了解Rolling Update之前,先说下我们的部署方式,在通常情况下,我们不会直接创建一个Pod或者一个Replica Set,而是通过Deployment去发布一个应用,虽然Deployment跟RS的主要职责是一样的,都是保证Pod的数量和监控,二者大部分功能都是完全一致的,可以把Deployment看成是一个升级版的RS,官方也推荐使用Deployment来管理Pod。具体的区别如下。

  • Replication Controller全部功能:Deployment继承了上面描述的Replication Controller全部功能。
  • 事件和状态查看:可以查看Deployment的升级详细进度和状态。
  • 回滚:当升级pod镜像或者相关参数的时候发现问题,可以使用回滚操作回滚到上一个稳定的版本或者指定的版本。
  • 版本记录: 每一次对Deployment的操作,都能保存下来,给予后续可能的回滚使用。
  • 暂停和启动:对于每一次升级,都能够随时暂停和启动。
  • 多种升级方案:Recreate:删除所有已存在的pod,重新创建新的; RollingUpdate:滚动升级,逐步替换的策略,同时滚动升级时,支持更多的附加参数,例如设置最大不可用pod数量,最小升级间隔时间等等。

Rolling Update

本身Rolling Update是支持RS和Deployment,这里以Deployment Rolling Update为例,当我们更新了Deployment中的应用镜像号后,滚动更新是如何工作的呢?我们可以尝试用命令 $ kubectl get rs -w -n namespace |grep Replica Set Name 来监控整个过程,如下图:

image.png

可以看到执行新的部署后,Deployment会创建一个新的RS(每个RS具有一个hash Id ),上图中的New RS是:7bbc459bdb ,Old RS是:777458cb8d。从监控过程中看到,一开始创建的时候New RS的Pod副本数是0 ,当RS创建完毕后,会更新成Pod数量为1,当创建的pod ready后,在更新Old

RS的Pod副本数量量为1,随后更新New RS Pod副本数量为2,最后在更新Old RS pod数量为0。 这样就实现了Rolling Update策略(rolling update 可以设置滚动升级百分比)。

那么,每个Replica Set 是怎么知道哪些Pod是由自己去控制的呢?

这个就要说到强大的标签管理了,在创建Pod时,有一个pod-template-hash,通过当前RS创建的Pod,这个hash值是一样的,这样就可以分辨新旧版本的Pod,不会出无法分辨的情况了。至此,相信大家已经搞明白Rolling Update是如何工作了。

PS:另外在K8S中 RS的会默认保存10个历史记录加上一个当前的RS,总共11个RS记录(可以调整)方便我们去做回滚。例如,order service的RS的数量如下。

image.png

相关文章

  • 理解K8S RollingUpdate

    前言 一直以来,知道K8S具有滚动更新的策略,能支持我们发布的应用实时切换上线,不用停机发布,这个本身也是趋势,但...

  • Kubernetes容器编排技术

    k8s:云原生(在各种云都像是在本地部署<个人理解>)的基础设置 K8S宏观组件理解 service\lable ...

  • k8s服务优雅退出

    1 检查当前预估服务支持优雅退出 部署预估服务,rollingUpdate,使用Jmeter一直发压力请求 发现会...

  • k8s sheduler的简单理解

    k8s是云时代的“操作系统”,对于k8s的理解,我们可以对照操作系统来学习理解。本篇我们对schduler组件进行...

  • kubernetes(k8s)修仙录总纲

    我是一个牛逼的目录 炼气境—第1层:理解K8S一些基础概念 炼气境—第2层: 理解K8S 的组件和架构计 炼气境—...

  • 第二篇 k8s概览

    k8s 基本知识概念预览 本文引用公司内部大佬的总结和张磊老师在深入理解k8s教程中的知识点 源头 k8s 思想源...

  • 深入理解K8S——Pod Preemption资源抢占

    深入理解K8S——Pod Preemption资源抢占 参考 Pod Priority and Preemptio...

  • 如何看待 k8s 的 HPA

    ​ 最近被问到如何理解 k8s 弹性伸缩的这样的问题,而我最初的回答很简单也很肤浅,我说:k8s 是 H...

  • 每周阅读(3/4/2019)

    k8s 源码分析要深入理解 k8s,还是要对源码和运作机制有所了解,这本书还在创作中,可以跟踪看看。 技术面试的应...

  • k8s集群搭建

    简介 k8s集群有两种方式 方式优势缺点kubeadm简单、快速无法更好的理解k8s各个组件之间的关系二进制包安装...

网友评论

      本文标题:理解K8S RollingUpdate

      本文链接:https://www.haomeiwen.com/subject/vezobltx.html