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 的替换数量。
相关文章
- 微服务应用视角解读如何选择 K8s 的弹性策略
- 更新应用时,如何实现 K8s 零中断滚动更新?
- 从零开始入门 K8s | etcd 性能优化实践
- 给 K8s API “做减法”:阿里巴巴云原生应用管理的挑战和实践
- 从零开始入门 K8s | 应用编排与管理:Job & DaemonSet
- 整理k8s————k8s组件[二]
- k8s设置默认存储类的命令
- 【收藏】十分钟弄懂 k8s Operator 应用的制作流程
- k8s部署redis statefulset应用
- k8s ingress
- K8S Service服务用于对外暴露应用
- k8s serviceaccount pod亲和性 污点
- 【GO】K8s 管理系统项目34[Linux环境–应用部署]
- k8s资源应用的自由伸缩Scale(up/down)
- k8s的应用打包工具Helm
- Kubernetes(k8s)中namespace的作用、反向代理访问k8s中的应用、k8s监控服务heapster
- k8s新手必看
- k31.第十三章 K8s高级篇-中间件容器化及Helm (二)
- k8s 搭建etcd集群(业务调用非k8s集群)—— 筑梦之路
- Kubernetes初探[1]:部署您的第一个ASP.NET Core应用到k8s集群
- K8s 资源更新机制详解
- k8s的注解信息
- k8s应用生命周期管理