k8s的Rolling Update(滚动更新应用)
滚动更新是一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新。滚动更新的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性。
下面我们部署三副本应用:
初始镜像为 httpd:2.2.31,然后将其更新到 httpd:2.2.32。
httpd:2.2.31 的配置文件如下:
执行部署
部署过程如下:
创建 Deployment
httpd
创建 ReplicaSet httpd-5c44c97cb5 创建三个 Pod
当前镜像为
httpd:2.2.31
将配置文件中 httpd:2.2.31
替换为 httpd:2.2.32
,再次执行 kubectl apply
。
当前有4个pod,3个可用 1个pod已经更新。一段时间后全部更新完毕,前后有一样是不变的 就是可用pod的数量一直维持为3个。
我们发现了如下变化:
Deployment
httpd
的镜像更新为httpd:2.2.32
新创建了 ReplicaSet httpd-596db6fdc4,镜像为
httpd:2.2.32
,并且管理了三个新的 Pod。之前的 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:
ReplicaSet httpd-596db6fdc4增加一个 Pod,总数为 1。
ReplicaSet httpd-5c44c97cb5 减少一个 Pod,总数为 2。
ReplicaSet httpd-596db6fdc4 增加一个 Pod,总数为 2。
ReplicaSet httpd-5c44c97cb5 减少一个 Pod,总数为 1。
ReplicaSet httpd-596db6fdc4 增加一个 Pod, 总数为 3。
ReplicaSet httpd-5c44c97cb5 减少一个 Pod,总数为 0。
每次替换的 Pod 数量是可以定制的。Kubernetes 提供了两个参数 maxSurge
和 maxUnavailable
来精细控制 Pod 的替换数量。
最新文章
- mysql 触发器
- php 页面传递数组元素
- emmet-vim
- Java自定义日志输出文件
- Dubbo在Spring和Spring Boot中的使用
- 参数解析argparse模块
- 关于bootStrapdialog 学习心得
- iOS kvc
- 搭建开发框架Express,实现Web网站登录验证
- [Swift]LeetCode213. 打家劫舍 II | House Robber II
- TNS-12560: TNS: 协议适配器错误同时伴有TNS-00584: 有效节点检查配置错误的解决方法
- 检查linux的磁盘空间占用
- 函数中声明变量不用Var的情况
- k64 datasheet学习笔记3---Chip Configuration之System modules
- [转]谈谈 Bias-Variance Tradeoff
- CSS3利用背景渐变和background-size配合完成渐变与条纹效果[持续更新中...]
- Apache-Shiro介绍
- 百度知道里关于C++的讨论
- JavaScript学习笔记系列2:Dom操作(一)
- JMeter的__threadGroupName使用注意事项