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

下面我们部署三副本应用:

初始镜像为 httpd:2.2.31,然后将其更新到 httpd:2.2.32

httpd:2.2.31 的配置文件如下:

执行部署

部署过程如下:

  1. 创建 Deployment httpd

  2. 创建 ReplicaSet   httpd-5c44c97cb5  创建三个 Pod

  3. 当前镜像为 httpd:2.2.31

将配置文件中 httpd:2.2.31 替换为 httpd:2.2.32,再次执行 kubectl apply

当前有4个pod,3个可用 1个pod已经更新。一段时间后全部更新完毕,前后有一样是不变的 就是可用pod的数量一直维持为3个。

我们发现了如下变化:

  1. Deployment httpd 的镜像更新为 httpd:2.2.32

  2. 新创建了 ReplicaSet  httpd-596db6fdc4,镜像为 httpd:2.2.32,并且管理了三个新的 Pod。

  3. 之前的 ReplicaSet  httpd-5c44c97cb5 里面已经没有任何 Pod。

结论是:ReplicaSet  httpd-5c44c97cb5  的三个 httpd:2.2.31 Pod 已经被ReplicaSet  httpd-596db6fdc4 的三个 httpd:2.2.32 Pod 替换了。

具体过程可以通过 kubectl describe deployment httpd 查看。

每次只更新替换一个 Pod:

每次只更新替换一个 Pod:

  1. ReplicaSet httpd-596db6fdc4增加一个 Pod,总数为 1。

  2. ReplicaSet httpd-5c44c97cb5 减少一个 Pod,总数为 2。

  3. ReplicaSet httpd-596db6fdc4 增加一个 Pod,总数为 2。

  4. ReplicaSet httpd-5c44c97cb5  减少一个 Pod,总数为 1。

  5. ReplicaSet httpd-596db6fdc4 增加一个 Pod, 总数为 3。

  6. ReplicaSet httpd-5c44c97cb5  减少一个 Pod,总数为 0。

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

最新文章

  1. mysql 触发器
  2. php 页面传递数组元素
  3. emmet-vim
  4. Java自定义日志输出文件
  5. Dubbo在Spring和Spring Boot中的使用
  6. 参数解析argparse模块
  7. 关于bootStrapdialog 学习心得
  8. iOS kvc
  9. 搭建开发框架Express,实现Web网站登录验证
  10. [Swift]LeetCode213. 打家劫舍 II | House Robber II
  11. TNS-12560: TNS: 协议适配器错误同时伴有TNS-00584: 有效节点检查配置错误的解决方法
  12. 检查linux的磁盘空间占用
  13. 函数中声明变量不用Var的情况
  14. k64 datasheet学习笔记3---Chip Configuration之System modules
  15. [转]谈谈 Bias-Variance Tradeoff
  16. CSS3利用背景渐变和background-size配合完成渐变与条纹效果[持续更新中...]
  17. Apache-Shiro介绍
  18. 百度知道里关于C++的讨论
  19. JavaScript学习笔记系列2:Dom操作(一)
  20. JMeter的__threadGroupName使用注意事项

热门文章

  1. Java FTP下载文件以及编码问题小结
  2. TLS协议分析
  3. PAT 甲级 1007 Maximum Subsequence Sum
  4. CFS 调度器
  5. BZOJ4415 SHOI2013发牌(线段树)
  6. [CF735D]Taxes
  7. Splunk学习与实践
  8. WCF分布式开发步步为赢(14):WCF安全编程--基本概念
  9. Codeforces Round #531 (Div. 3) F. Elongated Matrix(状压DP)
  10. input 只允许输入数字