【k8s 系列】k8s 学习二十五,如何升级应用 ?

简介: 在之前的分享中,我们知道一个程序如何放到容器中,一个镜像如何生成 pod, pod 的创建,运行,管理,删除过程,挂载等等

【k8s 系列】k8s 学习二十五,如何升级应用

在之前的分享中,我们知道一个程序如何放到容器中,一个镜像如何生成 pod, pod 的创建,运行,管理,删除过程,挂载等等

那么我们有没有想过,在真正的生产环境中,我们的一个应用程序,不可能就只有一个版本,一定会随着时间不断迭代的,那么,当我们需要替换上我们新版本的程序的时候,我们需要如何替换上新的程序,而又不影响服务端的运行呢?

我们替换程序的时候,我们可以有 2 个选择

  • 可以先删掉旧的 pod,然后创建新的 pod
  • 可以先创建新的 pod, 然后删除旧的 pod

可以先删掉旧的 pod,然后创建新的 pod

正常情况下,我们再来回顾一下 pod 都是如何被 Service  和 ReplicaSet / ReplicationController 管理的

image.png

如上图,我们可以知道,多个 pod 是被 RS 或者 RC 管理的,可以进行扩容和缩容,他们是通过标签来选择的,Service 同样也是通过标签来选定的

那么先删掉旧的 pod,然后创建新的 pod有啥优缺点呢?

  • 优点

操作比较简单,可以直接利用 RC/RS 的扩缩容,直接删除 pod ,然后 RC/RS 会通过标签识别到 pod 的数量变少,进而通过新的镜像来创建 pod

  • 缺点

会导致自身的服务有一段时间不能正常提供服务

我们画个图来分享一下先删除 v1 版本的 pod,然后创建 v2 版本的 pod 的过程

image.png

一开始 RS 中的指定模板是 v1 版本的镜像,先创建了 3 个 v1 版本的 pod,然后将 RS 的镜像版本改成 v2 版本的,但是由于设定的 pod 数量没有变化,因此 pod 的实际版本还是 v1

image.png

现在将 v1 版本的 pod 删掉,RS 会马上创建出指定数量的 v2 版本的 pod ,在这个过程中,服务的提供会出现一定时间的中断

可以先创建新的 pod, 然后删除旧的 pod

那么先创建新的 pod,再删除旧的 pod 我们的思路又是如何的呢,我们可以分享一下?

这个的优点是:

  • 应用提供的服务不会中断

这个的缺点是:

  • 操作比较麻烦,不符合生产流程,比较繁琐
  • 有一段时间同时有 2 个版本的应用程序对外提供服务,这个时候,如果服务的数据对于版本有一定的要求的话,可能会出现异常

image.png

一开始,RS 1 设定的 pod 模板是 v1 版本的,这个时候,我们 RS2 指定 v2 版本的 pod 模板,并创建出新的 pod

image.png

确定 RS 2 新的 pod 运行正常后,我们将 Service 的流量通过修改标签的方式,将流量切到 v2 版本的 pod 上面

image.png

最后设置 RS 1 的指定 pod 数量为 0,进而删除掉 v1 版本的 pod,最后 Service 的流量就完全的切到了 v2 版本的 pod 上面了

今天就到这里,学习所得,若有偏差,还请斧正


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
862 2
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
406 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
306 1
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
|
存储 设计模式 运维
YAML 管理 Kubernetes 应用
YAML 管理 Kubernetes 应用
556 1
|
存储 设计模式 运维
如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT 技术人员最大的自由度的同时,也对技术人员的能力提出了极高的要求。
|
Kubernetes Shell 开发工具
使用 Kustomize 帮你管理 kubernetes 应用(二): Kustomize 的使用方法
本篇为系列文章第二篇,手把手教你使用 Kustomize 的两种方式。
4941 0
|
Kubernetes 容器
使用 Kustomize 帮你管理 kubernetes 应用(一):什么是 Kustomize ?
本篇为系列文章第一篇,介绍我对 Kustomize 的了解过程以及 Kustomize 是什么,为什么它能解决我的燃眉之急。
4406 0
|
Kubernetes 负载均衡 应用服务中间件
管理 Kubernetes 应用,So easy!
近期,企业级分布式应用服务(EDAS)针对 Kubernetes 应用的管理功能全新上线,顶着 EDAS 的光环,其中的 Kubernetes 应用管理又是怎样一件利器呢?
2718 0

推荐镜像

更多