k8s 蓝绿发布、滚动发布、灰度发布

K8S如何灰度发布 灰度发布、蓝绿发布、金丝雀发布等,本质上没有区别,都是版本渐进式发布+流量管理,所以也不要去纠结自己的发布方式到底算哪一种。硬要说,灰度发布是渐进式发布的统称,蓝绿发布和金丝雀发布是渐进式发布的具体方式,详细区别,在于蓝绿发布强调蓝绿环境(即新版和旧版服务)的平等性,流量拆分粒度较粗;金丝雀发布拥有更细粒度的流量拆分。灰度发布两个核心点:流量管理、发布流程管理。先来分析流量管理,不算Istio等组件新引入的流量管理策略,仅以Kubernetes本身的组件来看。一个常见的后端服务具有如下网络拓扑结构:ingr 阅读详情

在Kubernetes(k8s)中,蓝绿发布、滚动发布、灰度发布(金丝雀发布)是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明,并给出相应的例子。

蓝绿发布

 

蓝绿发布是一种无缝切换版本的部署策略。它通过在生产环境中同时运行两个相同版本的应用程序实例(蓝色环境和绿色环境),使得新版本的应用可以在不影响旧版本的情况下进行部署和测试。当新版本经过验证并准备好切换时,流量将被重定向到新环境(绿色),同时旧环境(蓝色)被移除或停止。

步骤:

  1. 准备两个相同的环境:蓝色环境和绿色环境。这两个环境应该具有相同的配置和基础设施。
  2. 在蓝色环境中部署当前的应用程序版本。
  3. 在绿色环境中部署新的应用程序版本。
  4. 配置K8s Ingress以将部分流量路由到绿色环境,进行新版本测试。
  5. 如果新版本表现良好,逐步增加流量比例,直到将所有流量都切换到绿色环境。
  6. 移除或停止蓝色环境中的旧版本。

优点:

  1. 易于设置:蓝绿发布策略相对简单,只需维护两个环境(蓝色和绿色),便于部署和切换。
  2. 流量完全受控:通过调整路由规则,可以轻松控制流量在新旧版本之间的切换,实现零停机时间更新。
  3. 降低风险:由于新版本在切换前已经过充分测试,因此可以降低生产环境出现问题的风险。

缺点:

  1. 维护成本高:需要同时维护两个相同的环境,增加了资源消耗和维护成本。
  2. 回滚速度可能较慢:在出现问题时,虽然可以回滚到旧版本,但由于需要切换环境,回滚速度可能相对较慢。

滚动发布

 

滚动发布是按批次停止老版本实例,启动新版本实例的发布方式。这种方式可以节约资源,但部署和回滚速度较慢。

步骤:

  1. 假设有一个包含3个副本的Deployment,当前版本为v1。
  2. 更新Deployment的版本为v2,并设置滚动更新策略。
  3. K8s将开始滚动更新,逐个替换v1版本的Pod为v2版本。
  4. 在滚动更新过程中,可以监控新版本的性能和稳定性。
  5. 如果出现问题,可以暂停滚动更新,回滚到旧版本。

优点:

  1. 节约资源:滚动发布可以逐步替换旧版本实例,无需同时运行两个完整版本的应用,从而节约资源。
  2. 灵活性高:滚动发布过程中可以暂停、继续或回滚更新操作,提供了较高的灵活性。
  3. 用户体验好:由于更新是逐步进行的,对用户的影响较小,可以保持较高的可用性。

缺点:

  1. 部署和回滚速度慢:滚动发布需要逐个替换实例,因此部署和回滚速度相对较慢。
  2. 复杂性高:滚动发布过程中需要监控新版本实例的性能和稳定性,增加了复杂性。

灰度发布(金丝雀发布)

 

灰度发布(又称金丝雀发布)是一种逐步将流量从旧版本迁移到新版本的发布方式。它通常先安排一小部分的用户流量去访问更新的Pod来进行测试,如果测试没问题后再扩大比例,直到全部更新完成为止。

