news 2026/5/14 21:56:05

K8s-金丝雀发布 简单实验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8s-金丝雀发布 简单实验

在Kubernetes中,金丝雀发布(Canary Release)是一种渐进式部署策略,目的是将新版本应用逐步暴露给一小部分用户或流量,通过持续监控确保其稳定性后,再逐步扩大范围直至完全替换旧版本。这种策略的名称来源于“矿井中的金丝雀”——早期矿工用金丝雀来检测有毒气体,如果金丝雀存活,说明环境安全。

金丝雀发布的核心原理

  1. 小范围验证

    • 先部署新版本(金丝雀版本)到生产环境,但仅允许少量用户或流量访问它(例如5%的请求)。

    • 大部分流量仍由旧版本处理,确保用户整体体验不受影响。

  2. 监控与观察

    • 监控新版本的性能指标(如错误率、延迟、CPU/内存使用率等)。

    • 如果新版本表现稳定,逐步增加其流量比例;如果发现问题,立即回滚。

  3. 逐步替换

    • 最终将100%流量切换到新版本,完成平滑升级。

为什么在Kubernetes中使用金丝雀发布?

  1. 降低风险

    • 避免一次性全量发布导致全局故障,尤其适用于关键业务场景。

  2. 快速反馈

    • 通过真实流量验证新版本,比测试环境更可靠。

  3. 无缝回滚

    • 发现问题时,只需将流量切回旧版本,无需重新部署。

创建条件是让蓝绿在同一个service名称下
vim green.yml

|kubectl apply -f green.yml
vim blue.yml

kubectl apply -f blue.yml
kubectl get po

查看服务端口kubectl get svc

完成后可以在网页上访问 192.168.11.160:32016
之后可以通过命令更改蓝绿的pod数量
kubectl scale deployment myapp-blue --replicas 8
kubectl scale deployment myapp-green --replicas 2

通过ingress做

vim blue.yml

kubectl apply -f blue.yml
vim green.yml

kubectl apply -f green.yml
vim green-svc.yml

kubectl apply -f green-svc.yml
vim ingress-canary.yml

kubectl apply -f ingress-canary.yml
vim master-ingress.yml

kubectl apply -f master-ingress.yml
kubectl get ingress 两个ingress共用一个地址

查看端口kubectl -n ingress-nginx get svc

在node节点添加 vim /etc/hosts

修改`canary-weight`注解值,逐步增加新版本流量:(也可以在文件中修改)
kubectl annotate ingress/myapp-canary \
nginx.ingress.kubernetes.io/canary-weight="50" \ # 50%流量到v2
--overwrite

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 21:46:25

Spring Boot 事件监听器深度实践:从进程内解耦到生产级事件驱动架构

Spring Boot 事件监听器深度实践:从进程内解耦到生产级事件驱动架构 摘要:很多团队都用过 Spring Boot 的 @EventListener,但多数停留在“发个事件、解个耦”的入门层。真正到了生产环境,问题马上出现:事务边界不清、异步线程池打满、监听器异常丢失、事件重复消费、跨服务…

作者头像 李华
网站建设 2026/5/14 21:46:11

别再到处找模型了!手把手教你为Ngspice配置ADI/TI等厂商的官方SPICE库

别再到处找模型了!手把手教你为Ngspice配置ADI/TI等厂商的官方SPICE库 刚接触电路仿真的工程师常陷入一个怪圈:明明选好了仿真工具,却在模型获取上耗费大量时间。当你兴奋地打开Ngspice准备验证设计时,突然发现——器件模型去哪找…

作者头像 李华
网站建设 2026/5/14 21:45:21

EncodingChecker:从编码混乱到项目统一的三步解决方案

EncodingChecker:从编码混乱到项目统一的三步解决方案 【免费下载链接】EncodingChecker A GUI tool that allows you to validate the text encoding of one or more files. Modified from https://encodingchecker.codeplex.com/ 项目地址: https://gitcode.com…

作者头像 李华
网站建设 2026/5/14 21:44:14

JS如何获取元素高度

在前端开发中,获取元素高度是最基础也是最常用的操作之一。本文将详细介绍 原生JavaScript 和 jQuery 中获取元素高度的各种方法,帮你彻底搞懂它们的区别! 📖 目录 原生JavaScript获取高度jQuery获取高度各方法对比实际应用场景常…

作者头像 李华