[k8s] Rolling Update & Rollback ================= ###### tags: `kubernetes` `application lifecycle management` ![](https://i.imgur.com/EruCBFx.png) ## types of development strategy ![](https://i.imgur.com/OrXJNTV.jpg) + Recreate + 先delete all,再create new one + Cons: service downtime + RollingUpdate + default setting + one by one update + 也因如此,才可以rollback ## RollingUpdate Strategy ### minReadySeconds + 容器內應用程式的啟動時間,Kubernetes 會等待設定的時間後才繼續進行升級流程 + 如果沒有此欄位的話,Kubernetes 會假設該容器一開完後即可進行服務 + 若未設定此欄位,在某些極端情況下可能會造成服務無法正常運作(新誕生的 pod 尚未進入可服務階段) ### maxSurge + ***升級過程中***最多可以比原先設定所==多出的 pod 數量== + 此欄位可以為固定值或是比例(%) + ex. maxSurge: 1、replicas: 5,代表 Kubernetes 會先開好 1 個新 pod 後才刪掉一個舊的 pod,整個升級過程中最多會有 5+1 個 pod ### maxUnavailable + 最多可以有幾個 pod 處在無法服務的狀態 + 與 maxSurge 不可同時為零 (當 maxSurge 不為零時,此欄位可為零) + ex. maxUnavailable: 1,代表 Kubernetes 整個升級過程中最多會有 1 個 pod 處在無法服務的狀