• k8s--基础--22.1--storageclass--介绍


    k8s–基础–22.1–storageclass–介绍


    1、概念

    1. storageclass是一个存储类
    2. 通过创建storageclass可以动态生成一个存储卷供k8s用户使用。

    1.1、简单示例

    vi /root/test3/ storageclass-standard.yaml
    
    
    • 1
    • 2

    内容

    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
        name: storageclass-standard
    provisioner: kubernetes.io/aws-ebs
    parameters:
        type: gp2
    reclaimPolicy: Retain
    mountOptions:
        - debug
    volumeBindingMode: Immediate
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2、资源定义

    1. 每个StorageClass都包含以下字段
      1. provisioner
      2. parameters
      3. reclaimPolicy
    2. 当需要动态配置属于该类的PersistentVolume时使用上面的字段。
    3. StorageClass对象的名称很重要,是用户可以请求特定类的方式。
      1. 管理员在首次创建StorageClass对象时设置类的名称和其他参数,并且在创建对象后无法更新这些对象。
      2. 管理员可以为不请求任何特定类绑定的PVC指定默认的StorageClass

    2.1、Provisioner(供应者)

    1. 用来确定我们使用什么样的存储来创建pv
    2. provisioner既可以是内部供应程序,也可以由外部供应商提供

    2.1.1、外部供应商提供的provisioner

    1. 资料地址:https://github.com/kubernetes-incubator/external-storage/
    2. 举例:外部供应商提供的NFS provisioner
      1. https://github.com/kubernetes-incubator/external-storage/tree/master/nfs/deploy/kubernetes

    2.1.2、常见的provisioner供应者如下

    在这里插入图片描述

    2.2、Reclaim Policy(回收策略)

    1. 由存储类动态创建持久化存储卷(pv)时可以指定reclaimPolicy字段
    2. reclaimPolicy字段值
      1. Delete(默认)
      2. Retain

    2.3、Mount Options(挂载选项)

    如果Volume Plugin不支持这个挂载选项,但是指定了,就会使provisioner创建失败

    2.4、Volume Binding Mode(卷绑定模式)

    1. 这个字段用来说明什么时候进行卷绑定和动态配置
    2. 值:
      1. 立即模式
      2. WaitForFirstConsumer模式
    3. 默认:立即模式

    2.4.1、Immediate(立即)模式

    1. 一旦创建了PersistentVolumeClaim,就会发生卷绑定和动态配置。
    2. 对于受拓扑约束且无法从群集中的所有节点全局访问的存储后端,将在不知道Pod的调度要求的情况下绑定或配置PersistentVolumes。这可能导致不可调度的Pod。集群管理员可以通过指定WaitForFirstConsumer模式来解决此问题

    2.4.2、WaitForFirstConsumer模式

    1. 该模式将延迟绑定和配置PersistentVolume,直到创建使用PersistentVolumeClaim的Pod。
    2. 将根据Pod的调度约束指定的拓扑选择或配置PersistentVolumes。这些包括但不限于资源需求,节点选择器,pod亲和力和反亲和力,以及污点和容忍度。

    3、允许卷扩展

    1. PersistentVolume 可以配置为可扩展。
    2. 将此功能设置为 true 时,允许用户通过编辑相应的 PVC对象 来调整卷大小。

    3.1、 当基础存储类的allowVolumeExpansion字段设置为true时,以下类型的卷支持卷扩展。

    在这里插入图片描述

    注意

    此功能仅可用于扩容卷,不能用于缩小卷。

    4、允许卷拓扑结构

    当集群操作人员使用了 WaitForFirstConsumer 的卷绑定模式,在大部分情况下就没有必要将配置限制为特定的拓扑结构。 然而,如果还有需要的话,可以使用 allowedTopologies。

    4.1、案例:如何将分配卷的拓扑限制在特定的区域

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: standard
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-standard
    volumeBindingMode: WaitForFirstConsumer
    allowedTopologies:
    - matchLabelExpressions:
      - key: failure-domain.beta.kubernetes.io/zone
        values:
        - us-central1-a
        - us-central1-b
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    5、参数(parameters)

    1. 描述属于该存储类的卷的参数。
    2. 参数取决于provisioner
    3. 当参数被省略时,会使用默认值。
    4. 一个 StorageClass 最多可以定义 512 个参数。这些参数对象的总长度不能超过 256 KiB, 包括参数的键和值。

    在这里插入图片描述

  • 相关阅读:
    python面试常见问题汇总(1-30)
    DEJA_VU3D - Cesium功能集 之 068-空间坐标系之箭头
    Node.js学习一 —— 模块化
    紫光同创FPGA实现HSSTLP高速接口视频传输,8b/10b编解码,OV5640采集,提供PDS工程源码和技术支持
    基于SSM的企业人事管理系统
    决胜B端产品经理学习笔记04管理篇
    【操作系统】文件系统之文件共享与文件保护
    王杰C++day6
    前端工作日常
    babylon.js gltf scene hierarchy
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126241705