存储基础知识 存储卷挂载 容器存储数据卷挂载方式包括:静态存储卷和动态存储卷。 静态存储卷 静态存储卷是由集群管理员预先创建的 PV(PersistentVolume)。管理员根据集群存储需求,提前分配存储介质(如云盘、文件系统等)并创建对应的 PV 对象。这些 PV 处于可用状态,等待 PVC(PersistentVolumeClaim)绑定使用。 应用程序通过定义 PVC 申请存储资源时,Kubernetes 会根据 PVC 的需求和匹配规则自动将其与合适的 PV 绑定(或在创建 PVC 时直接指定 PV 名称)。应用程序即可通过 PVC 访问预分配的静态存储卷,获得持久化存储能力。 动态存储卷 Kubernetes 通过存储类(StorageClass)和存储插件提供动态存储卷功能。管理员基于可用存储资源和策略创建存储类模板,开发者在部署应用时通过 PVC 申请存储资源。存储插件根据存储类定义与后端存储池交互,动态创建符合需求的 PV 并绑定到 PVC。 动态存储卷的优势: PV的自动化生命周期管理:通过 Provisioner 自动完成 PV 的创建和删除。 简化运维:通过自动创建PV,减少手动配置复杂度和管理员工作量。 容量优化:动态创建的 PV 容量与 PVC 需求精确匹配,实现存储容量规划最优。 子路径挂载支持 :通过 volumeMounts.subPath 属性可挂载卷内的特定子路径,而非根目录。 存储类(StorageClass )说明如下: 字段 说明 存储驱动(provisioner) 用来决定使用哪个卷插件制备 PV 回收策略(reclaimPolicy) 由 StorageClass 动态创建的 PV会在类的 reclaimPolicy 字段中指定回收策略,可以是 Delete 或者 Retain。如果 StorageClass 对象被创建时没有指定 reclaimPolicy,默认为 Delete。 通过 StorageClass 手动创建并管理的 PV会使用它们被创建时指定的回收策略。 绑定模式(volumeBindingMode) 该控制了卷绑定和动态供应应该发生在什么阶段。 Immediate 模式:表示一旦创建了 PVC,也就完成了卷绑定和动态供应。 对于由于拓扑限制而非集群所有节点可达的存储后端,PV会在不知道 Pod 调度要求的情况下绑定或者制备。 WaitForFirstConsumer模式: 该模式将延迟 PersistentVolume 的绑定和制备,直到使用该 PersistentVolumeClaim 的 Pod 被创建。 PV会根据 Pod 调度约束指定的拓扑来选择或供应。 说明 volumeBindingMode配置为WaitForFirstConsumer,可以解决以下可能情况: 1、创建了A可用区的数据卷,但是A可用区的节点资源已经耗光,导致Pod启动无法完成挂载。 2、集群管理员在规划PVC、PV的时候不能确定在哪些可用区创建多个PV来备用。 卷扩展 当StorageClass 的 allowVolumeExpansion 字段设置为 true ,表示动态创建的PV可以配置为可扩展,即允许用户通过编辑相应的 PVC 对象来调整卷大小。 挂载选项 由 StorageClass 动态创建的 PV 将使用类中 mountOptions 字段指定的挂载选项。 Kubernetes 不对挂载选项执行合法性检查。如果挂载选项是非法的,挂载就会失败。 说明 并非所有持久卷类型都支持挂载选项。