k8s 进阶实战笔记 | 应用的蓝绿、金丝雀发布笔记

news2024/11/17 21:31:24

文章目录

  • 应用的蓝绿、金丝雀发布笔记
    • 应用升级策略
    • 停机升级
    • 滚动更新
    • 蓝绿发布
    • 金丝雀发布

应用的蓝绿、金丝雀发布笔记

应用升级策略

  • Deployment.spec.strategy 设置

  • Recreate:同时删除所有副本,停机升级策略

    • 不存在新老版本共存

    • 存在某个时间段服务不可用

    • 副本集一起Terminating,一起Pending,一起ContainerCreating,一起Running

  • RollingUpdate:默认滚动升级,不停机升级策略

    • 不存在某个时间段服务不可用
    • 切换过程,新老版本会共存
    • 滚动更新核心参数
      • maxUnavailable:滚动升级时允许的最大unavailable的pod数量,可以是整数或者百分比(默认25%),这个值越小,越能保证服务稳定,更新越平滑;
      • maxSurge:滚动升级时先启动的pod数量,可以是整数或者百分比(默认25%),这个值调的越大,副本更新速度越快;

停机升级

示例

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx-v1
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30179
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v1
  namespace: default
  labels:
    app: nginx-v1
spec:
  selector:
    matchLabels:
      app: nginx-v1
  replicas: 3
  strategy:
    type: Recreate  ## 需要显式指明停机升级策略,因为默认是滚动升级
  template:
    metadata:
      labels:
        app: nginx-v1
    spec:
      containers:
      - name: nginx-v1
        image: docker.m.daocloud.io/nginx:1.23.1
        imagePullPolicy: IfNotPresent

在这里插入图片描述

接下来我们修改一下镜像版本,进行停机更新升级

image: docker.m.daocloud.io/nginx

在这里插入图片描述

滚动更新

默认就是滚动更新策略

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx-v1
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30179
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v1
  namespace: default
  labels:
    app: nginx-v1
spec:
  selector:
    matchLabels:
      app: nginx-v1
  replicas: 3
#  strategy:
#    type: Recreate  ## 需要显式指明停机升级策略,因为默认是滚动升级
  template:
    metadata:
      labels:
        app: nginx-v1
    spec:
      containers:
      - name: nginx-v1
        image: docker.m.daocloud.io/nginx:1.23.1
        imagePullPolicy: IfNotPresent

在这里插入图片描述

  • 可以通过更改以下字段,来变更每次被嘎的数量和启动新的版本的数量
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 25%	###最大被嘎的数量,越小,更新越平滑
    maxSurge: 25%		### 启动新的pod数量,越大,副本更新越快
  • 滚动更新:会有新旧版本同时存在的问题

蓝绿发布

发布原理

  • svc的selector选择器
  • v1版本和v2版本同时启动,然后通过修改svc一键切换
  • 无缝升级,无缝回退,不存在两个版本共存的现象
  • 生产环境推荐,只不过会增加资源开销

v1版本

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v1
  namespace: default
  labels:
    app: nginx-v1
spec:
  selector:
    matchLabels:
      app: nginx-v1
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx-v1
    spec:
      containers:
      - name: nginx-v1
        image: docker.m.daocloud.io/nginx:1.23.1
        imagePullPolicy: IfNotPresent

v2版本

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v2
  namespace: default
  labels:
    app: nginx-v2
spec:
  selector:
    matchLabels:
      app: nginx-v2
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx-v2
    spec:
      containers:
      - name: nginx-v2
        image: docker.m.daocloud.io/nginx
        imagePullPolicy: IfNotPresent

svc

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx-v1
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30179
  type: NodePort

当前访问情况

在这里插入图片描述

修改svc的selector信息为v2然后观察

spec:
  selector:
    app: nginx-v2
while true;do curl -sI 192.168.1.225:30179 | grep -E 'Server|HTTP';done

在这里插入图片描述

金丝雀发布

金丝雀发布就是先发一个新版应用,但是是一个小比例范围,也叫灰度测试,如结果灰度测试通过,就把其余的v1版本全部替换程v2版本。如果测试没通过,就直接回退

  • 新功能验证,适当的引流,适合金丝雀发布

v1

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v1
  namespace: default
  labels:
    app: nginx-v1
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: docker.m.daocloud.io/nginx:1.23.1
        imagePullPolicy: IfNotPresent

v2

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v2
  namespace: default
  labels:
    app: nginx-v2
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: docker.m.daocloud.io/nginx
        imagePullPolicy: IfNotPresent

svc

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30179
  type: NodePort

在这里插入图片描述

灰度测试成功,我们逐渐将流量切入过去即可

### 修改副本数即可

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Armv8-M的TrustZone技术之测试目标指令

为了允许软件确定内存位置的安全属性,使用了TT指令(Test Target)。 Test Target(TT)查询内存位置的安全状态和访问权限。 Test Target Unprivileged(TTT)查询内存位置的安全状态和访问权限,以进行对该位置的非特权访问。 Test Target Alternate Domain(TTA)和Test…

血细胞分类项目

血细胞分类项目 数据集:血细胞分类数据集数据处理 dataset.py网络 net.py训练 train.py拿训练集的几张图进行预测 数据集:血细胞分类数据集 https://aistudio.baidu.com/datasetdetail/10278 数据处理 dataset.py from torchvision import transfor…

Mysql使用命令行备份数据

目录 前言1. 基本知识2. 常用参数3. 拓展 前言 由于长期使用测试环境的数据库,时不时会有脏数据删除不干净,对此很需要一个实时将生产库的数据定期备份一份,防止生产库中会有脏数据进来。 1. 基本知识 mysqldump 是MySQL数据库管理系统提供…

