更改預設儲存類
本頁面介紹如何更改用於為沒有特殊要求的 PersistentVolumeClaims 動態供應卷的預設 StorageClass。
準備工作
你需要有一個 Kubernetes 叢集,並且 kubectl 命令列工具已配置為與你的叢集通訊。建議在至少有兩個不充當控制平面主機的節點組成的叢集上執行本教程。如果你還沒有叢集,可以使用 minikube 建立一個,或者使用這些 Kubernetes 演練場之一。
要檢查版本,請輸入 kubectl version
。
為什麼要更改預設儲存類?
根據安裝方式,你的 Kubernetes 叢集可能部署了一個標記為預設的現有 StorageClass。然後,此預設 StorageClass 將用於為不需要任何特定儲存類的 PersistentVolumeClaims 動態供應儲存。有關詳細資訊,請參閱 PersistentVolumeClaim 文件。
預安裝的預設 StorageClass 可能不太適合你預期工作負載;例如,它可能會供應過於昂貴的儲存。如果是這種情況,你可以更改預設 StorageClass,或完全停用它以避免動態供應儲存。
刪除預設 StorageClass 可能不起作用,因為它可能會被叢集中執行的外掛管理器自動重新建立。有關外掛管理器以及如何停用單個外掛的詳細資訊,請查閱你的安裝文件。
更改預設 StorageClass
列出叢集中的 StorageClass
kubectl get storageclass
輸出類似於:
NAME PROVISIONER AGE standard (default) kubernetes.io/gce-pd 1d gold kubernetes.io/gce-pd 1d
預設 StorageClass 用
(default)
標記。將預設 StorageClass 標記為非預設
預設 StorageClass 有一個註解
storageclass.kubernetes.io/is-default-class
設定為true
。任何其他值或缺少該註解都被解釋為false
。要將 StorageClass 標記為非預設,你需要將其值更改為
false
kubectl patch storageclass standard -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
其中
standard
是你選擇的 StorageClass 的名稱。將 StorageClass 標記為預設
與上一步類似,你需要新增/設定註解
storageclass.kubernetes.io/is-default-class=true
。kubectl patch storageclass gold -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
請注意,你可以有多個
StorageClass
標記為預設。如果將多個StorageClass
標記為預設,則沒有明確定義storageClassName
的PersistentVolumeClaim
將使用最新建立的預設StorageClass
進行建立。當使用指定的volumeName
建立PersistentVolumeClaim
時,如果靜態卷的storageClassName
與PersistentVolumeClaim
上的StorageClass
不匹配,則它將保持掛起狀態。驗證你選擇的 StorageClass 是否為預設
kubectl get storageclass
輸出類似於:
NAME PROVISIONER AGE standard kubernetes.io/gce-pd 1d gold (default) kubernetes.io/gce-pd 1d
下一步
- 瞭解更多關於 PersistentVolumes 的資訊。