动态配置和存储类

Dynamic Provisioning 的目标是完全自动化存储资源的生命周期管理,让用户无需过多的关注存储的管理,可以按需求自动动态创建和调整存储资源。StorageClass 本质上是底层存储介质的抽象:不同的存储介质拥有统一的表示和行为。

什么是 Storage Classes

StorageClass 是 Dynamic Provisioning(动态配置)的基础,允许集群管理员位底层存储平台做定义抽象。用户只需在 PersistentVolumeClaim(PVC)通过名字引用 StorageClass 即可。

示例: PVC 使用 storageClassName

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
  namespace: test
spec:
  storageClassName: standard
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

定义存储类

每一个存储类都包含 provisioner、parameters 和 reclaimPolicy 这三个参数域,当一个属于某个类的 PersistentVolume 需要被动态提供时,将会使用上述的参数域。

存储类对象的名称非常重要,用户通过名称类请求特定的存储类。管理员创建存储类对象时,会设置类的名称和其它的参数,存储类的对象一旦被创建,将不能被更新。管理员能够为 PVC 指定一个默认的存储类。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
# 指定存储类的供应者
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://10.97.20.153:8080"
  clusterid: "630372ccdc720a92c681fb928f27b53f"
  restauthenabled: "true"
  restuser: "admin"
  secretNamespace: "default"
  secretName: "heketi-secret"
  gidMin: "40000"
  gidMax: "50000"
  volumetype: "replicate:3"
# 指定回收策略
reclaimPolicy: Retain
mountOptions:
  - debug

供应者

存储类有一个供应者的参数域,此参数域决定 PV 使用什么存储卷插件。参数必需进行设置:

存储卷 内置供应者 配置例子
AWSElasticBlockStore AWS
AzureFile Azure File
AzureDisk Azure Disk
CephFS
Cinder OpenStack Cinder
FC
FlexVolume
Flocker
GCEPersistentDisk GCE
Glusterfs Glusterfs
iSCSI
PhotonPersistentDisk
Quobyte Quobyte
NFS
RBD Ceph RBD
VsphereVolume vSphere
PortworxVolume Portworx Volume
ScaleIO ScaleIO
StorageOS StorageOS
Local Local

Kubernetes 的存储类并不局限于表中的“interneal”供应者,“interneal”供应者的名称带有“kubernetes.io”前缀;也可以允许和指定外部的供应者,外部供应者通过独立的程序进行实现。外部供应者的作者对代码在何处生存、如何供应、如何运行、使用什么卷插件(包括 Flex)等有充分的判断权, kubernetes-incubator/external-storage 仓库中存在编写外部提供者的类库。例如,NFS 不是内部的供应者,但也是可以使用。在 kubernetes-incubator/external-storage 仓库中以列表的形式展示了一些外部的供应者,一些第三方供应商也提供了他们自己的外部供应者。

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress