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

k8s–基础–22.1–storageclass–介绍


1、概念

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

1.1、简单示例

vi /root/test3/ storageclass-standard.yaml

内容


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

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

5、参数(parameters)

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

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值