雲端與容器基礎
在 Kubernetes 的 Deployment 中,把 Pod 範本中的容器映像檔改成新版本。在預設的更新方式(RollingUpdate)下發生的事,下列何者正確?
- A建立新的 ReplicaSet,一邊增加新版本的 Pod 一邊減少舊版本的 Pod。舊的 ReplicaSet 以 Pod 數為0的狀態保留,供回復使用
- B在不重新建立 Pod 的情況下,就地把執行中 Pod 內的容器映像檔換成新版本,因此 Pod 的IP位址與名稱都不會改變
- C先同時刪除所有舊版本的 Pod,再一起建立新版本的 Pod,因此更新期間服務會暫時停止
查看答案與解析
正確答案:A. 建立新的 ReplicaSet,一邊增加新版本的 Pod 一邊減少舊版本的 Pod。舊的 ReplicaSet 以 Pod 數為0的狀態保留,供回復使用
Pod 範本改變時,Deployment 會為新範本建立 ReplicaSet,一邊確認新的 Pod 已準備就緒,一邊逐步減少舊 ReplicaSet 的 Pod。因此在更新期間,也有一定數量的 Pod 持續處理要求。舊的 ReplicaSet 會以 Pod 數為0的狀態保留,所以可用 kubectl rollout undo 回到前一版。先刪除全部 Pod 再重新建立的方式是 Recreate,只在明確指定時使用。
- A. 正確。一邊切換 ReplicaSet,一邊逐步替換 Pod。
- B. 不會就地替換 Pod 內的容器映像檔。會建立新的 Pod,IP位址也會改變。
- C. 這是 Recreate 方式的動作。預設的 RollingUpdate 會逐步替換 Pod。