---
# System prepended metadata

title: '[k8s] Rolling Update & Rollback'
tags: [application lifecycle management, kubernetes]

---

[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 處在無法服務的狀