存储类管理

Kubernetes集群管理员通过提供不同的存储类,可以满足用户不同的服务质量级别、备份策略和任意策略要求的存储需求。动态存储卷供应使用StorageClass进行实现,其允许存储卷按需被创建。

如果没有动态存储供应,Kubernetes集群的管理员将不得不通过手工的方式类创建新的存储卷。

通过动态存储卷,Kubernetes将能够按照用户的需要,自动创建其需要的存储。

存储类管理 - 图1

供应者

创建存储类之前必须得有 “provisioner”,每个平台所使用的存储方案可能都会不一样。您可根据自己方式安装相应的Provisioner。

官方文档:https://kubernetes.io/docs/concepts/storage/storage-classes/

Volume Plugin Internal Provisioner Config Example
AWSElasticBlockStore AWS EBS
AzureFile Azure File
AzureDisk Azure Disk
CephFS - -
Cinder OpenStack Cinder
FC - -
Flexvolume - -
Flocker -
GCEPersistentDisk GCE PD
Glusterfs Glusterfs
iSCSI - -
Quobyte Quobyte
NFS - -
RBD Ceph RBD
VsphereVolume vSphere
PortworxVolume Portworx Volume
ScaleIO ScaleIO
StorageOS StorageOS
Local - Local

官方提供了以上方案,而这里我们方便演示使用最简单的NFS方案。

安装NFS

安装服务端

  1. $ sudo yum install nfs-utils

开机启动

  1. $ sudo systemctl enable rpcbind
  2. $ sudo systemctl enable nfs

启动NFS

  1. $ sudo systemctl start rpcbind
  2. $ sudo systemctl start nfs

配置共享目录

  1. $ sudo mkdir /opt/data
  2. $ sudo chmod 755 /opt/data

打开文件:

  1. $ sudo vi /etc/exports

添加以下配置:

  1. /opt/data/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

重启:

  1. $ sudo systemctl restart nfs

安装Provisioner

修改install/kubernetes/storage/provisioner.yaml的IP地址及路径后执行以下命令:

  1. $ kubectl apply -f install/kubernetes/storage/provisioner.yaml
  2. $ kubectl apply -f install/kubernetes/storage/rbac.yaml
  3. $ kubectl apply -f install/kubernetes/storage/serviceaccount.yaml

创建存储类

“配置与存储”->“存储类”菜单点开。

在列表页面点击“新建”按钮,在弹出来的对话框中输入以下信息:

存储类管理 - 图2

  • 名称: 规则 ^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$可以有”.”

  • Provisioner:供应者服务名

    这里我创建了一个名为“kpl-nfs-client-provisioner”的供应者。如果您可使用NFS的方式存储方案可以参考以上方案

  • ReclaimPolicy:回收策略 更改 PersistentVolume 的回收策略

    • Recycle
    • Delete
    • Retain
  • VolumeBindingMode: Volume Binding Mode

    • Immediate
    • WaitForFirstConsumer

存储类详情

创始完成存储类之后点击创建的存储类可查看详情,若有PVC及pv关联会在在这里显示:

image-20190823162311096

存储类管理 - 图4