回顾
上一篇讲到使用持久卷和持久卷声明可以轻松获得持久化存储资源,无须开发人员处理下面实际使用的存续技术,但这仍然需要一个集群管理员来支持实际的存续
这一篇讲到可以通过动态化配置持久卷来自动执行此任务
持久卷的动态卷配置
集群管理员可以创建一个持久卷配置,并定义一个或多个StorageClass对象从而让用户选择他们想要的持久卷类型而不仅仅只是创建持久卷。
注意:与持久卷类似,StorageClass资源并非命名空间
与管理员预先提供一组持久卷不同的是,它们需要定义一个或两个(或多个)StorageClass,并允许系统在每次持久卷声明请求时创建一个新的持久卷,最重要的是,不可能耗尽持久卷(可以用完存储)
1)通过StorageClass资源定义可用存储类型
在用户创建持久卷声明之前,管理员需要创建一个或多个StorageClass资源,然后才能创建新的持久卷,yaml文件
StorageClass资源指定当持久卷声明请求次StorageClass时应使用哪个置配程序来提供持久卷。StorageClass定义中定义的参数将传递给置配程序,并具体到每个供应器插件。
2)请求持久卷声明中的存储类
创建StorageClass资源后,用户可以在其持久卷声明中按名称引用存储类
还会指定要使用的存储类别。在创建声明时,持久卷由fast StorageClass资源中引用provisioner创建。即使现有手动设置的持久卷与持久卷声明匹配,也可以使用provisioner。
注意:如果在pvc中引用一个不存在的存储类,则pv配置将失败(在pcx上使用kuberctl describe时将会看到provisioningFailed事件)
StorageClass的好处在于,声明是通过名称引用他们的。因此,只要StorageClass名称在所有这些名称中相同,pvc定义便可跨不同集群移植。
3)不指定存储类的动态配置
列出存储类:kubectl get sc
注意:sc作为storageclass缩写
创建一个没有指定存储类别的持久卷声明,yaml文件中没有指定storageclassname
强制将持久卷声明绑定到预置的其中一个持久卷
总而言之,将持久化存储附加到一个容器的最佳方式是仅创建pvc(如果需要可以使用明确指定的storageclassname)和容器(其通过名称引用pvc),其他所有内容都由持久卷置配程序处理