更改默认的 StorageClass
本页面展示如何更改用于为没有特殊要求的 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 具有设置为
true
的注释storageclass.kubernetes.io/is-default-class
。 任何其他值或缺少注释都将解释为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 标记为默认。 如果其中两个或多个被标记为默认,则无法创建未明确指定
storageClassName
的PersistentVolumeClaim
。验证你选择的 StorageClass 是否为默认
kubectl get storageclass
输出类似于这样
NAME PROVISIONER AGE standard kubernetes.io/gce-pd 1d gold (default) kubernetes.io/gce-pd 1d
下一步
- 了解有关 PersistentVolumes 的更多信息。