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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 在之前的分享中,我们知道一个程序如何放到容器中,一个镜像如何生成 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

好了,本次就到这里

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
9天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
18天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
54 1
|
26天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
28天前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
105 0
|
存储 设计模式 运维
YAML 管理 Kubernetes 应用
YAML 管理 Kubernetes 应用
334 1
|
存储 设计模式 运维
如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT 技术人员最大的自由度的同时,也对技术人员的能力提出了极高的要求。
|
Kubernetes Shell 开发工具
使用 Kustomize 帮你管理 kubernetes 应用(二): Kustomize 的使用方法
本篇为系列文章第二篇,手把手教你使用 Kustomize 的两种方式。
4571 0
|
Kubernetes 容器
使用 Kustomize 帮你管理 kubernetes 应用(一):什么是 Kustomize ?
本篇为系列文章第一篇,介绍我对 Kustomize 的了解过程以及 Kustomize 是什么,为什么它能解决我的燃眉之急。
4168 0
|
Kubernetes 负载均衡 应用服务中间件
管理 Kubernetes 应用,So easy!
近期,企业级分布式应用服务(EDAS)针对 Kubernetes 应用的管理功能全新上线,顶着 EDAS 的光环,其中的 Kubernetes 应用管理又是怎样一件利器呢?
2480 0
下一篇
无影云桌面