K8S实战(二十一)| 部署策略:蓝绿部署+滚动部署+灰度部署+金丝雀部署

前言

应用程序的更新发布,如何下降对用户的影响面,人们研究出了几种发布策略。html

更新历史

蓝绿部署

流程linux

准备 A/B 两个集群,运行相同的程序。服务器

在项目升级时,首先把 A 集群从负载均衡中移除,进行新版本的部署。微信

B 集群仍提供服务。负载均衡

A 集群升级完成后加入负载均衡,B 集群从负载均衡中移除。spa

优势htm

平滑发布,不会因发布致使服务中断,策略简单,回滚速度快,用户无感知blog

缺点资源

消耗资源,硬件成本高,须要两倍以上服务器资源。rem

滚动部署

流程

先启动一台新服务器运行新版本,加入生产环境。

而后中止一台老版本服务器,将其更新为新版本,而后加入生产环境。

依此类推,直到集群中所有服务器升级为新版本。

优势

解决了蓝绿发布成本高的问题。若是业务须要 10 台服务器,那么升级中一共有 11 台服务器便可。

缺点

部署周期长,发布策略复杂。

若是此时用户访问出现问题,没法快速肯定是新版本致使仍是旧版本 BUG。即没法进行精确流量控制。

金丝雀部署、也叫灰度部署

流程

在具有精确流量控制的状况下,将部分服务器升级为新版本,而后将指定来源 IP 的小部分流量导向到这部分服务器。

肯定这部分用户没问题后,将所有服务器升级为新版本。

K8S 中可使用两套 Deployment,其中一套 Deployment 运行新版本 Pod,经过 ingress 映射出来后,经过 DNS 将指定来源地区的解析,或者公司内部用户的解析,导向到该 ingress。

优势

因为咱们控制了指定来源的 IP 访问新版本,因此出现问题后,咱们可以知道受影响用户访问的是新版本仍是旧版本,从而避免了滚动发布的缺点。

缺点

依然没法避免新版本出现问题后对用户的影响,但咱们已经将其控制在可控范围以内。

结束语

金丝雀部署,即灰度发布,是相对比较完美的应用程序发布解决方案。

联系我

微信公众号:zuolinux_com

微信扫码关注

相关文章
相关标签/搜索