HTML+CSS:3D卡片组件

效果演示 实现了一个名为“卡片”的效果,当鼠标悬停在一个特定的元素上时,该元素会变得更亮,并且会在其他元素上方显示一个卡片。当鼠标悬停在卡片上时,卡片会变得更亮,并且会在其他元素上方显示一个提示信息。这个效果…

开源:基于Vue3.3 + TS + Vant4 + Vite5 + Pinia + ViewPort适配..搭建的H5移动端开发模板

vue3.3-Mobile-template 基于Vue3.3 TS Vant4 Vite5 Pinia ViewPort适配 Sass Axios封装 vconsole调试工具,搭建的H5移动端开发模板,开箱即用的。 环境要求: Node:16.20.1 pnpm:8.14.0 必须装上安装pnpm,没装的看这篇…

力扣(leetcode)第118题杨辉三角(Python)

118.杨辉三角 题目链接:118.杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] …

c++入门语法—————引用,内联函数,auto关键字,基于范围的for循环,nullptr

文章目录 一.引用1.引例2.注意事项3.应用场景1.做参数(a:输出型参数b:内容较大参数)2.做返回值(a:修改返回值,b:减少拷贝) 4.引用和指针的区别 二.内联函数1.为什么有内联函数2.用法和底层3.特性 三.auto关键字1.基础示…

CVE-2024-0352 likeshop v2.5.7文件上传漏洞分析

本次的漏洞研究基于thinkPHP开发开的一款项目..... 漏洞描述 Likeshop是Likeshop开源的一个社交商务策略的完整解决方案,开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞,该漏洞源于文件server/application/api/contr…

数据库之一 基础概念、安装mysql、sql语句基础

数据库之 基础概念、安装mysql、sql语句基础 【一】存储数据的演变过程: 文件存储: 初始阶段随意存放数据到文件,格式任意。目录规范引入: 软件开发使用目录规范,限制数据位置,建立专门文件夹。本地数据存…

inside 的坑

最近代码里面有一句inside 判断语句,明明条件满足,但是就是判断失败,代码如下: xxx;if(i inside {[7:0]}) begin //i5xxx;end xxx; 翻看sv 手册才发现 inside 后面跟的是range value,必须是从小写到大,也就…

腾讯云Linux(OpenCloudOS)安装tomcat9(9.0.85)

腾讯云Linux(OpenCloudOS)安装tomcat9 下载并上传 tomcat官网 https://tomcat.apache.org/download-90.cgi 下载完成后上传至自己想要放置的目录下 解压文件 输入tar -xzvf apache-tomcat-9.0.85.tar.gz解压文件,建议将解压后的文件重新命名为tomcat,方便后期进…

【vue】defineModel在vue3.4中的最新用法和详解

在2023年12月28日,尤大发布了vue3.4版本,这个版本主要对一些实验性特性的改进(比如defineModel),大量重写了模板编译器并重构了响应式系统,可以说是大大提升了运行速度和效率。 之前在vue3.3中defineModel…

应急消防应用步入“繁花”时代,卓翼智能消防无人机顺势而行大有可为

近日,北京卓翼智能科技有限公司(以下简称“卓翼智能”)宣布完成超亿元B轮融资,融资金额高达2.5亿元。这个“智能无人系统”黑马品牌,凭什么出圈?重点发力在哪些领域呢?今天,带你走进…

Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1,Nginx动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化

1.Ubuntu 22.04.1 LTS 编译安装 nginx-1.22.1 1.1安装依赖 sudo apt install libgd-dev 1.2下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 1.3解压nginx tar -zvxf nginx-1.22.1.tar.gz 1.4编译安装 cd nginx-1.22.1 编译并指定安装位置,执行安装…

华为笔记本matebook pro X如何扩容 C 盘空间

一、前提条件 磁盘扩展与合并必须是相邻分区空间,且两个磁盘类型需要相同。以磁盘分区为 C 盘和 D 盘为例,如果您希望增加 C 盘容量,可以先将 D 盘合并到 C 盘,然后重新创建磁盘分区,分配 C 盘和 D 盘的空间大小。 访…

2024 新年HTML5+Canvas制作3D烟花特效(附源码)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

Ajax入门与使用

目录 ◆ AJAX 概念和 axios 使用 什么是 AJAX? 怎么发送 AJAX 请求? 如何使用axios axios 函数的基本结构 axios 函数的使用场景 1 没有参数的情况 2 使用params参数传参的情况 3 使用data参数来处理请求体的数据 4 上传图片等二进制的情况…

上海亚商投顾:创业板指创调整新低,全市场超4800只个股下跌

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整,创业板指午后跌超3%,深成指跌超2%,北证50指数跌逾6%。中…

sqli-labs-master less-1 详解

目录 关于MySQL的一些常识 information_schema 常用的函数 sqli-labs-master less-1 分析PHP源码 测试 关于MySQL的一些常识 information_schema information_schema 是 MySQL 数据库中的一个元数据(metadata)数据库,它包含…

LLM之makeMoE:makeMoE的简介、安装和使用方法、案例应用之详细攻略

LLM之makeMoE:makeMoE的简介、安装和使用方法、案例应用之详细攻略 目录 makeMoE的简介 1、对比makemore 2、相关代码文件 makMoE_from_Scratch.ipynb文件 makeMoE_Concise.ipynb文件 makeMoE的安装和使用方法 1、基于Databricks使用单个A100进行开发 makeM…