K8S實戰(十七)| 通過 StorageClass 實現動態卷供應


前言

StorageClass 相當於一個創建 PV 的模板,用戶通過 PVC 申請存儲卷,StorageClass 通過模板自動創建 PV,然后和 PVC 進行綁定。

更新歷史

啟用動態卷供應

創建 StorageClass 對象即可,即創建了模板。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
---  
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd

以上文件創建了兩種不同類型的 StorageClass,用戶根據自己需求通過 PVC 申請即可。

使用動態卷供應

用戶通過 PVC 來申請。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claim1
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: fast
  resources:
    requests:
      storage: 30Gi

以上文件說明該 PVC 向 storageClassName 為 fast 的存儲類申請卷,將會得到一個 PV 來與該 PVC 進行綁定。

實踐

《K8S實戰(六)| 配置NFS動態卷提供持久化存儲》 https://blog.zuolinux.com/2020/06/10/nfs-client-provisioner.html

回收策略

由 StorageClass 動態創建的 PersistentVolume 會在類的 reclaimPolicy 字段中指定回收策略,可以是 Delete 或者 Retain。

如果 StorageClass 對象被創建時沒有指定 reclaimPolicy,它將默認為 Delete。意味着 PV 被刪除后,原始數據也會被刪除。

建議設置為 Retain。

默認 StorageClass

查看當前的默認 StorageClass

# kubectl get sc
NAME                            PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storage (default)   fuseim.pri/ifs   Delete          Immediate           false                  9m46s

標記默認的 StorageClass 為非默認

kubectl patch storageclass 目前的默認storageclass名稱 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'

標記一個普通 sc 為默認

kubectl patch storageclass storageclass名稱 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

結束語

StorageClass 對象並不是為了自動創建 PV 而建立的,所以在靜態創建機制和動態創建機制中都應該存在該參數。

如果 PVC 中沒有指定 storageClassName,那么:

  1. 如果集群已經開啟了名叫 DefaultStorageClass 的 Admission Plugin,該 Plugin 會為 PVC 和 PV 自動添加一個默認的 StorageClass。
  2. 如果沒有該 Plugin,PVC 的 storageClassName 的值是 "",它只能跟 storageClassName 是 "" 的 PV 進行綁定。

聯系我

微信公眾號:zuolinux_com

微信掃碼關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM