zoukankan      html  css  js  c++  java
  • 044.Kubernetes集群存储-StorageClass

    一 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
      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存储卷
      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存储卷
      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存储卷
      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存储卷
      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
      1 ……
      2     - --enable-admission-plugins=NodeRestriction,DefaultStorageClass
      3 ……
      4 
    [root@k8smaster01 study]# systemctl restart docker kubelet
    然后,在StorageClass的定义中设置一个annotation:
    [root@k8smaster01 study]# vi defaultclass01.yaml
      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超融合部署》。
  • 相关阅读:
    [转] jQuery 操作 JSON 数据
    [转] 8张图学习javascript
    HTML文档类型声明的坑...
    Android 应用内HttpClient 与 WebView 共享 Cookie
    李嘉诚无锡演讲
    keytool 生成 Android SSL 使用的 BKS
    LeetCode-344-反转字符串
    LeetCode-342-4的幂
    LeetCode-338-比特位计数
    LeetCode-326-3的幂
  • 原文地址:https://www.cnblogs.com/itzgr/p/12625522.html
Copyright © 2011-2022 走看看