StorageClass的介紹
StorageClass是對存儲資源的一個抽象定義。與靜態模式的存儲卷配置(就是集群管理員手動去創建持久卷PV),StorageClass是一種動態模式的存儲卷配置。StorageClass資源同PV一樣,也不是命名空間級別的,是集群級別的。
StorageClass資源使得集權管理員解放雙手,無需多次手動創建持久卷PV,集群管理員只需要創建不同類別的存儲類對應的StorageClass資源,供用戶的PVC資源進行引用,k8s系統會自動創建持久卷PV與持久卷聲明PVC進行綁定。
在用戶創建持久卷聲明PVC之前,集群管理員需要創建StorageClass資源,這樣才能動態的創建新的持久卷PV。
StorageClass的作用or優勢
- 減少了用戶對於底層存儲資源各方面細節的關注,只需要關注自己創建的PVC資源,引用存儲類的對應StorageClass資源即可;
- 集群管理員將從多次創建PV這項工作中解脫出來,只要有了StorageClass資源,PVC創建引用好后,k8s系統會自動為其創建合適的PV,並且將PV和PVC綁定好,從而實現動態的資源供應。
StorageClass的定義
StorageClass主要包含了名稱、后端存儲提供者、后端存儲參數等配置;
yaml文件示例:
apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
name: nfs-storage-test
provisioner: fuseim.pri/ifs
parameters:
type: xxx
... ...
關鍵配置說明:
-
名稱:
metadata.name
主要描述了StorageClass的名稱,主要為持久卷聲明PVC應用,在PVC的yaml文件中通過spec.storageClassName
對其進行引用。 -
提供者:
provisioner
描述的是底層存儲資源的提供者,一般是以"kubernetes.io/"
開頭,用戶也可以自定義,如上述例子。在PVC創建后,持久卷PV由該metadata.name
的StorageClass資源中引用的provisioner
創建。 -
參數:
parameters
可有可無,這是后端存儲資源提供者的一些參數設置,如果是自定義的provisioner,不一定有參數。
StorageClass常用命令
創建StorageClass資源(yaml方式)
$ kubectl create -f storageclass_test.yaml
查看StorageClass資源
$ kubectl get storageclass -n ns1
我們也可以通過縮寫進行查看kubectl get sc
查看某個StorageClass資源詳情
$ kubectl describe sc sc_name
其中,sc_name為StorageClass資源的名稱
刪除StorageClass資源
$ kubectl delete sc sc_name
其中,sc_name為StorageClass資源的名稱