步骤:

  1. 创建一个包含旧版本应用的Deployment和Service。
  2. 更新Deployment的版本,并配置暂停Deployment,以便进行金丝雀测试。
  3. 将一小部分流量路由到新版本的Pod,观察其性能和稳定性。
  4. 如果新版本表现良好,逐步调整流量权重比例,使得流量慢慢从旧版本迁移至新版本。
  5. 在迁移过程中,可以根据设置的流量比例对新版本服务进行扩容,同时对旧版本服务进行缩容。
  6. 当所有流量都迁移到新版本后,删除旧版本的Deployment和Service。

金丝雀发布的特别说明:

  • 金丝雀发布的思想是将少量的请求引流到新版本上,因此部署新版本服务只需极小数的机器。
  • 验证新版本符合预期后,逐步调整流量权重比例,使得流量慢慢从老版本迁移至新版本。
  • 在金丝雀发布中,将流量分流到新旧版本的这个过程被称为分阶段访问(Staged Access),也可以称为阶段性流量调度(Staged Traffic Shifting)。

优点:

  1. 降低风险:通过逐步将流量切换到新版本应用,可以及时发现并修复潜在的问题,降低大规模故障的风险。
  2. 提高发布成功率:灰度发布允许在小范围内测试新版本,确保稳定后再全面推广,从而提高发布成功率。
  3. 用户体验影响小:由于只有部分用户会首先体验到新版本,因此对其他用户的影响较小。

缺点:

  1. 自动化要求高:灰度发布需要自动化工具和流程来支持流量的逐步切换和监控。
  2. 发布期间需要人为操作:在某些情况下,灰度发布过程中可能需要人为干预和调整,增加了操作复杂度。
  3. 可能引发服务中断:如果新版本存在问题且未能及时发现,可能会引发服务中断或性能下降。

 

综上所述,蓝绿发布、滚动发布和灰度发布(金丝雀发布)各有优缺点,适用于不同的场景和需求。在实际应用中,应根据具体情况选择合适的发布策略。

【kubernetes】关于k8s集群的资源发布方式(灰度/滚动发布) 如“暂停(pause)”或“继续(resume)”更新操作。 阅读详情

相关推荐

Kubernetes 服务发布方式(蓝绿发布、灰度发布和滚动发布)

应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。 长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布、灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题。

ll945608651的博客 3824

什么是灰度发布?灰度发布几种类型

灰度发布是指在 黑和白(0和1)之间,能够平滑过渡的一种发布方式。

qq_42483473的博客 3万+

K8S的灰度发布、滚动更新、蓝绿发布

在项目迭代的过程中,不可避免需要上线进行部署。 目前项目部署的方式有很多种:像重新部署,蓝绿部署,金丝雀部署(灰度部署),滚动更新。本文简单介绍下这些常见的部署方案以及使用k8s怎么进行对应部署 重新部署 定义:先停止旧服务,然后启动新服务,这是最简单的一种部署方式 缺点:在整个过程中会出现一段时间的服务不可用 先准备两个自己的镜像,访问接口为/dockerfile,返回的数据不一样: registry.cn-shenzhen.aliyuncs.com/chenpp/springboot-image

qq_42494960的博客 7809

灰度发布-介绍-全链路灰度实现

灰度发布是指在 黑和白(0和1)之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,指为产品已发布A版本,在发布B版本时,在同一时间维度,让一部分用户继续用A版本,一部分用户(测试用户)开始用B版本,如果用户(测试用户)对B版本没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B版本上面来。灰度发布可以保证整体系统的稳定,在初始灰度发布时就可以发现及调整问题,以保证其影响度。

weixin_41677422的博客 7682

Kubernetes 系列学习笔记 - 理论详解 (初识 K8s)

文章目录前言Kubernetes/K8s 理论详解1.K8s 是什么?2.K8s 特性3.小拓展(业务升级)4.K8s 集群架构与组件①架构拓扑图:②Master 组件③Node 组件5.K8s 核心概念 前言 Kubernetes,简称 K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用 其技术难度与入门门槛较高,学习之前,建议掌握以下基础: 熟悉 Linux 基础命令 熟悉 Docker 基本管理 了解 SSL 证书工作原理 了解负载均衡工作原理(L4/L7) 了解群集(分布式概念) 了解

Xucf1 4606

第十六届蓝桥杯大赛软件赛(编程类)知识点大纲

难度:[1-3]难度:[1-5]难度:[1-3]难度:[2-5]难度:[1-5]

Future_yzx的博客 4114

k8s_deployment 以及灰度发布、滚动发布和蓝绿发布的零散笔记

