K8S学习之基础十七:k8s的蓝绿部署

蓝绿部署概述

​ 蓝绿部署中,一共有两套系统,一套是正在提供服务的系统,一套是准备发布的系统。两套系统都是功能完善、正在运行的系统,只是版本和对外服务情况不同。

​ 开发新版本,要用新版本替换线上的旧版本,在线上的系统之外,搭建了一个使用新版本代码的全新系统。 这时候,一共有两套系统在运行(蓝绿自定义),正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色系统。
在这里插入图片描述

蓝色系统不对外提供服务,用来做什么呢?

​ 用来做发布前测试,测试过程中发现任何问题,可以直接在蓝色系统上修改,不干扰用户正在使用的系统。(注意,两套系统没有耦合的时候才能百分百保证不干扰)**

蓝色系统经过反复的测试、修改、验证,确定达到上线标准之后,直接将用户切换到蓝色系统:

在这里插入图片描述

切换后的一段时间内,依旧是蓝绿两套系统并存,但是用户访问的已经是蓝色系统。这段时间内观察蓝色系统(新系统)工作状态,如果出现问题,直接切换回绿色系统。

​ 当确信对外提供服务的蓝色系统工作正常,不对外提供服务的绿色系统已经不再需要的时候,蓝色系统正式成为对外提供服务系统,成为新的绿色系统。 原先的绿色系统可以销毁,将资源释放出来,用于部署下一个蓝色系统。

蓝绿部署的优缺点

优点:

  1. 更新过程无需停机,风险较小
  2. 回滚方便,只需要更改路由或切换DNS服务器,效率高

缺点:

  1. 成本高,需要两套环境,开销大
  2. 如果新版本有问题会影响全网用户

蓝绿部署示例

  1. 创建service,关联到myapp上

    vi blue-green-service.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: myapp-v1
    spec:replicas: 10selector:matchLabels:app: myappversion: v1template:metadata:labels:app: myappversion: v1spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80
    
  2. 创建pod,使用版本 myapp:v1,作为蓝版本

    vi blue.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: myapp-v1
    spec:replicas: 10selector:matchLabels:app: myappversion: v1template:metadata:labels:app: myappversion: v1spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80
    

    在这里插入图片描述

  3. 浏览器访问集群主机ip:30080,结果均为蓝色,即v1版本
    在这里插入图片描述

  4. 创建pod,使用版本 myapp:v2,作为绿版本

    vi green.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: myapp-v2
    spec:replicas: 10selector:matchLabels:app: myappversion: v2template:metadata:labels:app: myappversion: v2spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v2imagePullPolicy: IfNotPresentports:- containerPort: 80
    

    在这里插入图片描述

浏览器访问主机ip:30080,结果为蓝色或绿色,即v1和v2版本都在使用
5. 访问集群主机ip:30080,会发现蓝绿不定
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6. 使用命令查看路由 ipvsadm,service路由到了所有的pod

ipvsadm
TCP  mast01:31180 rr
TCP  mast01:30080 rr-> 10.244.140.76:http           Masq    1      0          0         -> 10.244.140.77:http           Masq    1      0          0         -> 10.244.140.78:http           Masq    1      0          0         -> 10.244.140.79:http           Masq    1      0          0         -> 10.244.140.80:http           Masq    1      0          0         -> 10.244.140.81:http           Masq    1      0          0         -> 10.244.140.82:http           Masq    1      0          0         -> 10.244.140.83:http           Masq    1      0          0         -> 10.244.140.84:http           Masq    1      0          0         -> 10.244.140.85:http           Masq    1      0          0         -> 10.244.196.140:http          Masq    1      0          0         -> 10.244.196.141:http          Masq    1      0          0         -> 10.244.196.142:http          Masq    1      0          0         -> 10.244.196.143:http          Masq    1      0          0         -> 10.244.196.144:http          Masq    1      0          0         -> 10.244.196.145:http          Masq    1      0          0         -> 10.244.196.146:http          Masq    1      0          0         -> 10.244.196.147:http          Masq    1      0          0         -> 10.244.196.148:http          Masq    1      0          0         -> 10.244.196.149:http          Masq    1      0          0         
TCP  mast01:31180 rr
TCP  mast01:https rr

