19.StorageClass

StorageClass存储类用于描述集群中可以提供的存储的类型。不同的存储类可能对应着不同的:

  • 服务等级
  • 备份策略
  • 集群管理员自定义的策略

Kubernetes自身对存储类所代表的含义并无感知,由集群管理员自行约定。

这儿展示一个我自己定义的StorageClass:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-client-provisioner
  namespace: nfs
provisioner: fuseim.pri/ifs
parameters:
  archiveOnDelete: "false"

存储类的种类

Kubernetes提供19种存储类Provisioner,但是绝大多数与具体的云环境相关,如AWSElasticBlockStore/AzureFile/AzureDisk/GCEPersistentDisk等(这部分知识可以拓展视野)。

回收策略

由StorageClass动态创建的PersistentVolume将使用StorageClass中定义的回收策略。可选项有:

  • 回收后删除Delete
  • 回收后保留Retain

同一StorageClass中,手动创建的PersistentVolume,将使用创建时手动指定的回收策略。

存储卷绑定模式

StorageClass根据存储卷绑定模式的选项,确定何时执行存储卷和存储卷声明的绑定,何时执行动态存储卷提供(动态创建存储卷)(这个翻译的好奇怪啊)。可选项有:

  • 即刻绑定Immediate

    存储卷声明创建后,立刻动态创建存储卷并将其绑定到存储卷声明。

  • 首次使用时绑定 WaitForFirstConsumer

    直到存储卷声明第一次被容器组使用时,才创建存储卷,并将其绑定到存储卷声明。