首页 > 其他分享 > 探索在openebs中使用lvm做持久化

探索在openebs中使用lvm做持久化

时间:2023-11-01 21:35:03浏览次数:37  
标签:持久 image storage io lvm csi openebs

1.部署

官网:https://openebs.io

lvm项目地址:https://github.com/openebs/lvm-localpv

1.1.本地创建vg

apt install lvm2 -y
lsblk
# 创建pv和vg
sudo pvcreate /dev/loop0
sudo vgcreate lvmvg /dev/loop0 

注意:这里根据自己需求看是否全部的node节点都需要使用lvm做本地存储,也可以选择部分节点,这里就是根据所有节点都需要去配置。

1.2.OpenEBS LVM安装

最新配置文件:https://openebs.github.io/charts/lvm-operator.yaml

kubectl apply -f https://openebs.github.io/charts/lvm-operator.yaml

注:因为镜像在国外,这里将如何获取的两种办法写在了下面,其他镜像可能是有些慢

第一种:国外地址加速

cat lvm-operator.yaml | grep image:
image: registry.k8s.io/sig-storage/csi-resizer:v1.8.0
image: registry.k8s.io/sig-storage/csi-snapshotter:v6.2.2
image: registry.k8s.io/sig-storage/snapshot-controller:v6.2.2
image: registry.k8s.io/sig-storage/csi-provisioner:v3.5.0
image: openebs/lvm-driver:1.3.0
image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.8.0
image: openebs/lvm-driver:1.3.0

镜像pull不到本地请参考这个:https://github.com/anjia0532/gcr.io_mirror/issues/3341

第二种:我自己的阿里镜像仓库

registry.cn-hangzhou.aliyuncs.com/image-storage/csi-snapshotter:v6.2.2
registry.cn-hangzhou.aliyuncs.com/image-storage/snapshot-controller:v6.2.2
registry.cn-hangzhou.aliyuncs.com/image-storage/csi-resizer:v1.8.0
registry.cn-hangzhou.aliyuncs.com/image-storage/csi-node-driver-registrar:v2.8.0
registry.cn-hangzhou.aliyuncs.com/image-storage/csi-provisioner:v3.5.0
registry.cn-hangzhou.aliyuncs.com/image-storage/tests-fio:latest

查看pod启动状态:

kubectl get pods -n kube-system -l role=openebs-lvm
NAME                       READY   STATUS    RESTARTS      AGE
openebs-lvm-controller-0   5/5     Running   6 (28m ago)   23h
openebs-lvm-node-cnzfc     2/2     Running   0             23h
openebs-lvm-node-zr8fz     2/2     Running   0             23h

1.3.使用lvm作为持久化

1.3.1.创建storage

默认模版:

cat > sc.yaml <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: openebs-lvmpv
parameters:
  storage: "lvm"
  volgroup: "carina-vg-ssd"
provisioner: local.csi.openebs.io
EOF

选择节点去使用lvm:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: openebs-lvmpv
allowVolumeExpansion: true
parameters:
  storage: "lvm"
  volgroup: "lvmvg"
provisioner: local.csi.openebs.io
allowedTopologies:
- matchLabelExpressions:
  - key: kubernetes.io/hostname
    values:
      - lvmpv-node1
      - lvmpv-node2

1.3.2.创建pvc

cat > pvc.yaml <<EOF
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: csi-lvmpv
spec:
  storageClassName: openebs-lvmpv
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi
EOF

1.3.3.部署应用程序

cat > fio.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: fio
spec:
  restartPolicy: Never
  containers:
  - name: perfrunner
    image: openebs/tests-fio
    command: ["/bin/bash"]
    args: ["-c", "while true ;do sleep 50; done"]
    volumeMounts:
       - mountPath: /datadir
         name: fio-vol
    tty: true
  volumes:
  - name: fio-vol
    persistentVolumeClaim:
      claimName: csi-lvmpv
EOF

查看pod和挂载状态:

$ kubectl get pod
NAME                                     READY   STATUS    RESTARTS        AGE
fio                                      1/1     Running   0               22h
​
$ kubectl get pvc
NAME                             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE
csi-lvmpv                        Bound    pvc-8765653e-2767-4fc1-a4de-aea96f538721   4Gi        RWO            openebs-lvmpv   22h
​
$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM
pvc-8765653e-2767-4fc1-a4de-aea96f538721   4Gi        RWO            Delete           Bound      default/csi-lvmpv                        openebs-lvmpv            22h
​
$ lvs
  LV                                       VG            Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  pvc-8765653e-2767-4fc1-a4de-aea96f538721 carina-vg-ssd -wi-ao---- 4.00g
