9.1.使用RC实现滚动升级

#kubectl rolling-update kubia-v1 kubia-v2 --image=luksa/kubia:v2

  使用kubia-v2版本应用来替换运行着kubia-v1的RC,将新的复制控制器命名为kubia-v2,并使用luksa/kubia:v2最为镜像。

升级完成后使kubectl describe rc kubia-v2查看升级后的状态。
为什么现在不再使用rolling-update?
1.直接更新pod和RC的标签并不是一个很的方案;
2.kubectl只是执行升级中的客户端,但如果执行kubectl过程中是去了网络连接,升级将会被中断,pod和RC将会处于一个中间的状态,所以才有了Deployment资源的引入。

9.2.使用Deployment声明式的升级应用

Rs替代Rc来复制个管理pod。
创建Deployment前确保删除所有的RC和pod,但是暂时保留Service,
kubectl delete rc --all
创建Deployment
#kubectl create -f kubectl.depl-v1.yaml --record  //--record可以记录历史版本#查看Deployment的相关信息
#kubectl get deployment
#kubectl describe deployment#查看部署状态:
#kubectl rollout status deployment kubia

  

9.3.触发deployment升级

#kubectl edit deployment kubia //修改完后资源对象会被更新
#kubectl patch deployment kubia -p '{...}' //只能包含想要更新的字段
#kubectl apply -f kubia-deploy-v2.yml //如果yml中定义的资源不存在,会自动被创建
#kubectl replace -f kubia-deploy-v2.yml //如果yml中定义的资源不存在,则会报错

修改configmap并不会触发升级,如果想要触发,可以创建新的configmap并修改pod模板引用新的configmap。

9.4.回滚deployment

在上述升级deployment过程中可以使用如下命令来观察升级的过程
#kubectl rollout status deployment kubia

如果出现报错,如何进行停止?可以使用如下命令进行回滚到先前部署的版本
#kubectl rollout undo deployment kubia

如何显示deployment的历史版本?
#kubectl rollout history deployment kubia

如何回滚到特定的版本?
#kubectl rollout undo deployment kubia --to-revision=1

  

9.5.控制滚动升级的速率

在deployment的滚动升级过程中,有两个属性决定一次替换多少个pod:maxSurge、maxUnavailable,可以通过strategy字段下的rollingUpdate的属性来配置,
maxSurge:决定期望的副本数,默认值为25%,如果副本数设置为4个,则在滚动升级过程中,不会运行超过5个pod。
maxUnavaliable: 决定允许多少个pod处于不可用状态,默认值为25%,如果副本数为4,那么只能有一个pod处于不可用状态,
默认情况下如果10分钟内没有升级完成,将被视为失败,如果要修改这个参数可以使用kubectl describe deploy kubia 查看到一条ProgressDeadline-Exceeded的记录,可以修改此项参数修改判断时间。

转载于:https://www.cnblogs.com/yaohong/p/11306816.html

deployment:声明式的升级应用相关推荐

  1. 声明式API replica controller vs replica set 对比

    1.在命令式API中,你可以直接发出服务器要执行的命令,例如: "运行容器"."停止容器"等. 在声明性API中,你声明系统要执行的操作,系统将不断向该状态驱动 ...

  2. k8s中kubectl陈述式/声明式资源管理

    k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于与 apiserv ...

  3. 27. 代码实例-spring声明式事务

    (1)spring配置文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns= ...

  4. 通过 React Hooks 声明式地使用 setInterval

    2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 作者:Dan Abramov 接触 React Hooks 一定时间的你,也许会碰到一个神奇的问题: se ...

  5. kubernetes(k8s)使用声明式管理与 创建yaml模板文件

    文章目录 一:声明式管理方法 1.1 什么是声明式管理 1.2 查看资源配置 1.2.1 查看资源配置清单 1.2 使用explain 解释资源配置清单 1.3 修改资源配置清单并应用 1.3.1 离 ...

  6. KCL:声明式的云原生配置策略语言

    楔子: 以蚂蚁集团典型的建站场景为例,在接入 Kusion 后,用户侧配置代码减少到 5.5%,用户面对的 4 个平台通过接入统一代码库而消减,在无其他异常的情况下交付时间从 2 天下降到 2 小时- ...

  7. Jenkins Pipeline声明式流水线

    Jenkins是为了顺应以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发,也就是敏捷开发模型 传统的瀑布模型 上一个的输出是下一个的输入,没有迭代与反馈,也就代表了没有回头路可以走,对于后 ...

  8. 最实际与高效生成数据库高级声明式SQL脚本神器研发

    一. 简介 1.1前言 1.2作用 二. 实现方式与原理 2.1实现方式 2.2原理 三. 体系与图解 3.1创建表与插数据脚本 3.2添加或修改表脚本 3.3删除表脚本 3.4删除与创建索引脚本 3 ...

  9. 【Java与Python实现】最实际与高效生成数据库高级声明式SQL脚本神器研发

    一. 简介 1.1前言 1.2作用 二. 实现方式与原理 2.1实现方式 2.2原理 三. 体系与图解 3.1创建表与插数据脚本 3.2添加或修改表脚本 3.3删除表脚本 3.4删除与创建索引脚本 3 ...

最新文章

  1. 23 种设计模式的通俗解释
  2. 如何设计好词袋模型BoW模型的类类型
  3. ACM模板--链接表 有向图
  4. 我给媳妇解释设计模式:第一部分
  5. 查看linux字符集命令,关于Linux字符集的查看及修改
  6. python 文件不存在时才能写入,读写模式xt
  7. Swift - 获取、改变按钮的标题文本(UIButton点击切换title)
  8. 4位加法器的设计代码verilog_一个简单的8位处理器完整设计过程及verilog代码
  9. http 请求头 header Referer 含义和作用
  10. Sql Server cdc变更捕获使用
  11. sftp api java_SFTP例子2----使用JSch实现SFTP文件传输
  12. Acrobat Pro DC 教程,如何将纸质文档转换为可搜索的 PDF 文件?
  13. (day 50 - 动态规划+概率论 ) 剑指 Offer 60. n个骰子的点数
  14. C# string byte数组互转;string byte[]互转
  15. 静态代理和动态代理的区别
  16. android调用虚拟摄像头方法,Android设备虚拟摄像头技术实现
  17. FSR薄膜压力传感器使用教程
  18. AudioManager 蓝牙sco连接相关接口
  19. 关于汇编指令ldr和str的理解
  20. 把backtrader改造成金融强化学习回测引擎

热门文章

  1. PMP备考指南之第一章:引论
  2. 设计模式的征途—1.单例(Singleton)模式
  3. Eclipse EGit插件安装使用记录
  4. RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法
  5. ASIHTTPRequest-断点续传需要原网站支持!
  6. andorid平台游戏内存修改器的开发思路
  7. ecshop_商品描述远程图片自动本地化插件
  8. IIS7.5 配置MVC3.0 伪静态,不能访问html伪静态页面
  9. jdi屏幕斜纹_荣耀V10屏幕有斜纹问题,有人甚至因此退货,真的这么严重?
  10. linux那些内存可以释放,Linux释放内存