參考:https://kubernetes.io/zh/docs/tasks/administer-cluster/change-default-storage-class/
為什么要改變默認存儲類?
取決於安裝模式,你的 Kubernetes 集群可能和一個被標記為默認的已有 StorageClass 一起部署。 這個默認的 StorageClass 以后將被用於動態的為沒有特定存儲類需求的 PersistentVolumeClaims 配置存儲。更多細節請查看 PersistentVolumeClaim 文檔。
預先安裝的默認 StorageClass 可能不能很好的適應你期望的工作負載;例如,它配置的存儲可能太過昂貴。 如果是這樣的話,你可以改變默認 StorageClass,或者完全禁用它以防止動態配置存儲。
刪除默認 StorageClass 可能行不通,因為它可能會被你集群中的擴展管理器自動重建。 請查閱你的安裝文檔中關於擴展管理器的細節,以及如何禁用單個擴展。
改變默認 StorageClass
1.列出你的集群中的 StorageClasses:
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 <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
請注意,最多只能有一個 StorageClass 能夠被標記為默認。 如果它們中有兩個或多個被標記為默認,Kubernetes 將忽略這個注解, 也就是它將表現為沒有默認 StorageClass。
4.驗證你選用的 StorageClass 為默認的:
kubectl get storageclass
輸出類似這樣:
NAME PROVISIONER AGE
standard kubernetes.io/gce-pd 1d
gold (default) kubernetes.io/gce-pd 1d