在这里插入图片描述
在这里插入图片描述
7. 如果测试业务一切正常,就说明v2版本也满足需要,接下来就可以停掉v1版本了

kubectl delete -f blue.yaml
kubectl get pods

在这里插入图片描述
浏览器访问也只有绿色了,即v2版本
8. 如果运行一段时间v2版本有问题,还可以直接按以上方法回退到v1版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【定制开发】碰一碰发视频系统定制开发,支持OEM

在短视频营销爆发的2025年,"碰一碰发视频"技术已成为实体商家引流标配。某连锁餐饮品牌通过定制化开发,单月视频发布量突破10万条,获客成本降低80%!本文将深入解析该系统的技术架构与开发要点,助你快速搭建高…

[Lc7_分治-快排] 快速选择排序 | 数组中的第K个最大元素 | 库存管理 III

目录 1. 数组中的第K个最大元素 题解 代码 2.库存管理 III 代码 1. 数组中的第K个最大元素 题目链接:215. 数组中的第K个最大元素 题目分析: 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要…

AI视频生成工具清单(附网址与免费说明)

以下是一份详细的AI视频制作网站总结清单,包含免费/付费信息及核心功能说明: AI视频生成工具清单(附网址与免费说明) 1. Synthesia 网址:https://www.synthesia.io是否免费:免费试用(生成视频…

dp_走方格(包含dfs分析,记忆化搜索)

类似题目解析:dp_最长上升子序列(包含dfs分析,记忆化搜索)-CSDN博客 题目链接:2067. 走方格 - AcWing题库 题目图片: 分析题目(dfs) 这个题目说有一个行为n行,列为m列…

Windows系统安装python2025最新安装包,包括环境配置,以及安装python编程软件PyCharm2024.3.3免费社区版本,详细全流程

一、python安装包安装 1、python安装包下载 浏览器打开官网,最好是谷歌浏览器 https://www.python.org/downloads/windows/ 下载安装包(注意处理器是32位还是64位) 注意:下载完成后,找到安装包并双击运行。在安装向导…

【GPT入门】第3课 客服会话质检(思维链)

【GPT入门】第3课 客服会话质检 1.质检任务2. 代码3.核心 1.质检任务 任务本质是检查客服与用户的对话是否有不合规的地方 质检是电信运营商和金融券商大规模使用的一项技术 每个涉及到服务合规的检查点称为一个质检项 我们选一个质检项,产品信息准确性&#xff0…

ubuntu 20.04 C++ 源码编译 cuda版本 opencv4.5.0

前提条件是安装好了cuda和cudnn 点击下载: opencv_contrib4.5.0 opencv 4.5.0 解压重命名后 进入opencv目录,创建build目录 “CUDA_ARCH_BIN ?” 这里要根据显卡查询一下,我的cuda是11,显卡1650,所以是7.5 查询方法1&#xff1…

K8s 1.27.1 实战系列(四)验证集群及应用部署测试

一、验证集群可用性 1、检查节点 kubectl get nodes ------------------------------------------------------ NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 3h48m v1.27.1 k8s-node1 Ready <none> …

【C++设计模式】第七篇:桥接模式(Bridge)

注意&#xff1a;复现代码时&#xff0c;确保 VS2022 使用 C17/20 标准以支持现代特性。 抽象与实现的解耦之道 1. 模式定义与用途​​ 核心思想​ ​桥接模式&#xff1a;将抽象部分与实现部分分离&#xff0c;使二者可以独立变化。​关键用途&#xff1a; ​1.拆分复杂继承…

在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践

文章目录 在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践一、下载 Kafka-0.9二、启动 Zookeeper 和 Kafka三、创建 Spring Boot 项目四、引入 kafka 依赖五、移除 Kafka 自动配置六、编写 Kafka 生产者6.1 Kafka配置类6.2 生产者监听类 七、编写Controller发送Kafka八、验证消费…

