K8S pv與pvc匹配不到的坑
阿新 • • 發佈:2020-10-23
建立PV和PVC時,只有相同型別的STORAGECLASS才能匹配到一起,所以要設定相同的storageClassName標籤。
類
申領可以通過為storageClassName
屬性設定StorageClass的名稱來請求特定的儲存類。 只有所請求的類的 PV 卷,即storageClassName
值與 PVC 設定相同的 PV 卷, 才能繫結到 PVC 申領。
PVC 申領不必一定要請求某個類。如果 PVC 的storageClassName
屬性值設定為""
, 則被視為要請求的是沒有設定儲存類的 PV 卷,因此這一 PVC 申領只能繫結到未設定 儲存類的 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:
檢視是否掛在成功: