当前位置: 首页 > news >正文

k8s蓝绿发布简介

k8s蓝绿发布简介

    • 什么是蓝绿部署
    • K8S中如何实现蓝绿部署
      • 方法1: 通过`k8s service label`标签来实现蓝绿发布
      • 方法2: 通过`Ingress 控制器`来实现蓝绿发布
      • 方法3: 通过`Istio`实现蓝绿发布
        • k8s蓝绿部署流程图
      • 1. 蓝绿发布流程
      • 2. 核心配置详解
      • 3. 方案优势
      • 4. 方案对比与生产建议

什么是蓝绿部署

参考: https://youtu.be/CLq_hA0lAd0
https://help.coding.net/docs/cd/best-practice/blue-green.html

蓝绿部署最早是由马丁·福勒2010年在他的博客中提出.
蓝绿部署是一种软件部署策略,用于在生产环境中无缝发布切换应用程序的新版本.
蓝绿(blue/green)(绿色)新版本(蓝色)旧版本一起存在,万一新版本有bug,方便随时回滚老版本.

  • 蓝色: 表示旧版本
  • 绿色: 表示新版本
  • 优点: 零停机部署和回滚
  • 缺点: 同时运行两套环境,硬件资源需要2倍.

K8S中如何实现蓝绿部署


方法1: 通过k8s service label标签来实现蓝绿发布

https://blog.csdn.net/omaidb/article/details/147163202


方法2: 通过Ingress 控制器来实现蓝绿发布

https://blog.csdn.net/omaidb/article/details/147166010


方法3: 通过Istio实现蓝绿发布

基于 Istio 实现蓝绿发布,核心在于利用其强大的流量管理能力(尤其是VirtualServiceDestinationRule),在不依赖副本数的情况下,精准地将生产流量在“蓝”(旧版本)与“绿”(新版本)环境间一键切换。这样不仅安全、服务不中断,而且能随时快速回滚。


k8s蓝绿部署流程图


1. 蓝绿发布流程

通常由 CI/CD 流水线(如 Argo Rollouts、PipeCD)编排,关键步骤如下:

  1. 准备环境:部署“绿环境”(新版本 v2),此时所有流量仍在“蓝环境”(旧版本 v1)。
  2. 切换流量:通过调整 Istio 路由规则,将所有流量一次性从 v1 切到 v2。
  3. 验证与收尾:验证新版本稳定后,清理旧版本资源;如有问题,立即切回蓝环境完成回滚。

2. 核心配置详解

实现蓝绿发布需操作以下关键资源:

  • Deployment & Service:准备两个不同标签(如version: v1version: v2)的 Deployment,并通过同一个 Kubernetes Service 暴露。
  • DestinationRule (目标规则):定义 v1 和 v2 两个子集(subset),作为路由的后端。
apiVersion:networking.istio.io/v1beta1kind:DestinationRulemetadata:name:myapp-destinationspec:host:myapp-servicesubsets:-name:v1labels:version:v1-name:v2labels:version:v2
  • VirtualService (虚拟服务)这是控制蓝绿切换的核心。通过修改路由的weight(权重)字段,实现一键切流。
    • 蓝环境(v1 全量)
http:-route:-destination:{host:myapp-service,subset:v1}weight:100-destination:{host:myapp-service,subset:v2}weight:0
  • 切换至绿环境(v2 全量):只需将 v1 的 weight 改为 0,v2 改为 100 即可。

3. 方案优势

  • 流量与实例解耦:无需通过调整 Pod 数量来控制流量,即使 1% 的流量也不需要维持 100 个 Pod。
  • 无侵入性:应用代码无需关心发布策略,Istio 通过 Sidecar 透明接管流量。
  • 回滚极速:一旦新版本异常,通过 Git 或 UI 将流量权重瞬间切回旧版本即可。

4. 方案对比与生产建议

  • Ingress 规则:早期方案利用 Ingress 切换 Service 后端(标签选择器),但这种方式缺乏细粒度控制且切换不够平滑。推荐使用VirtualService
  • 生产落地:建议结合Argo Rollouts等高级部署控制器,它原生支持 Istio,能以蓝绿/金丝雀策略自动化更新,并提供可视化的“一键切换”和“一键回滚”操作。
http://www.jsqmd.com/news/587978/

相关文章:

  • 设计模式笔记
  • java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/Maven/maven-repository/org/spring
  • 新手零基础入门:用快马AI生成你的第一个Python自动化测试脚本
  • 新手福音:快马一键生成鸿蒙pc镜像下载与入门指导应用
  • 消息保护神器:RevokeMsgPatcher让重要对话不再消失
  • SystemBarTint终极着色指南:从颜色到Drawable的完整实现教程
  • 优测云真机成本对比与落地实践解析
  • 知网检测AI率高怎么降效果好?这3种方法按情况选
  • 我是如何写作的?
  • SQL优化实战:从慢查询到秒级响应的蜕变之路
  • 终极Zotero中文文献管理指南:茉莉花插件让效率提升80%
  • 前端问题解决汇总
  • 如何快速掌握Bloaty输出分析:VM SIZE与FILE SIZE完整指南
  • 知网AI率检测严了,这种降AI方法通过率最高
  • 利用快马平台快速构建网络技术学习原型:三子网校园网络模拟
  • 达不到的视野
  • 从隔离菜谱到通用烹饪指南:Cook用户体验设计的完整演进之路
  • 终极指南:3步永久解密科学文库PDF文档,告别7天访问限制
  • 用DeepSeek降AI率的正确姿势:指令模板+全文处理技巧
  • python脚本下载ERA5数据详细规范和教程
  • WPF控件开发终极指南:从用户控件到自定义控件的完整生命周期
  • 新手福音:在快马平台用AI生成交互式opencode安装教程,轻松上手
  • 安装Istio
  • iTorrent高级功能探索:Tracker管理、文件选择与下载优先级设置
  • 终极CRI-O容器检查点测试指南:如何全面验证备份恢复功能可靠性
  • 高级Bloaty使用技巧:自定义数据源和正则表达式过滤的完整教程
  • unity中 相机没有视锥效果线框了,如何打开
  • UBANTU安装Duckietown细节操作与错误记录
  • 效率提升秘籍:利用快马生成智能安装器,极速部署openclaw开发环境
  • 揭秘Farm模块图追踪技术:如何实现极速热更新与精准依赖分析