容器升級業務不中斷
更新時間 2024-04-22 17:31:24
最近更新時間: 2024-04-22 17:31:24
分享文章
本節介紹云容器引擎的最佳實踐:容器升級業務不中斷。
應用場景
在 Kubernetes 集群中,常見的應用部署模式是使用 Deployment 與 LoadBalancer 類型的Service 對外提供訪問。在進行應用更新或升級時,Deployment 會創建新的 Pod 并逐步替換舊的 Pod,但在這個過程中可能會出現服務中斷的情況。
解決方案
為了最大程度的減少服務中斷,我們可以采取一系列措施:
- 設置滾動更新策略:通過設置Deployment的滾動更新策略來控制更新的速度,可以指定更新期間的最大不可用副本數(maxUnavailable)和同時可用的最大副本數(maxSurge),通過合理設置這些參數,可以確保在更新過程中保持足夠的可用性。
- 健康檢查和就緒探針:在容器中配置健康檢查和就緒探針,確保新Pod在完全就緒之前不會接收流量,從而減少中斷。
- 外部負載均衡器配置:如果使用LoadBalancer類型的Service對外提供訪問,可以配置服務對外部請求的負載均衡行為,主要包括以下兩種:
- Cluster:默認模式,外部流量可以轉發到其它節點上的Pod,轉發時會替換掉報文的源IP為上一個轉發節點的地址。
- Local:外部流量只會發給本機的Pod,轉發時會保留源IP。
實踐
- 登錄云容器引擎控制臺,單擊集群名稱進入集群
- 左側菜單欄選擇工作負載,在工作負載列表中,單擊無狀態進入Deployment列表頁,單擊創建新Deployment,進入Deployment配置頁面。
- 單擊顯示 高級設置,升級策略處可以自定義MaxSurge與MaxUnavailable。本示例中配置最大不可用副本數為25%,同時可用的最大副本數為25%,用于控制工作負載的滾動步長。
- 在實例內容器選框位置,單擊顯示 高級設置,容器健康檢查選區可以設置存活檢查與就緒檢查。本示例為TCP端口檢查,請根據應用實際情況進行設置,配置就緒檢查的啟動延時探測時間為20s,用于控制工作負載滾動更新的時間間隔。
- 在實例內容器選框位置,單擊顯示 高級設置,對容器進行停止前處理,可以設置為工作負載收到刪除請求后休眠30s,使其具備充足的時間來處理剩余請求,保證服務正常運行。
- 左側菜單欄選擇網絡,在網絡列表中,單擊服務進入Service列表,單擊創建服務,進入Service配置頁面。
- 服務類型選擇負載均衡,下方訪問設置處會出現外部流量策略選框,用戶可以自行選擇Cluster類型流量策略或Local類型流量策略。
- 單擊顯示 高級設置,可以選擇Session Affinty方式。
- None:Kubernetes不會保持與特定客戶端的會話狀態,每個請求都根據負載均衡算法獨立地路由到后端Pod,意味著即使是來自同一客戶端的連續請求,也可能被發送到不同的后端Pod上,從而不會保持會話狀態。
- 客戶端IP:Kubernetes將使用客戶端的IP地址來決定將請求路由到哪個后端Pod,同一個客戶端的請求始終轉發至同一個后端的Pod對象。
- 設置完成后,進入Deployment列表頁,選擇某個工作負載,單擊右側重新部署,重啟方式選擇滾動重啟,可以看到新實例被首先創建出來,然后停止舊的實例,確保始終有實例正在運行。