存储类
Glusterfs
安装kadalu
curl -fsSL https://github.com/kadalu/kadalu/releases/latest/download/install.sh | sudo bash -x
kubectl-kadalu version
kubectl kadalu install --type=kubernetes
创建storage
-
本机模式
--device 使用本地设备
--path 使用本地路径
-
Replica1
在这种模式下,Gluster启动时没有高可用性,即没有复制模块。它将只使用一个存储,RWX和RWO PV将从其中分割出来。
kubectl kadalu storage-add storage-pool1 --type=Replica1 \
--device kube-nodename1:/dev/vdc -
Replica2
在这种模式下,Gluster将以高可用性启动,使用 "tie-breaker"(或gluster术语中的thin-arbiter)选项。它将使用2个存储选项,其中RWX和RWO PV将被分割出来
kubectl kadalu storage-add storage-pool1 --type=Replica2 \
--device kube-nodename1:/dev/vdc \
--device kube-nodename2:/dev/vdc -
Replica3
在这种模式下,Gluster将以高可用性启动,即复制模块。它需要提供3个存储选项,每个存储将是一个作为pod运行的gluster服务器进程pod。
kubectl kadalu storage-add storage-pool1 --type=Replica3 \
--device kube-nodename1:/dev/vdc \
--device kube-nodename2:/dev/vdc \
--device kube-nodename3:/dev/vdc -
Disperse
分散卷是基于擦除代码的。它将文件的编码数据,加上一些冗余,在卷中的多个砖块上剥离。你可以使用分散 卷,以最小的空间浪费获得可配置的可靠性水平。这种模式至少需要3个存储空间,并根据需要增加存储空间的数量。
kubectl kadalu storage-add storage-pool1 --type=Disperse \
--data 2 --redundancy 1 \
--device kube-nodename1:/dev/vdc \
--device kube-nodename2:/dev/vdc \
--device kube-nodename3:/dev/vdc
-
-
外部模式(使用外部glusterfs)
kubectl kadalu storage-add storage-pool-1 --external 172.16.7.14:/gv1
删除kadalu
curl -s https://raw.githubusercontent.com/kadalu/kadalu/devel/extras/scripts/cleanup | bash
链接:https://github.com/kadalu/kadalu
Openebs
与原生 Kubernetes 主机路径卷相比, OpenEBS 本地 PV 主机路径卷具有以下优势。
- OpenEBS Local PV Hostpath 允许您的应用程序通过 StorageClass、PVC 和 PV 访问 hostpath。这为您提供了更改 PV 提供程序的灵活性,而无需重新设计您的应用程序 YAML。
- 使用 Velero 备份和恢复的数据保护。
- 通过完全屏蔽应用程序 YAML 和 pod 的主机路径来防止主机路径安全漏洞。
安装
kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml
创建自定义路径StorageClass
openebs默认存储路径在主机/var/openebs/local
,手动创建SC
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-hostpath
annotations:
openebs.io/cas-type: local
cas.openebs.io/config: |
- name: StorageType
value: hostpath
- name: BasePath
value: /data/openebs-data
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer