StorageClass

常见的容器存储数据卷使用方式如下:
  • 静态存储卷

    静态存储卷一般是指由管理员创建的PV。所有的数据卷(Volume)都支持创建静态存储卷。

    静态存储卷先由集群管理员分析集群中存储需求,并预先分配一些存储介质(例如云盘、NAS盘等),同时创建对应的PV对象。创建好的PV对象等待PVC来消费。如果负载中定义了PVC需求,Kubernetes会通过相关规则实现PVC和匹配的PV进行绑定,这样就实现了应用对存储服务的访问能力。

  • 动态存储卷

    动态存储卷一般是指通过存储插件自动创建的PV。

    动态卷一般由集群管理员配置好后端的存储池,并创建相应的模板(StorageClass),当有PVC需要消费PV的时候,根据PVC定义的需求,并参考StorageClass的存储细节,由存储插件动态创建一个PV。StorageClass的定义如下:
    • StorageClass

      当您声明一个PVC时,如果在PVC中添加了StorageClassName字段,意味着当PVC在集群中找不到匹配的PV时,会根据StorageClassName的定义触发相应的Provisioner插件创建合适的PV供绑定,即创建动态数据卷。

      动态数据卷由Provisioner插件创建,并通过StorageClassName与PVC进行关联。

    •  

       

    •  

      StorageClass可译为存储类,表示为一个创建PV存储卷的模板。在PVC触发自动创建PV的过程中,即使用StorageClass对象中的内容进行创建。其内容如下:
       
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: alicloud-disk-topology
      parameters:
        type: cloud_ssd
      provisioner: diskplugin.csi.alibabacloud.com
      reclaimPolicy: Delete
      allowVolumeExpansion: true
      volumeBindingMode: WaitForFirstConsumer
       
      参数描述
      reclaimPolicy 用来指定创建PV的persistentVolumeReclaimPolicy字段值,支持DeleteRetain
      • Delete表示动态创建的PV,在销毁的时候也会自动销毁。
      • Retain表示动态创建的PV,不会自动销毁,而是由管理员处理。
      allowVolumeExpansion 定义由此存储类创建的PV是否运行动态扩容,默认为false。是否能动态扩容是由底层存储插件来实现的,这里只是一个开关。
      volumeBindingMode 表示动态创建PV的时间,支持ImmediateWaitForFirstConsumer,分别表示立即创建和延迟创建。
    • 延迟绑定
      针对某类存储(例如阿里云云盘)在挂载属性上有所限制,只能挂载相同可用区的数据卷和节点,不在同一个可用区不可以挂载。这种类型的存储卷通常遇到如下问题:
      • 创建了A可用区的数据卷,但是A可用区的节点资源已经耗光,导致Pod启动无法完成挂载。
      • 集群管理员在规划PVC、PV的时候不能确定在哪些可用区创建多个PV来备用。

      StorageClass中的volumeBindingMode字段正是用来解决此问题,如果将volumeBindingMode配置为WaitForFirstConsumer值,则表示存储插件在收到PVC Pending的时候不会立即进行数据卷创建,而是等待这个PVC被Pod消费的时候才执行创建流程。

       
      说明

      延迟绑定实现原理如下:

      Provisioner在收到PVC Pending状态的时候不会立即进行数据卷创建,而是等待这个PVC被Pod消费。如果有Pod消费此PVC,调度器发现PVC是延迟绑定模式,则继续完成调度功能,且调度器会将调度结果通过patch命令到PVC的metadata中。当Provisioner发现PVC中写入了调度信息时,会根据调度信息获取创建目标数据卷的位置信息(区域和节点信息),并触发PV的创建流程。

      在多可用区集群环境中,更推荐使用延迟绑定的动态卷方案,目前阿里云ACK集群已经支持上述配置方案。

    动态存储卷的优势
    • 动态存储卷让Kubernetes实现了PV的自动化生命周期管理,PV的创建、删除都通过Provisioner完成。
    • 自动化创建PV对象,减少了配置复杂度和系统管理员的工作量。
    • 动态卷可以实现PVC对存储的需求容量和Provisioner出来的PV容量一致,实现存储容量规划最优。

     

     

     

     

     

    问题一:Kubernetes PVC一直处于Pending状态
     解决方法:- --feature-gates=RemoveSelfLink=false
     https://www.jianshu.com/p/bdc54464550f
    https://blog.csdn.net/Promise_410/article/details/117112550

     

     

     

     

     

posted @ 2022-07-11 10:50  冥想心灵  阅读(457)  评论(0编辑  收藏  举报