本文個人博客地址:https://www.huweihuang.com/kubernetes-notes/storage/dynamic-provisioning.html
Dynamic Volume Provisioning
Dynamic volume provisioning允許用戶按需自動創建存儲卷,這種方式可以讓用戶不需要關心存儲的複雜性和差別,又可以選擇不同的存儲類型。
1. 開啓Dynamic Provisioning
需要先提前創建StorageClass
對象,StorageClass
中定義了使用哪個provisioner
,並且在provisioner
被調用時傳入哪些參數,具體可參考StorageClass
介紹。
例如:
- 磁盤類存儲
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
- SSD類存儲
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
2. 使用Dynamic Provisioning
創建一個PVC對象,並且在其中storageClassName
字段指明需要用到的StorageClass
的名稱,例如:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: claim1
spec:
accessModes:
- ReadWriteOnce
storageClassName: fast
resources:
requests:
storage: 30Gi
當使用到PVC的時候會自動創建對應的外部存儲,當PVC被刪除的時候,會自動銷燬(或備份)外部存儲。
3. 默認的StorageClass
當沒有對應的StorageClass
配置時,可以設定默認的StorageClass
,需要執行以下操作:
- 在API Server開啓
DefaultStorageClass
admission controller 。 - 設置默認的
StorageClass
對象。
可以通過添加storageclass.kubernetes.io/is-default-class
註解的方式設置某個StorageClass
爲默認的StorageClass
。當用戶創建了一個PersistentVolumeClaim
,但沒有指定storageClassName
的時候,會自動將該PVC的storageClassName
指向默認的StorageClass
。
參考文章: