前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >044.集群存储-StorageClass

044.集群存储-StorageClass

作者头像
木二
发布2020-04-08 17:57:14
8010
发布2020-04-08 17:57:14
举报
文章被收录于专栏:木二天空木二天空

一 StoragClass

1.1 StorageClass概述

StorageClass作为对存储资源的抽象定义,对用户设置的PVC申请屏蔽后端存储的细节,一方面减少了用户对于存储资源细节的关注,另一方面减轻了管理员手工管理PV的工作,由系统自动完成PV的创建和绑定,实现了动态的资源供应。

基于StorageClass的动态资源供应模式将逐步成为云平台的标准存储配置模式。StorageClass的定义主要包括名称、后端存储的提供者(provisioner)和后端存储的相关参数配置。

StorageClass一旦被创建出来,则将无法修改。如需更改,则只能删除原StorageClass的定义重建。

示例1:定义一个名为standard的StorageClass,提供者为aws-ebs,其参数设置了一个type,值为gp2。

[root@k8smaster01 study]# vi awsclass01.yaml

代码语言:javascript
复制
  1 kind: StorageClass
  2 apiVersion: storage.k8s.io/v1
  3 metadata:
  4   name: standard
  5 provisioner: kubernetes.io/aws-bs
  6 parameters:
  7   type: gp2
  8 

1.2 StorageClass配置参数

  • 提供者(Provisioner)

描述存储资源的提供者,也可以看作后端存储驱动。目前Kubernetes支持的Provisioner都以“kubernetes.io/”为开头,用户也可以使用自定义的后端存储提供者。

  • 参数(Parameters)

后端存储资源提供者的参数设置,不同的Provisioner包括不同的参数设置。某些参数可以不显示设定,Provisioner将使用其默认值。

1.3 常见Provisioner

  • AWSEBS存储卷
代码语言:javascript
复制
  1 kind: StorageClass
  2 apiVersion: storage.k8s.io/v1
  3 metadata:
  4   name: slow
  5 provisioner: kubernetes.io/aws-ebs
  6 parameters:
  7   type: io1
  8   zone: us-east-1d
  9   iopsPerGB: "10"
 10 

参数说明如下(详细说明请参考AWSEBS文档):

  • type:可选项为io1,gp2,sc1,st1,默认值为gp2。
  • zone:AWSzone的名称。
  • iopsPerGB:仅用于io1类型的Volume,意为每秒每GiB的I/O操作数量。
  • encrypted:是否加密。
  • kmsKeyId:加密时的Amazon Resource Name。

  • GCEPD存储卷
代码语言:javascript
复制
  1 kind: StorageClass
  2 apiVersion: storage.k8s.io/v1
  3 metadata:
  4   name: slow
  5 provisioner: kubernetes.io/gce-pd
  6 parameters:
  7   type: pd-standard
  8   zone: us-centrall-a
  9 

参数说明如下(详细说明请参考GCE文档):

  • type:可选项为pd-standard、pd-ssd,默认值为pd-standard。
  • zone:GCEzone名称。

  • GlusterFS存储卷
代码语言:javascript
复制
  1 apiVersion: storage.k8s.io/v1
  2 kind: StorageClass
  3 metadata:
  4   name: slow
  5 provisioner: kubernetes.io/glusterfes
  6 parameters:
  7   resturl: "http://127.0.0.1:8081"
  8   clusterid: "xxxxxxxxxxxx"
  9   restauthenabled: "true"
 10   restuser: "admin"
 11   secretNamespace: "default"
 12   secretName: "heketi-secret"
 13   gidMin: "40000"
 14   gidMax: "50000"
 15   volumetype: "replicate:3"
 16 

参数说明如下(详细说明请参考GlusterFS和Heketi的文档):

  • resturl:GlusterREST服务(Heketi)的URL地址,用于自动完成GlusterFSvolume的设置。
  • restauthenabled:是否对GlusterREST服务启用安全机制。
  • restuser:访问GlusterREST服务的用户名。
  • secretNamespace和secretName:保存访问GlusterREST服务密码的Secret资源对象名。
  • clusterid:GlusterFS的ClusterID。
  • gidMin和gidMax:StorageClass的GID范围,用于动态资源供应时为PV设置的GID。
  • volumetype:设置GlusterFS的内部Volume类型,例如replicate:3(Replicate类型,3份副本);disperse:4:2(Disperse类型,数据4份,冗余两份;“none”(Distribute类型)。

  • OpenStackCinder存储卷
代码语言:javascript
复制
  1 kind: StorageClass
  2 apiVersion: storage.k8s.io/v1
  3 metadata:
  4   name: gold
  5 provisioner: kubernetes.io/cinder
  6 parameters:
  7   type: fast
  8   availability: nova
  9 

参数说明如下。

  • type:Cinder的VolumeType,默认值为空。
  • availability:AvailabilityZone,默认值为空。

1.4 设置默认StorageClass

要在系统中设置一个默认的StorageClass,则首先需要启用名为DefaultStorageClass的admission controller,即在kube-apiserver的命令行参数--admission-control中增加:

--admission-control-...,DefaultStorageClass

[root@k8smaster01 study]# vi /etc/kubernetes/manifests/kube-apiserver.yaml

代码语言:javascript
复制
  1 ……
  2     - --enable-admission-plugins=NodeRestriction,DefaultStorageClass
  3 ……
  4 

[root@k8smaster01 study]# systemctl restart docker kubelet

然后,在StorageClass的定义中设置一个annotation:

[root@k8smaster01 study]# vi defaultclass01.yaml

代码语言:javascript
复制
  1 kind: StorageClass
  2 apiVersion: storage.k8s.io/v1
  3 metadata:
  4   name: gold
  5   annotations:
  6     storageclass.beta.kubernetes.io/is-default-class="true"
  7 provisioner: kubernetes.io/gce-pd
  8 parameters:
  9   type: pd-ssd
 10 

通过kubectl create命令创建成功后,查看StorageClass列表,可以看到名为gold的StorageClass被标记为default:

二 动态管理存储卷

2.1 glusterfs

见《附009.Kubernetes永久存储之GlusterFS独立部署》和《附010.Kubernetes永久存储之GlusterFS超融合部署》。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 StoragClass
    • 1.1 StorageClass概述
      • 1.2 StorageClass配置参数
        • 1.3 常见Provisioner
          • 1.4 设置默认StorageClass
          • 二 动态管理存储卷
            • 2.1 glusterfs
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档