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

微信掃碼關注

相關文章
相關標籤/搜索