Rolling Update

news/2024/9/25 2:42:38/
  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,如果更新不如预期,可以通过回滚操作恢复到更新前的状态


http://www.ppmy.cn/news/1530076.html

相关文章

从零到一:打造安全高效敦煌测评自养号体系

敦煌测评自养号是一种提升店铺销售和排名的有效策略,卖家可以自行注册并管理买家账号,通过模拟真实买家行为为自家店铺进行测评和补单。以下是一些关键技巧,帮助卖家快速提升销售和排名: 一、账号注册与养号 环境搭建&#xff1…

C#为任意组件开发登录功能的记录

非常简单,直接给出代码: 数据库操作类 这个无需多言就是简单的包含了数据操作的内容,允许你在这一个类中写完关于本地数据库或者云数据库操作的逻辑,与登录逻辑分开哦。 注意,如果你的软件要给别人运行使用&#xf…

Snapchat API 访问:Objective-C 实现示例

Snapchat 是一个流行的社交媒体平台,它允许用户发送和接收短暂存在的图片和视频。对于开发者来说,访问 Snapchat API 可以为应用程序添加独特的社交功能。本文将介绍如何在 Objective-C 中实现对 Snapchat API 的访问,并提供一个详细的代码示…

GAMES104:15 游戏引擎的玩法系统基础-学习笔记

文章目录 0,游戏性课程框架一,事件机制1.1 事件的定义1.2 callback的注册1.3 事件的分发系统 二,游戏逻辑与脚本系统2.1 特点和常见脚本语言2.2 脚本语言的GO管理2.3 脚本语言的架构2.4 可视化脚本 三,Gameplay 开发中的3C &#…

WebGL渲染与创建2D内容

目录 创建画布2D渲染修改顶点着色器光照深度测试混合模式WebGL是一个强大的工具,可以用来在Web浏览器中创建复杂的3D图形。虽然它的设计初衷是为了3D渲染,但也可以用于创建2D内容。通过巧妙地利用几何、投影和纹理,我们可以构建出各种2D图形。 创建画布 首先,我们需要在H…

科研入门学习

学习视频链接 为什么要读论文 读哪些论文 论文的分类 论文质量 如何找论文 根据领域大牛的名字进行搜索查看高水平论文引用的论文,高水平论文引用的论文很大程度也是高水平的论文 如何整理论文 如何读论文 读论文的困境 不同人群阅读差异 读论文的方式 论文的结构…

Qt 类型选择器和类选择器的区别

概念上的区别请查看此篇博客:Qt 样式表、选择器、盒子模型,下面我直接举例说明。 示例界面: 1、类型选择器: QWidget {background-color: rgb(255, 85, 127); }运行结果(因为QPushButton是QWidget的子类&#xff0…

图变换器:为图数据增强神经网络架构

人工智能咨询培训老师叶梓 转载标明出处 当面对图数据时,尤其是那些拓扑结构重要的图,传统的 Transformer 架构并未能充分利用图的连接性特征,导致性能受限。为了解决这一问题,新加坡南洋理工大学的研究人员提出了一种新的神经网…