deployment 可以简写为deploy [root@test2 ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE myapp-deploy 2/2 2 2 23s [root@test2 ~]# kubectl get rs NAME DESIRED CURRENT READY AGE myap

酱园里一鸭鸭の笔记 4249

从芯片选型到光学集成:手持激光测距仪硬件设计全解析

本文全面解析手持激光测距仪的硬件设计,从芯片选型到光学集成,详细介绍了相位法测距技术的核心原理与方案选择。通过模块化设计、信号链路优化及PCB布局技巧,实现毫米级精度。文章还分享了量产化关键控制点,帮助工程师规避常见设计陷阱,提升产品可靠性。

weixin_30425949的博客 445

Kubernetes 蓝绿发布、ABTest、滚动发布、灰度发布、金丝雀发布简介

蓝绿发布: 一些应用程序只需要部署一个新版本,并需要立即切到这个版本。因此,我们需要执行蓝/绿部署。在进行蓝/绿部署时,应用程序的一个新副本(绿)将与现有版本(蓝)一起部署。然后更新应用程序的入口/路由器以切换到新版本(绿)。然后,您需要等待旧(蓝)版本来完成所有发送给它的请求,但是大多数情况下,应用程序的流量将一次更改为新版本;Kubernetes不支持内置的蓝/绿部署。目前最好的方式是创建新的部署,然后更新应用程序的服务(如service)以指向新的部署;蓝绿部署是不停老版本,部署新版本然后进行测试,

IChen.的博客 1064

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等

本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。

coder_bin的博客 1593

Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)

