變更預設儲存類別

此頁面說明如何變更預設的 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

  1. 列出叢集中的 StorageClass

    kubectl get storageclass
    

    輸出類似於此

    NAME                 PROVISIONER               AGE
    standard (default)   kubernetes.io/gce-pd      1d
    gold                 kubernetes.io/gce-pd      1d
    

    預設 StorageClass 以 (default) 標記。

  2. 將預設 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 名稱。

  3. 將 StorageClass 標記為預設

    與上一步類似,你需要新增/設定註解 storageclass.kubernetes.io/is-default-class=true

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

    請注意,最多只能將一個 StorageClass 標記為預設。如果將兩個或多個 StorageClass 標記為預設,則無法建立未明確指定 storageClassNamePersistentVolumeClaim

  4. 驗證你選擇的 StorageClass 是否為預設

    kubectl get storageclass
    

    輸出類似於此

    NAME             PROVISIONER               AGE
    standard         kubernetes.io/gce-pd      1d
    gold (default)   kubernetes.io/gce-pd      1d
    

下一步

上次修改時間為 2023 年 12 月 6 日上午 9:05 PST:Clean up change-default-storage-class.md (d1d6eda640)