设置默认 StorageClass

本页面介绍如何为 GKE On-Prem 集群设置默认 StorageClass。另请参阅存储

概览

GKE On-Prem 可以通过以下任何机制与块存储或文件存储进行集成:

当您创建集群时,GKE On-Prem 会创建一个名为 standard 的 Kubernetes StorageClass。这是集群的默认 StorageClass。

如需查看 standard StorageClass 的相关详情,请输入以下命令:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml

其中,[CLUSTER_KUBECONFIG] 是集群的 kubeconfig 文件的路径。

在输出中,您可以看到 StorageClass 的名称为 standard。您还可以看到 storageclass.kubernetes.io/is-default-class: "true" 注释。此注释会将名为 standard 的 StorageClass 识别为默认 StorageClass。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: standard
  ...
parameters:
  datastore: HOST2-DATASTORE2
  diskformat: thin
  fstype: ext4
provisioner: kubernetes.io/vsphere-volume
reclaimPolicy: Delete
volumeBindingMode: Immediate

您的集群可以有多个 StorageClass 对象,但只有一个对象可以包含 storageclass.kubernetes.io/is-default-class: "true" 注释,因此是默认的 StorageClass。

在前面的输出中,您还可以看到预配工具是 kubernetes.io/vsphere-volume。这是在客户端请求类别为 standard 的部分存储时执行操作的预配工具。

默认 StorageClass

请求存储空间时,您可以指定 StorageClass。如果您未指定 StorageClass,则使用默认的 StorageClass。例如,假设您创建一个未指定 StorageClass 的 PersistentVolumeClaim。卷控制器将根据默认 StorageClass 完成声明。

更改默认 StorageClass

作为集群管理员,您可能需要更改默认存储类别。然后,系统会根据您选择的 StorageClass 来满足所有未指定 StorageClass 的存储空间请求。本部分介绍更改默认设置的步骤。

部署新的存储系统

部署新的存储系统以及任何软件组件,以便将新的存储机制与 Kubernetes 集群集成。例如,您可能需要在集群中安装 CSI 驱动程序

此步骤取决于您所使用的存储供应商。对于 CSI 驱动程序,供应商应提供有关将其 CSI 驱动程序部署到 Kubernetes 集群的说明。CSI 驱动程序的文档还应包含您在 StorageClass 中提供的驱动程序专用参数,包括预配工具名称。

为新设备创建 StorageClass 时,您应该根据 StorageClass 的属性(“快速”或“高度冗余”)为其命名,而不是根据其后面的具体驱动程序或设备的名称。这样,您就可以更轻松地跨集群和环境设置一致的存储政策。

standard StorageClass 中移除默认注释

如需在文本编辑器中打开 standard StorageClass 清单,请输入以下命令:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard

在文本编辑器中,移除 storageclass.kubernetes.io/is-default-class: "true" 注释。关闭文本编辑器。

如需验证注释是否已被移除,请输入以下命令:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --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 清单文件的路径。

后续步骤