设置默认 StorageClass

本页面介绍了如何为 Anthos GKE On-Prem (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 清单文件的路径。

后续步骤