當集群中需要升級 Mount Pod 時,目前推薦的方式是更新配置后重新掛載應(yīng)用 Pod 進行滾動升級,但這種升級方式的問題在于需要業(yè)務(wù)重啟。
如果對業(yè)務(wù)的使用模式很清楚時,比如沒有數(shù)據(jù)寫入等,也可以選擇手動重建 Mount Pod 的方式。在更新配置后,手動刪除已有的 Mount Pod,并等待其重建,同時依賴 CSI 對掛載點的自動恢復(fù)功能,等待應(yīng)用 Pod 中掛載點的恢復(fù)。這種升級的過程有幾個問題:
- 操作繁瑣 :需要用戶自己使用 kubectl 命令,通過應(yīng)用 Pod 找到對應(yīng)的 Mount Pod;
- 升級時業(yè)務(wù)中斷 :CSI 需要先等待舊的 Mount Pod 完全被刪除,才會去創(chuàng)建新的 Mount Pod。這就導(dǎo)致了在舊的 Mount Pod 刪除后、新的 Mount Pod 起來前,業(yè)務(wù)處于不可用狀態(tài);
- 掛載點自動恢復(fù)對原 I/O 操作的影響 :由于 CSI 使用了重新 bind 應(yīng)用掛載點的方式實現(xiàn)了自動恢復(fù),所以即使在恢復(fù)后,原先的 I/O 操作都會報錯。
為了解決現(xiàn)有的升級過程遇到的問題,JuiceFS CSI Driver 在 v0.25.0 版本中,實現(xiàn)了 Mount Pod 的平滑升級,即在應(yīng)用不停服的情況下升級 Mount Pod。
全部評論