變更預設儲存類別
此頁面說明如何變更預設的 Storage Class,該 Storage Class 用於為沒有特殊需求的 PersistentVolumeClaims 布建 Volume。
準備開始
你需要有一個 Kubernetes 叢集,並且必須將 kubectl 命令列工具設定為與你的叢集通訊。建議在至少有兩個節點且節點不充當控制平面主機的叢集上執行本教學課程。如果你還沒有叢集,可以使用 minikube 建立一個,或者你可以使用以下 Kubernetes playground 之一
若要檢查版本,請輸入kubectl version
。為何變更預設儲存類別(Storage Class)?
根據安裝方法,你的 Kubernetes 叢集可能會部署一個已標記為預設的 StorageClass。此預設 StorageClass 隨後用於為不需要任何特定儲存類別的 PersistentVolumeClaims 動態布建儲存空間。請參閱 PersistentVolumeClaim 文件 以取得詳細資訊。
預先安裝的預設 StorageClass 可能不適合你的預期工作負載;例如,它可能布建過於昂貴的儲存空間。如果是這種情況,你可以變更預設 StorageClass,或完全停用它以避免動態布建儲存空間。
刪除預設 StorageClass 可能無法運作,因為它可能會由叢集中執行的 addon 管理器自動重新建立。請查閱你的安裝文件,以取得關於 addon 管理器以及如何停用個別 addon 的詳細資訊。
變更預設 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 是否為預設
kubectl get storageclass
輸出類似於此
NAME PROVISIONER AGE standard kubernetes.io/gce-pd 1d gold (default) kubernetes.io/gce-pd 1d
下一步
- 深入瞭解 PersistentVolumes。