導(dǎo) 當(dāng)集群中需要升級 Mount Pod 時(shí),目前推薦的方式是更新配置后重新掛載應(yīng)用 Pod 進(jìn)行滾動(dòng)升級,但這種升級方式的問題在于需要業(yè)務(wù)重啟。 如果對業(yè)務(wù)的使用模式很清楚時(shí),比如沒有數(shù)據(jù)寫入等,也可...

當(dāng)集群中需要升級 Mount Pod 時(shí),目前推薦的方式是更新配置后重新掛載應(yīng)用 Pod 進(jìn)行滾動(dòng)升級,但這種升級方式的問題在于需要業(yè)務(wù)重啟。

如果對業(yè)務(wù)的使用模式很清楚時(shí),比如沒有數(shù)據(jù)寫入等,也可以選擇手動(dòng)重建 Mount Pod 的方式。在更新配置后,手動(dòng)刪除已有的 Mount Pod,并等待其重建,同時(shí)依賴 CSI 對掛載點(diǎn)的自動(dòng)恢復(fù)功能,等待應(yīng)用 Pod 中掛載點(diǎn)的恢復(fù)。這種升級的過程有幾個(gè)問題:

  1. 操作繁瑣 :需要用戶自己使用 kubectl 命令,通過應(yīng)用 Pod 找到對應(yīng)的 Mount Pod;
  2. 升級時(shí)業(yè)務(wù)中斷 :CSI 需要先等待舊的 Mount Pod 完全被刪除,才會(huì)去創(chuàng)建新的 Mount Pod。這就導(dǎo)致了在舊的 Mount Pod 刪除后、新的 Mount Pod 起來前,業(yè)務(wù)處于不可用狀態(tài);
  3. 掛載點(diǎn)自動(dòng)恢復(fù)對原 I/O 操作的影響 :由于 CSI 使用了重新 bind 應(yīng)用掛載點(diǎn)的方式實(shí)現(xiàn)了自動(dòng)恢復(fù),所以即使在恢復(fù)后,原先的 I/O 操作都會(huì)報(bào)錯(cuò)。

為了解決現(xiàn)有的升級過程遇到的問題,JuiceFS CSI Driver 在 v0.25.0 版本中,實(shí)現(xiàn)了 Mount Pod 的平滑升級,即在應(yīng)用不停服的情況下升級 Mount Pod。