kubernetes StorageClass动态PV

特性

动态卷供给是kubernetes独有的功能,这一功能允许按需创建存储建。在此之前,集群管理员需要事先在集群外由存储提供者或者云提供商创建存储卷,
成功之后再创建PersistentVolume对象,才能够在kubernetes中使用。动态卷供给能让集群管理员不必进行预先创建存储卷,而是随着用户需求进行创建
。在1.5版本提高了动态卷的弹性和可用性。

在此前1.4版本中加入了一个 新的 API 对象 StorageClass,可以定义多个 StorageClass 对象,并可以分别指定存储插件、设置参数,用于提供不同的
存储卷。这样的设计让集群管理员能够在同一个集群内,定义和提供不同类型的、不同参数的卷(相同或者不同的存储系统)。这样的设计还确保了最终
用户在无需了解太多的情况下,有能力选择不同的存储选项。

aws ebs使用示例

需要满足以下条件方可使用EBS作为存储提供者:

  • Pod运行的节点必须为AWS EC2实例
  • 这些示例需要和EBS在同一个区域和可用区域
  • EBS只支持一个EC2挂载一个卷
  • Node节点需要有EBS挂载/卸载权限。

1. 定义1个StorageClass对象(SSD盘)

vim fast-storage-class.yaml

    kind: StorageClass
    apiVersion: storage.k8s.io/v1beta1
    metadata:
      name: fast
    provisioner: kubernetes.io/aws-ebs
    parameters:
      type: io1
      zone: cn-north-1a
      iopsPerGB: "10"

这里我们创建了一个名为"fast"的StorageClass。用于提供类似SSD的持久存储。

  • type: EBS卷类型。io1, gp2, sc1, st1. See AWS docs for details. Default: gp2
  • zone: Aws区域,如果未指定,则选择与kubernetes集群节点相同的随机区。
  • iopsPerGB: 仅适用于io1类型的卷。IOPS/GB。
  • encrypted: EBS卷是否应该被加密。有效值为"true" or "false"
  • kmsKeyId: 可选.加密卷时要使用的秘钥的完整Amazon资源名称。如果没有提供秘钥,AWS将生成秘钥。

2.用户请求,定义1个pvc

用户在pvc中可以包含一个StorageClass申请动态提供存储。需要额外使用annotations注解来指定特定的ClassStorage:volume.beta.kubernetes.io/storage-class.其值必须符合之前配置StorageClass名称(比如fast)。

vim fast-pvc.yaml

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: myclaim
      annotations:
        volume.beta.kubernetes.io/storage-class: "fast"
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 8Gi
      selector:
        matchLabels:
          release: "stable"
        matchExpressions:
          - {key: environment, operator: In, values: [dev]}
  • accessModes:
    当pvc请求特定访问模式的存储时,声明使用与pv卷相同的约定。

  • Resources:
    类型Pod,可以请求特定数额的资源。

  • Selector:

      支持标签选择器进一步筛选卷的集合,只有与标签选择器匹配的卷才能绑定到pvc,选择器由如下2个字段组成:
    
      - metchLabels
              卷必须带有匹配的标签,才能被绑定
      - matchExpressions
              支持标签筛选扩展属性,通过指定键、值以及与键值相关的运算符所得结果的匹配列表。
    

通过我们pvc的描述,名为fast的StorageClass会提供一个等效于SSD的持久盘,当这个PVC被删除,这个卷也随之销毁。

缺省StorageClass(DefaultStorageClass)

所有的 PVC 都可以在不使用 StorageClass 注解的情况下,直接使用某个动态存储。把一个StorageClass 对象标记为 “default” 就可以了。StorageClass 用注解storageclass.beta.kubernetes.io/is-default-class: "true" 就可以成为缺省存储。

有了缺省的 StorageClass,用户创建 PVC 就不用 storage-class 的注解了,1.4 起新加入的DefaultStorageClass 准入控制器会自动把这个标注指向缺省存储类。需要在准入控制插件添加缺省存储插件:

            --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota

测试:

    动态卷:

    1. 创建pvc,挂载到单个Pod,迁移Pod,日志会提示卷已被挂载到运行pod之前的ec2上,但几分钟依然会迁移成功,并且挂载卷成功.
    2. 创建pvc,挂载到多个个Pod. 仅支持单个副本集。
    3. 正常使用下,删除Pod,挂载pvc到新的Pod. 功能正常
    4.正常使用下,删除pvc,pv 回收策略为Delete(EBS的回收策略只支持Delete),状态为Released,Pod挂载的卷功能依然不受影响。然后,删除PV,Pod挂载的卷功能依然不受影响,此时AWS ebs卷改为available.此时若要继续使用此卷,需要静态PV指定EBS 卷ID。
    5. 创建pvc之后。删除pv卷,此时pvc状态为Lost,同时aws ebs卷依然为In-use,未被卸载。
    6. 当删除pvc时,pv reclaim 策略默认为delete。所以这个卷也随之销毁(自动删除pv,自动删除EBS这个卷),这个得注意.

PV自动扩容,目前不支持。

删除说明

    ebs->pv->pvc->pod
  • 删除pod,ebs->pv->pvc依然存活
  • 删除pod,删除pvc,将直接自动删除pv及ebs存储卷
  • 删除pv或者删除pvc,pod未删除,ebs状态:in-use且不会被删除,功能正常。其次删除pod,ebs状态:available。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 1.1 Kubernetes是什么 首先,它是一个全新的基于容器技术的分布式架构领先方案; 其次,Kubernet...
    c84f3109853b阅读 80,564评论 1 117
  • Kubernetes PV & pvc 介绍 PersistentVolume(pv)和PersistentVol...
    YichenWong阅读 39,213评论 10 10
  • kubernetes 简介 一个迅速过一遍kubernetes 非常不错的资源:基于Kubernetes构建Doc...
    bradyjoestar阅读 15,277评论 2 7
  • 获取结尾两个字符子串: let sessionId = "this is a test" let index = ...
    通哥阅读 127评论 0 0
  • 已经想不起第几次这样惆怅了,就像你说的又矫情了那样。我又开始发呆了,又开始想说一些矫情的话。人越长大烦恼就越多,但...
    68693689e4ae阅读 366评论 0 0