一个用户集群具有一个或多个 StorageClass 对象,并且其中之一被指定为默认 StorageClass。本页面介绍了如何为用户集群设置默认 StorageClass。
如需了解详情,请参阅存储。
查找默认 StorageClass
列出所有 StorageClass:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclasses
在输出中,您可以看到默认 StorageClass。例如,在以下输出中,您可以看到名为 standard-rwo
的 StorageClass 是默认 StorageClass:
standard kubernetes.io/vsphere-volume standard-rwo (default) csi.vsphere.vmware.com
请求存储空间时,您可以指定 StorageClass。如果您未指定 StorageClass,则使用默认的 StorageClass。例如,假设您创建一个未指定 StorageClass 的 PersistentVolumeClaim。卷控制器将根据默认 StorageClass 完成声明。
更改默认 StorageClass
作为集群管理员,您可能需要更改默认存储类别。然后,系统会根据您选择的 StorageClass 来满足所有未指定 StorageClass 的存储空间请求。本部分介绍更改默认设置的步骤。
部署新的存储系统
部署新的存储系统以及任何软件组件,以便将新的存储机制与 Kubernetes 集群集成。例如,您可能需要在集群中安装 CSI 驱动程序。
此步骤取决于您所使用的存储供应商。对于 CSI 驱动程序,供应商应提供有关将其 CSI 驱动程序部署到 Kubernetes 集群的说明。CSI 驱动程序的文档还应包含您在 StorageClass 中提供的驱动程序专用参数,包括预配工具名称。
为新设备创建 StorageClass 时,您应该根据 StorageClass 的属性(“快速”或“高度冗余”)为其命名,而不是根据其后面的具体驱动程序或设备的名称。这样,您就可以更轻松地跨集群和环境设置一致的存储政策。
从默认 StorageClass 中移除默认注解
在文本编辑器中打开默认 StorageClass:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit storageclass \ DEFAULT_STORAGE_CLASS
在文本编辑器中,移除 storageclass.kubernetes.io/is-default-class: "true"
注解。关闭文本编辑器。
如需验证注解是否已被移除,请输入以下命令:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get storageclass \ DEFAULT_STORAGE_CLASS --output yaml
创建新的 StorageClass
为新的 StorageClass 创建清单。添加 storageclass.kubernetes.io/is-default-class: "true"
注解。例如:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... name: my-storage-class ... parameters: ... provisioner: [MY_PROVISIONER] ...
将清单保存为 YAML 文件,并创建新的 StorageClass:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]
其中,[MANIFEST_FILE] 是新的 StorageClass 清单文件的路径。