1. 程式人生 > 實用技巧 >K8S pv與pvc匹配不到的坑

K8S pv與pvc匹配不到的坑

建立PV和PVC時,只有相同型別的STORAGECLASS才能匹配到一起,所以要設定相同的storageClassName標籤。

申領可以通過為storageClassName屬性設定StorageClass的名稱來請求特定的儲存類。 只有所請求的類的 PV 卷,即storageClassName值與 PVC 設定相同的 PV 卷, 才能繫結到 PVC 申領。

PVC 申領不必一定要請求某個類。如果 PVC 的storageClassName屬性值設定為"", 則被視為要請求的是沒有設定儲存類的 PV 卷,因此這一 PVC 申領只能繫結到未設定 儲存類的 PV 卷(未設定註解或者註解值為""

的 PersistentVolume(PV)物件在系統中不會被刪除,因為這樣做可能會引起資料丟失。 未設定storageClassName的 PVC 與此大不相同,也會被叢集作不同處理。 具體篩查方式取決於DefaultStorageClass准入控制器外掛是否被啟用。

  • 如果准入控制器外掛被啟用,則管理員可以設定一個預設的 StorageClass。 所有未設定storageClassName的 PVC 都只能繫結到隸屬於預設儲存類的 PV 卷。 設定預設 StorageClass 的工作是通過將對應 StorageClass 物件的註解storageclass.kubernetes.io/is-default-class
    賦值為true來完成的。 如果管理員未設定預設儲存類,叢集對 PVC 建立的處理方式與未啟用准入控制器外掛 時相同。如果設定的預設儲存類不止一個,准入控制外掛會禁止所有建立 PVC 操作。
  • 如果准入控制器外掛被關閉,則不存在預設 StorageClass 的說法。 所有未設定storageClassName的 PVC 都只能繫結到未設定儲存類的 PV 卷。 在這種情況下,未設定storageClassName的 PVC 與storageClassName設定未""的 PVC 的處理方式相同。

取決於安裝方法,預設的 StorageClass 可能在叢集安裝期間由外掛管理器(Addon Manager)部署到叢集中。

當某 PVC 除了請求 StorageClass 之外還設定了selector,則這兩種需求會按 邏輯與關係處理:只有隸屬於所請求類且帶有所請求標籤的 PV 才能繫結到 PVC。

在PV中設定storageClassName:

在PVC中設定storageClassName:

檢視是否掛在成功: