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
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
zone: us-east1-d
例 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 现在可以引用持久性卷声明并开始使用卷。