kubernetes里面那些事————OpenEBS

OpenEBS存储

一,OpenEBS简介

OpenEBS是一组存储引擎,工作节点可用的任何存储转换为本地或分布式 Kubernetes 持久卷, 在高层次上,OpenEBS支持两大类卷——本地卷和复制卷

OpenEBS是Kubernetes本地超融合存储解决方案,它管理节点可用的本地存储,并为有状态工作负载提供本地或高可用的分布式持久卷。 作为一个完全的Kubernetes原生解决方案的另一个优势是,管理员和开发人员可以使用kubectl、Helm、 Prometheus、Grafana、Weave Scope等Kubernetes可用的所有优秀工具来交互和管理OpenEBS,部署需要快速、高度持久、可靠和可扩展的 Kubernetes 有状态工作负载。

二,卷类型

本地卷:本地卷能够直接将工作节点上插入的数据盘抽象为持久卷,供当前节点上的 Pod 挂载使用。

复制卷:OpenEBS 使用其内部的引擎为每个复制卷创建一个微服务,在使用时,有状态服务将数据写入 OpenEBS 引擎,引擎将数据同步复制到集群中的多个节点,从而实现了高可用

img

三,本地卷存储引擎类型

Local PV hostpath

​ 指定使用本地目录

Local PV device

​ 通过配置磁盘标识信息来定义哪些设备可用于创建本地pv

ZFS Local PV K8S:1.20+

​ 通过zfs服务创建存储池,配置卷,比如条带卷、镜像卷

LVM Local PV K8S:1.20+

​ 通过lvm创建存储卷组

Rawfile Local PV K8s:1.21+

四,复制卷存储引擎类型(副本卷)

Mayastor

cStor K8s 1.21+

Jiva 3.2.0+稳定版本 适配k8s:1.21+

4.1 复制卷实现原理

OpenEBS使用其中一个引擎(Mayastor、cStor或Jiva)为每个分布式持久卷创建微服务

Pod将数据写入OpenEBS引擎,OpenEBS引擎将数据同步复制到集群中的多个节点。

OpenEBS引擎本身作为pod部署,并由Kubernetes进行协调。 当运行Pod的节点失败时,Pod将被重新调度到集群中的另一个节点,OpenEBS将使用其他节点上的可用数据副本提供对数据的访问

4.2 复制卷的优势

OpenEBS分布式块卷被称为复制卷,以避免与传统的分布式块存储混淆,传统的分布式块存储倾向于将数据分布到集群中的许多节点上。 复制卷是为云原生有状态工作负载设计的,这些工作负载需要大量的卷,这些卷的容量通常可以从单个节点提供,而不是使用跨集群中的多个节点分片的单个大卷

五,openebs存储引擎技术选型

应用需求 存储类型 OpenEBS卷类型
低时延、高可用性、同步复制、快照、克隆、精简配置 SSD/云存储卷 OpenEBS Mayastor
高可用性、同步复制、快照、克隆、精简配置 机械/SSD/云存储卷 OpenEBS cStor
高可用性、同步复制、精简配置 主机路径或外部挂载存储 OpenEBS Jiva
低时延、本地PV 主机路径或外部挂载存储 Dynamic Local PV - Hostpath, Dynamic Local PV - Rawfile
低时延、本地PV 本地机械/SSD/云存储卷等块设备 Dynamic Local PV - Device
低延迟,本地PV,快照,克隆 本地机械/SSD/云存储卷等块设备 OpenEBS Dynamic Local PV - ZFS , OpenEBS Dynamic Local PV - LVM

总结:

多机环境,如果有额外的块设备(非系统盘块设备)作为数据盘,选用OpenEBS Mayastor、OpenEBS cStor
多机环境,如果没有额外的块设备(非系统盘块设备)作为数据盘,仅单块系统盘块设备,选用OpenEBS Jiva

单机环境,建议本地路径Dynamic Local PV - Hostpath, Dynamic Local PV - Rawfile,由于单机多用于测试环境,数据可靠性要求较低。

六,k8s中部署openebs服务

6.1 下载yaml创建资源

mkdir openebs && cd openebs
wget https://openebs.github.io/charts/openebs-operator.yaml
kubectl apply -f openebs-operator.yaml



修改yaml中hostpath默认路径
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: openebs-hostpath
  annotations:
    openebs.io/cas-type: local
    cas.openebs.io/config: |
      #hostpath type will create a PV by
      # creating a sub-directory under the
      # BASEPATH provided below.
      - name: StorageType
        value: "hostpath"
      #Specify the location (directory) where
      # where PV(volume) data will be saved.
      # A sub-directory with pv-name will be
      # created. When the volume is deleted,
      # the PV sub-directory will be deleted.
      #Default value is /var/openebs/local
      - name: BasePath
        value: "/var/openebs/local/"			#默认存储路径

6.2 检查资源创建状态

kubectl get storageclasses,pod,svc -n openebs



kubectl get storageclasses,pod,svc -n openebs 
NAME                                                     PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
storageclass.storage.k8s.io/local-storage                kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  372d
storageclass.storage.k8s.io/nfs                          nfs                            Delete          Immediate              true                   311d
storageclass.storage.k8s.io/nfs-storageclass (default)   fuseim.pri/ifs                 Retain          Immediate              true                   314d
storageclass.storage.k8s.io/openebs-device               openebs.io/local               Delete          WaitForFirstConsumer   false                  3m41s
storageclass.storage.k8s.io/openebs-hostpath             openebs.io/local               Delete          WaitForFirstConsumer   false                  3m41s

NAME                                                READY   STATUS    RESTARTS   AGE
pod/openebs-localpv-provisioner-6779c77b9d-gr9gn    1/1     Running   0          3m41s
pod/openebs-ndm-cluster-exporter-5bbbcd59d4-4nmjl   1/1     Running   0          3m41s
pod/openebs-ndm-llc54                               1/1     Running   0          3m41s
pod/openebs-ndm-node-exporter-698gw                 1/1     Running   0          3m41s
pod/openebs-ndm-node-exporter-z522n                 1/1     Running   0          3m41s
pod/openebs-ndm-operator-d8797fff9-jzrp7            1/1     Running   0          3m41s
pod/openebs-ndm-prk5g                               1/1     Running   0          3m41s

NAME                                           TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
service/openebs-ndm-cluster-exporter-service   ClusterIP   None         <none>        9100/TCP   3m41s
service/openebs-ndm-node-exporter-service      ClusterIP   None         <none>        9101/TCP   3m41s

#配置hostpath本地卷为默认存储类

#kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

七,Local PV hostpath动态供给

7.1 创建hostpath测试pod

kubectl apply -f demo-openebs-hostpath.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    name: nginx
  namespace: openebs
spec:
  replicas: 1
  selector:
    matchLabels:
      name: nginx
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
        - resources:
            limits:
              cpu: 0.5
          name: nginx
          image: nginx
          ports:
            - contai
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

背锅攻城师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值