iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
DevOps

從認識Docker到精通系列 第 27

第二十七天 - PV、PVC、StorageClass

  • 分享至 

  • xImage
  •  

PV、PVC、StorageClass

昨天我們提到了 K8s 為了解決 volume 和實際硬體裝置設置的過於耦合的解決方案 - PV 和 PVC,PV 由管理者管理,配置實際硬體上的儲存空間、實際路徑等,PVC 則由開發者配置需要的空間等,讓開發者可以專注在容器的運行本身,不需要去管硬體的設置文件要怎麼寫、路徑該怎麼設,也讓 Container 移機使用的彈性更高。今天的主題要來談談 PV 和 PVC 的生命週期,以及另一個設定動態配置時會需要用到的StorageClass

Volume Lifecycle

Volume 生命週期包含五個階段-ProvisioningBindingUsingReleasing(、Deleting)

Provisioning

provisioning,為 PV 創建的階段,有靜態和動態兩種方式,最後的結果就是 PV 和 PVC 成功配對

靜態模式

叢集管理員預先創建許多PV,PVC與這些預先創建的PV進行配對

動態模式

不需要預先建立 PVC ,當使用者透過建立 PVC 向儲存類型進行申請時,系統會透過 StorageClass 的設定內容配置相對應的 PV,並與 PVC 綁定

StorageClass

Binding

使用者建立 PVC 之後,系統會找尋適當的 PV 和其綁定,綁定之後 container便可以使用這個volume,且此PV 和 PVC 為1對1的綁定關係,PV 為這個 PVC 獨佔

Using

pod 需要使用儲存資源時,須在volume的定義中引用 PVC 的部分,將 PVC 掛載到容器的特定路徑做使用

保護機制 (Storage Object in Use Protection)

PV、PVC 為獨立於 pod 的資源,可以單獨被刪除,因此,在做刪除行為時,系統會檢測當前的儲存資源是否有被使用,若有的話會保護 PV、PVC 不在邊運行的時候被刪除,具體機制是將刪除操作延遲執行,因此若對執行中的 PVC 和 PV 執行刪除指令,PV 和 PVC 的狀態會被設為Terminating,Finalizer 也會被系統設為kubernetes.io/pvc-protection,當 pod 被刪除後才會對 PVC 進行刪除,接著才輪到 PV

Releasing、(Deleting)

當儲存資源使用完畢之後,即可刪除 PVC,與其綁定的 PV 狀態會被轉為 Released,因資料內容可能還需要進行處理,待處理完成後才可以再和其他PVC進行綁定,管理員也可以設定資料處理的政策,有RetainDeleteRecycle三個選項

  • Retain:保留資料,刪除 PVC 之後,與之綁定的PV不會被刪除,僅會標記為Released,需管理員手動刪除資料後此PV才可以給其他PVC使用
  • Delete:即刪除資料,但此參數需看雲端服務商是否支援
  • Recycle(棄用):執行rm -rf /path/to/volume

PV、PVC 的使用大致上就是這樣!明天來講講load balance?


上一篇
第二十六天 - PV & PVC
下一篇
第二十八天 - StorageClass
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言