更改默认 StorageClass
本页面介绍如何更改默认存储类,该存储类用于为没有特殊要求的 PersistentVolumeClaim 预配卷。
准备工作
您需要有一个 Kubernetes 集群,并且 kubectl 命令行工具必须配置为与您的集群通信。建议在至少有两个节点且这些节点不充当控制平面主机的集群上运行本教程。如果您还没有集群,则可以使用 minikube 创建一个集群,或者可以使用以下 Kubernetes 游乐场之一
要检查版本,请输入kubectl version
。为什么要更改默认存储类?
根据安装方法,您的 Kubernetes 集群可能会部署一个标记为默认的现有 StorageClass。然后,此默认 StorageClass 用于为不需要任何特定存储类的 PersistentVolumeClaim 动态预配存储。有关详细信息,请参阅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 是否为默认
kubectl get storageclass
输出类似于以下内容
NAME PROVISIONER AGE standard kubernetes.io/gce-pd 1d gold (default) kubernetes.io/gce-pd 1d
后续步骤
- 详细了解PersistentVolume。