设置默认存储类别

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

概览

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

在您创建集群时,GKE On-Prem 会创建一个名为 standardStorageClass 对象。这是集群的默认 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 集群的说明。

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]
...

将清单保存为文件,并创建新 StorageClass 对象:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]
 

其中,[MANIFEST_FILE] 是新的 StorageClass 清单文件的路径。

后续步骤