更改默认StorageClass
为什么要更改默认StorageClass
根据安装方式的不同,你的Kubernetes集群可以使用标记为默认值的现有StorageClass进行部署。然后,这个默认的StorageClass用于动态地为不需要任何特定存储类的PersistentVolumeClaim提供存储。有关详细信息,请参阅PersistentVolumeClaim文档--1)。
预先安装的默认StorageClass可能不适合你的预期工作负载;例如,它可能提供过于昂贵的存储。如果是这种情况,你可以更改默认的StorageClass,或者完全禁用它,以避免动态提供存储。
简单地删除默认的StorageClass可能无法工作,因为它可能由集群中运行的插件管理器自动重新创建。有关插件管理器和如何禁用个别插件的详细信息,请参阅你的安装文档。
更改默认StorageClass
获取集群中的StorageClass列表:
将默认的StorageClass标记为非默认:默认的StorageClass 有一个注解storageclass.kubernetes.io/is-default-class ,其值设置为true。任何其他值或注解不存在都被解释为false。要将StorageClass标记为非默认的,需要将其值更改为false:
标记StorageClass为默认的:与前面的步骤类似,你需要添加/设置注解:storageclass.kubernetes.io/is-default-class=true。
kubectl get storageclass
输出类似如下:
默认StorageClass 被标记为(default)。
kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
其中<your-class-name> 是你选择StorageClass名称。
kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
请注意,最多一个StorageClass可以标记为默认的。如果将其中两个或多个标记为默认的,则无法创建没有显式指定storageClassName的PersistentVolumeClaim。
验证你选择的StorageClass是否为默认的:
输出类似如下:
NAME PROVISIONER AGE standard kubernetes.io/gce-pd 1d gold (default) kubernetes.io/gce-pd 1d