28.11.2. 情况 1:使用两种 StorageClass 类型的基本动态置备
StorageClasses 可用于区分和划分存储级别和使用。在本例中,cluster-admin
或 storage-admin
在 GCE 中设置了两个不同的存储类别。
-
速度较慢
:为后续数据操作低廉、高效和优化(读和写越) -
fast
:优化的随机 IOPS 和持续吞吐量(读取和编写的速度)
通过创建这些 StorageClasses,cluster-admin
或 storage-admin
允许用户创建请求特定级别的或 StorageClass 服务的声明。
例 28.16. 在对象定义下 StorageClass
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: slow 1 provisioner: kubernetes.io/gce-pd 2 parameters: type: pd-standard 3 zone: us-east1-d 4
例 28.17. StorageClass 快速对象定义
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fast provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd zone: us-east1-d
以 cluster-admin
或 storage-admin
身份,将这两个定义保存为 YAML 文件。例如: slow-gce.yaml
和 fast-gce.yaml
。然后,创建 StorageClasses。
# oc create -f slow-gce.yaml storageclass "slow" created # oc create -f fast-gce.yaml storageclass "fast" created # oc get storageclass NAME TYPE fast kubernetes.io/gce-pd slow kubernetes.io/gce-pd
cluster-admin
或 storage-admin
用户负责将正确的 StorageClass 名称中继到正确的用户、组和项目。
作为常规用户,创建一个新项目:
# oc new-project rh-eng
创建声明 YAML 定义,将其保存到文件中(pvc-fast.yaml
):
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-engineering spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: fast
使用 oc create
命令添加声明:
# oc create -f pvc-fast.yaml persistentvolumeclaim "pvc-engineering" created
检查您的声明是否已绑定:
# oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE pvc-engineering Bound pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 10Gi RWX 2m
由于此声明在 rh-eng 项目中创建并绑定,它可以由同一项目中的任何用户共享。
以 cluster-admin
或 storage-admin
用户身份,查看最新动态置备的持久性卷(PV)。
# oc get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 10Gi RWX Delete Bound rh-eng/pvc-engineering 5m
请注意,所有动态置备的卷 默认为 RECLAIMPOLICY 被删除。这意味着,当系统中存在声明时,卷才会持续。如果您删除声明,该卷也会被删除,且该卷上的所有数据都会丢失。
最后,检查 GCE 控制台。新磁盘已创建,并可供使用。
kubernetes-dynamic-pvc-e9b4fef7-8bf7-11e6-9962-42010af00004 SSD persistent disk 10 GB us-east1-d
Pod 现在可以引用持久性卷声明并开始使用卷。