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.rhkb.cn/news/30759.html

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

相关文章

三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目

一、ideal新建项目1 ideal新建项目2 至此父项目就创建好了,下面创建多模块: 填好之后点击create 不删了,直接改包名,看自己喜欢 修改包名和启动类名: 打开ServiceApplication启动类,修改如下: …

任天堂Switch拉美游戏价涨,传Switch 2全球或提价

易采游戏网3月9日独家消息:近日据相关资讯显示,在拉丁美洲地区,任天堂Switch的游戏价格出现了上扬态势。这一变化引发了玩家与市场的关注,不过就目前而言,其并未波及全球游戏市场的整体定价格局。但值得注意的是&#…

10.2 继承与多态

文章目录 继承多态 继承 继承的作用是代码复用。派生类自动获得基类的除私有成员外的一切。基类描述一般特性,派生类提供更丰富的属性和行为。在构造派生类时,其基类构造函数先被调用,然后是派生类构造函数。在析构时顺序刚好相反。 // 基类…

如何在需求分析阶段考虑未来扩展性

在需求分析阶段考虑未来扩展性的关键在于 前瞻规划、灵活架构、标准设计。其中,前瞻规划尤为重要,因为通过全面分析业务发展趋势与技术演进,能够在初期设计阶段预留足够扩展空间,降低后期改造成本,为企业长期发展奠定坚…

PawSQL for MSSQL:PawSQL 支持 SQL Server 的SQL优化、SQL审核、性能巡检

0. 概述 在PawSQL的最新版本中,PawSQL 为 SQL Server 数据库提供了全方位的SQL优化、SQL审核、性能巡检支持,覆盖SQL开发、测试、运维的整个生命周期,助力用户充分发挥 SQL Server 数据库的性能潜力。 1. 纳管SQL Server 实例 工作空间是SQ…

【Java代码审计 | 第六篇】XSS防范

文章目录 XSS防范使用HTML转义使用Content Security Policy (CSP)输入验证使用安全的库和框架避免直接使用用户输入构建JavaScript代码 XSS防范 使用HTML转义 在输出用户输入时,对特殊字符进行转义,防止它们被解释为HTML或JavaScript代码。 例如&…

NO.26十六届蓝桥杯备战|字符数组七道练习|islower|isupper|tolower|toupper|strstr(C++)

P5733 【深基6.例1】自动修正 - 洛谷 小写字母 - 32 大写字母 大写字母 32 小写字母 #include <bits/stdc.h> using namespace std;const int N 110; char a[N] { 0 };int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> a;int i 0;while (a…

langChainv0.3学习笔记(初级篇)

LangChain自0.1版本发布以来&#xff0c;已经历了显著的进化&#xff0c;特别是向AI时代的适应性提升。在0.1版本中&#xff0c;LangChain主要聚焦于提供基本的链式操作和工具集成&#xff0c;帮助开发者构建简单的语言模型应用。该版本适用于处理简单任务&#xff0c;但在应对…

qt 播放pcm音频

一、获取PCM音频 ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 -f s16le output.pcm -acodec pcm_s16le&#xff1a;指定16位小端PCM编码格式&#xff08;兼容性最佳&#xff09;-ar 44100&#xff1a;设置采样率为CD标准44.1kHz&#xff08;可替换为16000/8000等&a…

Windsuf 连接失败问题:[unavailable] unavailable: dial tcp...

问题描述 3月6日&#xff0c;在使用Windsuf 时&#xff0c;遇到以下网络连接错误&#xff1a; [unavailable] unavailable: dial tcp 35.223.238.178:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of…

Leetcode 刷题记录 05 —— 普通数组

本系列为笔者的 Leetcode 刷题记录&#xff0c;顺序为 Hot 100 题官方顺序&#xff0c;根据标签命名&#xff0c;记录笔者总结的做题思路&#xff0c;附部分代码解释和疑问解答。 目录 01 最大子数组和 方法一&#xff1a;动态规划&#xff08;卡达尼算法&#xff09; 方法…

QTS单元测试框架

1.QTS单元测试框架介绍 目前QTS项目采用C/C语言,而CppUnit就是xUnit家族中的一员,它是一个专门面向C的单元测试框架。因此,QTS采用CppUnit测试框架是比较理想的选择。 CppUnit按照层次来管理测试,最底层的就是TestCase,当有了几个TestCase以后&#xff0c;可以将它们组织成Te…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12📚页面效…

探索Java多线程的核心概念与实践技巧,带你从入门到精通!

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习多线程编程-"掌握线程创建、管理与安全"&#xff1a; 上一节课程我们铺垫了一系列的东西&#xff0c;引出来了我们的多…

前端数据模拟 Mock.js 学习笔记(附带详细)

前端数据模拟 Mock.js 学习笔记 在前端开发过程中&#xff0c;数据模拟是一项至关重要的环节。当后端接口尚未完成或者需要独立进行前端开发与测试时&#xff0c;Mock.js 能发挥巨大作用&#xff0c;它可以模拟各种数据场景&#xff0c;助力前端开发高效进行。 一、Mock.js 的…

NoteGen是一款开源跨平台的 AI 笔记应用,专注于 recording 和 writing ,基于 Tauri 开发

一、软件介绍 文末提供程序和源码下载 NoteGen 是一款专注于记录和写作的跨平台 AI 笔记应用&#xff0c;基于 Tauri 开发。NoteGen 的核心理念是将记录、写作和 AI 结合使用&#xff0c;三者相辅相成。记录功能可以帮助用户快速捕捉和整理碎片化知识。整理功能是连接记录和写…

学习网络安全需要哪些基础?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 学习网络安全&#xff0c;对于想要进入IT行业的朋友们来说是一件非常重要的事情。尤其是在当今社会&#xff0c;互联网已经渗透到工作和生活的方方面面&#xff0…

系统安全阶段练习真题(高软44)

系列文章目录 系统安全阶段练习真题 文章目录 系列文章目录前言一、真题总结 前言 本节就是系统安全的阶段练习真题&#xff0c;带答案与解析。 一、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;

C++性能分析工具

C性能分析工具常用的三种。perf、gprof、pprof perf工具需要root权限&#xff0c;设置perf的suid位并不行&#xff0c;需要设置perf对应的内核参数。 perf使用&#xff1a; g -o example example.cpp -O2 # 运行程序并采样 sudo perf record -g ./example # 查看采样结果 sud…

基于PyTorch的深度学习5——神经网络工具箱

可以学习如下内容&#xff1a; • 介绍神经网络核心组件。 • 如何构建一个神经网络。 • 详细介绍如何构建一个神经网络。 • 如何使用nn模块中Module及functional。 • 如何选择优化器。 • 动态修改学习率参数。 5.1 核心组件 神经网络核心组件不多&#xff0c;把这些…