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