下图:Discuz X3.5的系统信息,上传许可为1024MB(1GB)论坛为局域网论坛,仅供内部同事交流使用!使用官方最新的Discuz! X3.5 Release 20231221 UTF-8 下图:选择上传附件(提示可以最大上传100M) 下图:模拟上传84M的文件(

骚团长的博客 1831

k8s 中各种发布方式介绍以及对比

k8s 中各种发布方式介绍以及对比

寂夜了无痕的博客 1951

AMEsim不连续处理机制:仿真精度与效率的平衡艺术

本文深入解析AMEsim不连续处理机制在系统仿真中的应用,探讨如何平衡仿真精度与效率。通过液压系统仿真案例,详细介绍了事件检测算法、变步长求解器自适应策略及典型场景优化方法,帮助工程师有效应对仿真中的不连续性问题,提升仿真效率和准确性。

v4w5x6的博客 442

k8s集群的资源发布方式(滚动/蓝绿/灰度发布)及声明式管理方法

目录1.常见的发布方式2.实现蓝绿发布3.实现金丝雀发布(Canary Release)4.声明式管理方法蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚优点:用户无感知,部署和回滚速度较快;缺点:浪费资源成本较高滚动发布:按批次停止老版本实例,启动新版本实例。优点:节约资源;缺点:部署和回滚速度较慢灰度发布(金丝雀发布):根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本优点:保证整体系统稳定性,如果出现问题影响范围较小;缺点:自动化要求较高滚动升级方式: 蓝绿升级方式:

2402_83805984的博客 1879

vue支付项目-APP支付宝支付功能

如果用户已安装支付宝客户端,商家 App 唤起支付宝完成支付,支付完后跳回到商家 App 内,最后展示支付结果。如果用户没有安装支付宝客户端,商家 App 内会调起支付宝网页支付收银台,用户登录支付宝账号,支付完后展示支付结果。1.点击按钮开通或者续费,会验证是否选择会员商品以及对协议是否查看选中(这里根据项目需要自行验证,可忽略),验证通过打开选择支付方式弹窗页面,选择微信支付或者支付宝支付;4.可取消支付,放弃支付会返回会员页面,页面提示支付取消;1.判断支付方式,如果是2,则是支付宝支付方式。

总结前端开发中遇到的问题,分享前端知识 1万+

OpenClaw实战系列·进阶特辑02:多智能体协同——打造企业级AI中台

**企业级AI中台面临多Agent协同的挑战,本文提出基于多智能体协同的解决方案。通过分析单Agent的局限性(上下文溢出、专业度稀释等)和多Agent的核心优势(任务专注度、故障隔离等),提出三种协作架构模式(指挥型、联邦型、点对点型),并强调人格化设计的重要性。文章详细介绍Agent间通讯机制(同步/异步会话、文件系统协作)和"身脑分离"的解耦架构设计,提供可落地的企业级AI中台实施方案。

PeterPan的博客 495

kubernetes》》k8s》》滚动发布 、金丝雀发布 、

K8s 发布

Kaizen的博客 271

TIBCO Jaspersoft Studio报表开发 使用教程-进阶版

本文学习内容容器定制二级目录三级目录 容器定制 二级目录 三级目录

吉哲的博客 7521

k8s灰度更新_k8s_deployment 以及灰度发布、滚动发布和蓝绿发布

For those that want to dive right in, I have put up a tutorial and some sample manifests on github. Check it out at https://github.com/IanLewis/kubernetes-bluegreen-deployment-tutorialKubernetes has a...

weixin_39750190的博客 506

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

k8s集群的资源发布方式(滚动/蓝绿/灰度发布)及声明式管理

比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。也可以通过kubectl delete -f svc.yaml该命令直接删除,因为svc.yaml配置文件中已经定义了该资源的各种参数,直接指定这个文件删除即可。#但是此种方法并不是所有字段都能进行修改,若遇到 不能修改的字段,则直接选择离线模式进行修改。通过切换负载均衡的流量来实现业务的切换。

weixin_62922268的博客 566

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

蓝绿发布、灰度发布和滚动发布

蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚 灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本 滚动发布:按批次停止老版本实例,启动新版本实例 蓝绿发布 项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务 当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署。A组重新提供服务 最后,B组也升级完成,负载均衡重新接入B组,此时,AB组版本都已经升级完成,并且都对外提供服务 优点.

月迷津渡丶的专栏 353

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Kubernetes—部署自动化平台(Jenkins)

1.项目发布方案概述 (1)蓝绿发布 项目逻辑上分为AB组,在项目升级时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。A组升级完成上线,B组从负载均衡中摘除。 特点: • 策略简单 • 升级/回滚速度快 • 用户无感知,平滑过渡 缺点: • 需要两倍以上服务器资源 • 短时间内浪费一定资源成本 (2)灰度发布 灰度发布:只升级部分服务,即让一部分用户继续用老版本,一部分...

屈帅波的技术博客 2801

K8S基础操作之命令篇

Kubernetes 之所以需要 Service,一方面是因为 Pod 的 IP 不是固定的(Pod可能会重建),另一方面则是因为一组 Pod 实例之间总会有负载均衡的需求。Service 通过 Label Selector 实现的对一组的 Pod 的访问。对于容器应用而言,Kubernetes 提供了基于 VIP(虚拟IP) 的网桥的方式访问 Service,再由 Service 重定向到相应的 Pod。1.K8S管理操作分为2大类1.陈述式资源管理方法:通过命令语句来实现资源管理,一条命令实现。

tgzh123的博客 4223

【k8s管理操作】

通过命令方式语句来实现对资源的管理 一条命令来实现通过yaml和json1.查看版本信息 2.查看资源对象简写 3.查看集群信息 4.配置kubectl自动补全 5.node节点查看日志 基本信息查看 6.查看 master 节点状态 7.查看命令空间 //命令空间的作用:用于允许不同 命令空间 的 相同类型 的资源 重名的8.查看default命名空间的所有资源 9.创建命名空间app 10.删除命名空间app 11.在命名空间kube-public 创建副本控制器(deployment)来启动Pod(n

m0_56405902的博客 675

12.4 应用发布策略详解

策略适用场景滚动发布绝大多数场景。追求效率,且应用本身具备向后兼容性。蓝绿发布关键应用发布。需要最简化的回滚操作和最高的发布确定性。灰度发布高风险变更或面向用户的功能发布。需要最小化故障影响范围,并依据真实用户数据做发布决策。在 Kubernetes 中,滚动发布是内置的基础能力,而蓝绿和灰度发布则需要结合 Service、Ingress 或 Service Mesh 等流量管理工具来实现。

Goodgoodreadbook的博客 1052
上一篇: iptables和ipvs差异
下一篇: CentOS7安装使用containerd
夏子曦
夏子曦 优质创作者: 产品设计技术领域 优质创作者: 产品设计技术领域
博客等级 码龄15年 8289粉丝 427原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值