天天看點

ACK 1.18叢集更新 - CSI Block Volume更新說明

背景:

ACK1.16叢集更新到1.18版本時,CSI Block Volume出現一個不相容的問題需要處理;

即:需要将1.16版本的節點(Kubelet)上使用Block Volume的Pod先遷移到1.18版本的節點上,然後再更新1.16版本節點;

什麼是Block Volume:

https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/#raw-block-volume-support

原因:

Kubernetes在1.17版本中對Block Volume的GlobalPath目錄結構做了修改,這樣就導緻在1.16版本挂載的Block Volume在1.18版本上無法識别。

是以需要遵循:在一個版本挂載的Block Volume必須在相同版本上進行解除安裝;問題詳見:

https://v1-17.docs.kubernetes.io/docs/setup/release/notes/#storage https://github.com/kubernetes/kubernetes/pull/74026

ACK解決方案:

ACK在1.18 Kubernetes(kubelet)做了相容,即讓1.18版本kubelet在解除安裝block volume時,也認識1.16版本的目錄結構;

但此問題在不同場景的行為有差別,目前對以下場景具有不同的相容性。

  1. 相容直接更新:

    以下場景在更新1.18叢集,可以直接更新:

    通過StatefulSet部署的應用挂載了Block Volume,

    通過單個Pod部署的應用挂載了Block Volume,

  2. 不相容直接更新:

    以下場景還不相容,您更新時需要遵循社群的Drain方案,進行排水或者先将挂載Block Volume的pod停掉:

    單個Block Volume被同一個節點的多個Pod同時挂載的場景;

    通過Deployment部署pod,并挂載了Block Volume;

更新注意:

對于不相容的場景,您不要對進群進行更新,除非使用社群排水方案,或者聯系我們一起看一下具體場景并給出更新方案;

繼續閱讀