字符串中的数字之和

题目描述 程序要求能够提取输入的字符串中的数字&#xff0c;将数字累加&#xff0c;得到数字之和&#xff0c;如输入的字符串为"abc76wet23er1.",应该提取数字76,23,1,求和后&#xff0c;即76231100。 输入格式: 输入一个字符串&#xff0c;字符串长度不超过100.…

77.ObservableCollection使用介绍1 C#例子 WPF例子

可观察集合ObservableCollection using System; using System.Collections.ObjectModel;class Program {static void Main(){// 创建一个可观察集合ObservableCollection<string> list new ObservableCollection<string>();// 注册集合变化事件list.CollectionCh…

ORACLE 执行查询语句慢(不走对应索引)

1. 索引未被创建或未正确创建 确保为查询中涉及的列创建了索引。例如&#xff0c;如果你经常需要按column_name列进行查询&#xff0c;确保已经为该列创建了索引,索引创建语句 CREATE INDEX idx_column_name ON table_name(column_name); 2、索引不可用 原因:索引可能被标记为不…

r1-reasoning-rag:一种新的 RAG 思路

最近发现了一个开源项目&#xff0c;它提供了一种很好的 RAG 思路&#xff0c;它将 DeepSeek-R1 的推理能力结合 Agentic Workflow 应用于 RAG 检索 项目地址 https://github.com/deansaco/r1-reasoning-rag.git 项目通过结合 DeepSeek-R1、Tavily 和 LangGraph&#xff0c;实现…

服务器硬件配置统计

服务器型号和SN # dmidecode -t system | grep -E "Product Name|Serial Number" | awk -F: {print $2} PowerEdge R7515 4567CPU型号和物理CPU数量 echo "$(lscpu | grep "Model name" | cut -d : -f2 | sed s/^ *//) x $(lscpu | grep "Soc…

Hadoop、Spark、Flink Shuffle对比

一、Hadoop的shuffle 前置知识&#xff1a; Map任务的数量由Hadoop框架自动计算&#xff0c;等于分片数量&#xff0c;等于输入文件总大小 / 分片大小&#xff0c;分片大小为HDFS默认值128M&#xff0c;可调 Reduce任务数由用户在作业提交时通过Job.setNumReduceTasks(int)设…

Docker的常用镜像

Docker的常用镜像命令主要包括镜像的查看、搜索、拉取、删除、构建等操作&#xff0c;以下是综合多个来源的总结&#xff1a; 一、基础镜像操作 查看本地镜像 docker images• 显示所有本地镜像&#xff0c;包含仓库名&#xff08;REPOSITORY&#xff09;、标签&#xff08;TAG…

车载以太网测试-3【Wireshark介绍】

1 摘要 Wireshark 是一款开源的网络协议分析工具&#xff0c;广泛用于网络故障排查、协议分析、网络安全检测等领域。它能够捕获网络数据包&#xff0c;并以详细的、可读的格式显示这些数据包的内容。广泛应用于车载网络测试&#xff0c;是车载网络测试工程师必须掌握的工具。…

基于跨模态地图学习的视觉语言导航

前言 本工作开展的背景&#xff1a; 人类和其他物种构建类似地图的环境表示来完成寻路&#xff1a; &#xff08;1&#xff09;当人类只使用现成的驾驶或步行路径到达目标时&#xff0c;构建认知地图和获取空间知识的能力就会下降&#xff1b; &#xff08;2&#xff09;另…

nodejs关于后端服务开发的探究

前提 在当前的环境中关于web server的主流开发基本上都是java、php之类的&#xff0c;其中java spring系列基本上占了大头&#xff0c;而python之流也在奋起直追&#xff0c;但别忘了nodejs也是可以做这个服务的&#xff0c;只是位置有点尴尬&#xff0c;现在就来探究下nodejs…