​
$ vgs
  VG            #PV #LV #SN Attr   VSize    VFree
  carina-vg-ssd   1   1   0 wz--n- <200.00g <196.00g
​
$ pvs
  PV         VG            Fmt  Attr PSize    PFree
  /dev/sdb   carina-vg-ssd lvm2 a--  <200.00g <196.00g

标签:持久,image,storage,io,lvm,csi,openebs
From: https://www.cnblogs.com/-k8s/p/17804161.html

相关文章

  • HarmonyOS数据管理与应用数据持久化(一)
    HarmonyOS数据管理与应用数据持久化(一)一.数据管理概述功能介绍数据管理为开发者提供数据存储、数据管理能力,比如联系人应用数据可以保存到数据库中,提供数据库的安全、可靠等管理机制。● 数据存储:提供通用数据持久化能力,根据数据特点,分为用户首选项、键值型数据库和关系型数据库......
  • LLVM 参考链接
    https://www.llvm.org/LLVMEssentials(Paperback)LLVM编译器https://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15745-s14/public/lectures/https://www.zhihu.com/people/fanqiliang/posts立本书籍https://tatsu-zine.com/books/llvm......
  • Redis持久化机制
    持久化机制通常来说,应该同时使用两种持久化方案,以保证数据安全:如果数据不敏感,且可以从其他地方重新生成,可以关闭持久化如果数据比较重要,且能够承受几分钟的数据丢失,比如缓存等,只需要使用RDB即可如果是用做内存数据,要使用Redis的持久化,建议是RDB和AOF都开启如果只用AO......
  • 爱好的持久性
    感觉入坑时懵懵懂懂,甚至刚成年,不知道这个东西的毒害。再加上没有老师以及学长的指引,就一条道走到黑了。现在回过头来,发现这真的是一条不归路,至少对于普通人是这样的。感觉每个人都会踩坑,固然有自己固执的因素,但是如果有贵人相助(老师、学长合理规劝),一定能减少亏损,但这都过去了,要说......
  • Linux系统重装后恢复数据盘LVM卷
    请注意,在执行这些步骤之前,确保已经了解LVM的基本概念和操作方式,并且谨慎操作以避免数据丢失。此外,如果有关于卷组的备份,那么更安全的方法是直接恢复备份,在重装系统之后再进行数据还原。在Linux系统重装后恢复LVM数据盘卷时,您可以按照以下步骤进行:1、确保LVM卷组已经存......
  • emscripten基于llvm的webassembly 编译器
    emscripten是一个基于llvm的webassembly编译器包含的特性可移植支持编译现有的c,c++以及其他语言项目,使用lvvm编译为支持nodejs,浏览器,以及wasm运行时运行的服务提供apis支持将openGL转换为WebGL,pthreads转换为webapi。。。快速集成了不少工具(llvm,emscripten,binar......
  • 可持久化线段树学习笔记
    可持久化线段树前置知识:动态开点线段树基本介绍可持久化线段树可以维护多个版本信息。举个例子:你需要维护这样的一个长度为\(N\(1\len\le10^6)\)的数组,支持如下几种操作在某个历史版本上修改某一个位置上的值访问某个历史版本上的某一位置的值每次操作后生成一......
  • Redis 数据持久化方案
    今日目标掌握Redis数据持久化原理在分布式系统中,存储非结构化数据的中间件Redis是必不可少的,Redis在小、中、大甚至高并发系统中都有发挥起作用的场合,在之前我已经给大家介绍过Redis的基础数据结构(String/Hash/Set/ZSet/List)的增删改查操作。现在思考一个问题,Redis如果仅仅只是将......
  • [ Redis 2 ] 持久化
    Redis_2持久化1.Redis.conf详解redis.conf从上向下详解1.1单位配置1redis对单位的大小写是不敏感的,单位可以是gb,GB,Gb等等。2可以包含其他配置文件的配置1.2网络配置绑定的ip和端口号bind127.0.0.1protected-modeyes#保护模式port63791.3通用配置Gener......
  • graalvm 23.1.0 python 试用
    graalvm23.1.0开始python集成也做为一个独立的包了,同时官方文档也有一些安装说明,比如下载包的,基于pyenv的目前pyenv的是不成功的(repo似乎还没更新)安装直接使用安装包,直接可以github下载,包含了不同的版本,直接可以下载企业版使用参考代码app.py print("demo")运行可以通过gr......