StorageClass是 Kubernetes 中的一个资源对象,用于定义持久化存储的策略。在多地域集群场景下,可以通过 Topology 方式创建 StorageClass 来满足不同的存储需求。
方式一:使用Topology(延迟绑定)方式创建StorageClass
Topology 是一种 Kubernetes 中的资源对象,用于描述集群中不同区域(例如:地域、可用区等)的拓扑结构。通过使用 Topology,可以实现延迟绑定 StorageClass,从而根据实际需求选择合适的存储策略。
创建 StorageClass 的一般步骤如下:
- 定义 StorageClass 资源对象 YAML 文件,例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: my-storage-class
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
- 在 Topology 资源对象中定义延迟绑定的 StorageClass,例如:
apiVersion: topology.k8s.io/v1
kind: Topology
metadata:
name: my-topology
spec:
nodeTopology:
my-node-group:
labels:
topology.kubernetes.io/zone: us-central1-a
storageClasses:
- name: my-storage-class
- 将 Topology 资源对象应用到集群中,例如:
kubectl apply -f my-topology.yaml
在以上示例中,定义了一个名为 my-storage-class 的 StorageClass,它使用 kubernetes.io/gce-pd 作为 provisioner,并指定了参数 type: pd-ssd。同时,定义了一个名为 my-topology 的 Topology 资源对象,其中包含一个名为 my-node-group 的节点组,该组位于 us-central1-a 区域。最后,将 my-topology 资源对象应用到集群中,以便将 my-storage-class 与 my-node-group 关联起来。
在实际使用中,可以根据不同的需求定义多个 StorageClass 和 Topology 资源对象,以实现延迟绑定和动态选择存储策略。