Deployment Strategies - Common Deployment Strategies
Kubernetes 提供了多種部署策略來協助開發者和運維工程師順利地更新應用程式,同時最大化系統的穩定性與可靠性。 以下將詳細介紹六種常見的部署策略:Recreate、Rolling Update、Blue/Green、Canary、A/B Testing 和 Shadow。
Recreate Strategy
概述
Recreate 是最簡單的部署策略。在此策略下,舊版本的應用程式會被完全關閉,然後再啟動新版本的應用程式。
流程
- 停止所有舊版本的 Pod。
- 啟動所有新版本的 Pod。
優點
- 簡單直接,適合不需要零停機時間的應用。
- 在部署過程中,只會有一個版本的應用在運行,避免版本之間的潛在衝突。
- 在部署過程中,不會對主機產生額外的負擔。
缺點
- 在更新過程中會造成停機,可能影響使用者體驗。
範例
- 首先將舊的 v1-deployment 完全下線
kubectl.exe scale deployment v1-deployment --replicas=0
- 等到舊的完全停止後,我們再將新版本的應用部署上去,並且擴展到 3 個 pod
kubectl.exe set image deployment/v1-deployment v1-container=hello-world:v2.0.0
kubectl.exe scale deployment v1-deployment --replicas=3
備註
這種部屬方式會導致舊版本停止到新版本啟動之間無法提供服務,一般不會在 Production 環境使用。
Rolling Update Strategy
概述
Rolling Update 是 Kubernetes 預設的部署策略,通過逐步替換舊版本的 Pod 來實現應用的更新,緩慢平和地釋出新的版本。
流程
- 按照設定的步驟,依序關閉舊版本的 Pod 並啟動新版本的 Pod。
- 在任何時間點,集群中會同時存在舊版本和新版本的 Pod。
調整參數
- 最大執行數:可以同時釋出的服務數量。
- 最大峰值:升級過程中最多可以比原先設定多出的服務數量。
- 最大不可用數:最多可以有幾個服務處在無法服務的狀態。
優點
- 相較於藍綠部署更加節省資源。
- 便於設定,服務不中斷。
缺點
- 若新版本存在問題,回滾需要一定時間。
- 可能導致短暫的不一致性,無法控制流量且噴錯時,除錯的困難度較高。
Blue/Green Strategy
概述
Blue/Green 策略將兩套完整的環境(Blue 和 Green)分開運行,一個用於生產環境,另一個用於部署新版本, 等新版本服務完整開啟,並且在新版本滿足上線條件測試後,才將流量從負載均衡從舊版本切到新版本。
流程
- 部署新版本至 Green 環境,並進行測試。
- 測試完成後,切換流量至 Green 環境。
- 保留 Blue 環境作為備份,以便快速回滾。
優點
- 確保新版本的完全穩定後再對外提供服務。
- 回滾速度快。
- 避免新舊版本衝突,整個過程只會有一個版本存在。
缺點
- 需要更多資源來維持兩個環境,部署和管理的成本較高。
- 切換到新版本的瞬間,如果有未處理完成的業務時,會比較麻煩。
Canary Strategy
概述
Canary 策略通過將新版本逐步釋放給一部分用戶來測試其穩定性,他與藍綠部署不同的是它不是非黑即白的部屬放式,所以又稱灰度部屬。
流程
- 部署新版本給少數用戶,觀察系統指標和用戶反饋。
- 根據測試結果,逐步增加新版本的流量分配。
優點
- 能夠及早發現新版本的問題,降低全量部署的風險。
- 只向一小部分使用者釋出。
- 支持逐步推進更新過程。