首页 > 其他分享 >k8s 如何升级应用

k8s 如何升级应用

时间:2023-07-19 22:46:23浏览次数:35  
标签:应用 RS 创建 升级 v1 v2 版本 pod 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 上面了

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

欢迎点赞,关注,收藏

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

好了,本次就到这里

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

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

标签:应用,RS,创建,升级,v1,v2,版本,pod,k8s
From: https://www.cnblogs.com/xiaomotong/p/17566965.html

相关文章

  • 大前端一篇文章搞定什么是nodeJs它和NPM关系与应用
    现在前端的入门门槛越来越高了,不再是单纯 html+css+js,各种前端框架层出不穷,各种ui组件库层出不穷。模块化,打包化,各种工具库层出不穷,前端变成大前端 ,甚至前端可以搞定整个项目,通过node作为服务端api,这里我们主角就是nodeJs什么是nodejsjavaScript是一门脚本语言,通常被用来......
  • 4项关键技术提升 XR 扩展现实体验-XR应用云流化
    无论是使用户能够协作设计电动赛车,还是帮助观众通过数字世界与自然互动,越来越多的企业利用XR扩展现实为用户提供沉浸式逼真的虚拟环境。下一代沉浸式技术的应用越来越广泛,图形和人工智能的最新突破正在扩展XR的功能。这四种技术正在XR生态系统中树立新标准:云流化,高级协作工具,高......
  • K8S问题排查
    Pod相关问题及排查Pod无法启动,如何查找原因?使用kubectldescribepod[pod_name]-n[namespace_name]命令查看该Pod的状态信息,检查容器的状态和事件信息,判断是否出现问题。使用kubectllogs[pod_name]-n[namespace_name]命令查看该Pod容器的日志信息,判断是否有......
  • 应用数学在研究什么?
    基本盘清华大学本科培养方案https://www.tsinghua.edu.cn/jxjywj/bkzy2022/zxzy/36-1.pdf数学学科基础课30420405数学分析(1)510420935数学分析(2)530420424数学分析(3)420420124高等线性代数(1)420420134高等线性代数(2)430420484常微分方程430420384抽象......
  • 云原生微服务应用的平台工程实践
    作者:纳海01微服务应用云原生化微服务是一个广泛使用的应用架构,而如何使得微服务应用云原生化却是近些年一直在演进的课题。国内外云厂商对云原生概念的诠释大同小异,基本都会遵循CNCF基金会的定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行......
  • 什么是云应用程序?
    应用程序优先的云服务的日益普及导致应用程序与云服务的融合程度比以前更深。应用程序和云之间的运行时边界正在从虚拟机转移到容器和函数。集成边界正在从仅访问数据库和消息代理转向应用程序的机械部分混合并在云中运行的边界。在这个最终架构中,应用程序是“云绑定”的,允许开发人......
  • ubuntu20.04安装Kubernetes(k8s)
    1.禁止swap分区(必须)暂时禁止:sudoswapoff-a永久禁止:#注释掉swap一行sudovi/etc/fstab2.更改net.bridge.bridge-nf-call-iptables的值为1.(Ubuntu20.04默认为1)cat<<EOF|sudotee/etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables=1net.bridge.br......
  • 升级EF7连接SQL server出错SqlException: A connection was successfully established
    今天把项目里的Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore.Tools从6.0.6升级到了最新的7.0.9。一运行程序出错了。Win32Exception:证书链是由不受信任的颁发机构颁发的。UnknownlocationSqlException:Aconnectionwassuccessfullyestab......
  • 用微服务架构推进企业数字化转型升级
    随着数字化转型进入深水区,企业应用程序建设需求急剧增长且变化多端,软件架构经历了单体结构、垂直架构、SOA架构,发展到了现在的微服务架构。单体架构目前应用较多,部署容易,但单体式应用内部包含了所有需要的服务,且各个服务功能模块有很强的耦合性,也就是相互依赖彼此,很难拆分和扩容,......
  • 反向代理在系统结构中的应用场景
                    worker_processes1;#允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个events{#单个进程最大连接数(最大连接数=连接数*进程数)#......