k8s 如何升级应用

简介: k8s 如何升级应用

如何升级应用

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

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

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

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

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

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

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

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

  • 优点

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

  • 缺点

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

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

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

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

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

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

这个的优点是:

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

这个的缺点是:

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

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

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

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

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

欢迎点赞,关注,收藏

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

好了,本次就到这里

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

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

更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
27天前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
113 24
|
1月前
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
2月前
|
人工智能 Kubernetes 安全
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
79 13
|
2月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
3月前
|
存储 运维 Kubernetes
K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复
在当今快速变化的云原生领域,Kubernetes(K8s)集群的运维面临着诸多挑战,其中灾备与业务迁移尤为关键。ACK备份中心支持丰富的资源调整策略,在数据恢复阶段即可自动适配目标集群环境,确保业务无缝重启。
|
3月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
3月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
3月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
3月前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
71 0

热门文章

最新文章