《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在支持 OpenShift 4.12 的 OpenShift Local 环境中验证

文章目录

  • 什么是 ODF LVM ?
  • 为 OpenShift Local 增加额外存储设备
  • 安装并配置 ODF LVM Operator
  • 使用 ODF 创建 PVC/PV 验证
  • 参考

什么是 ODF LVM ?

OpenShift Data Foundation Logical Volume Manager(即 ODF LVM)是利用 OpenShift 单节点的本地存储部署 ODF 的一种方式,可以把 ODF LVM 看成是在单节点部署 ODF 的一种精简部署方式。

由于 ODF 其实是一种容器化 Ceph 部署方式,因此部署 ODF LVM 的 OpenShift 单节点至少需要额外提供 3 个存储设备。本文使用 OpenShift Local 演示如何在单节点 OpenShift 上安装配置 ODF。

需要注意的是,标准 ODF 是部署在多个节点上的,因此具备 RWX能力。而 ODF LVM 只运行在一个节点上,因此其 PV 没有多节点同时访问的 RWX 能力。

为 OpenShift Local 增加额外存储设备

  1. 在第一个 Terminal 窗口先执行命令进入 OpenShift Local 的集群节点的 RHCOS 操作系统。
$ oc get node
NAME                 STATUS   ROLES           AGE   VERSION
crc-pbwlw-master-0   Ready    master,worker   41d   v1.25.4+77bec7a
$ oc debug node/crc-pbwlw-master-0
To use host binaries, run `chroot /host`
Pod IP: 192.168.126.11
If you don't see a command prompt, try pressing enter.
sh-4.4#
  1. 然后查看系统的存储情况,此时只有一个名为 vda 的存储设备。
sh-4.4# chroot /host
sh-4.4# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda    252:0    0   180G  0 disk
|-vda1 252:1    0     1M  0 part
|-vda2 252:2    0   127M  0 part
|-vda3 252:3    0   384M  0 part /boot
`-vda4 252:4    0 179.5G  0 part /sysroot
  1. 在第二个 Terminal 窗口运行命令启动 virt-manager,完成后将显示以下窗口。
$ virt-manager

  1. 先点击上图的 Open 图标,此时将显示以下窗口。然后在弹出的 “crc on QEMU/KVM“ 窗口中点击第二个图标,确认此时 crc 虚拟机只有 1 个 VirtIO Disk。
  2. 先点击上图的 Add Hardware 按钮,然后在弹出的下图 “Add New Virtual Hardware” 窗口中设置 disk 空间,然后点击 Finish 按钮。
  3. 再重复上一步操作 2 次后可以看到如下图显示,此时 VM 会有 4个 VirtIO Disk,其中 3 个是我们手动增加的。
  4. 在第一个 Terminal 窗口再次查看 RHCOS 的存储设备,现在已经出现 vdb、vdc、vdd 三个新存储设备。
sh-4.4# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda    252:0    0   180G  0 disk
|-vda1 252:1    0     1M  0 part
|-vda2 252:2    0   127M  0 part
|-vda3 252:3    0   384M  0 part /boot
`-vda4 252:4    0 179.5G  0 part /sysroot
vdb    252:16   0    10G  0 disk
vdc    252:32   0    10G  0 disk
vdd    252:48   0    10G  0 disk
  1. 也可运行以下命令为 VM 增加存储设备。
$ qemu-img create -f raw /YOUR/PATH/crc-extra-disk-b 10G
$ qemu-img create -f raw /YOUR/PATH/crc-extra-disk-c 10G
$ qemu-img create -f raw /YOUR/PATH/crc-extra-disk-d 10G
$ sudo virsh attach-disk crc --source /YOUR/PATH/crc-extra-disk-b --target vdb --cache none
$ sudo virsh attach-disk crc --source /YOUR/PATH/crc-extra-disk-c --target vdc --cache none
$ sudo virsh attach-disk crc --source /YOUR/PATH/crc-extra-disk-d --target vdd --cache none

安装并配置 ODF LVM Operator

  1. 在 OpenShift 控制台中使用缺省配置安装 ODF LVM Operator。缺省会安装在 openshift-storage 项目中。
  2. 在 ODF LVM Operator 中使用默认配置创建一个 LVMCluster 的实例。
kind: LVMCluster
apiVersion: lvm.topolvm.io/v1alpha1
metadata:name: odf-lvmclusternamespace: openshift-storage
spec:storage:deviceClasses:- name: vg1thinPoolConfig:name: thin-pool-1overprovisionRatio: 10sizePercent: 90
  1. 部署完成后可以在 openshift-storage 项目中看到如下的部署拓扑。
  2. 在第二个 Terminal 窗口查看集群 StorageClass 已经有以下两个,其中第一个是 OpenShift Local 自带的,第二项是 ODF LVM Operator 新建的。
$ oc get storageclass
NAME                                     PROVISIONER                        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
crc-csi-hostpath-provisioner (default)   kubevirt.io.hostpath-provisioner   Delete          WaitForFirstConsumer   false                  40d
odf-lvm-vg1                              topolvm.cybozu.com                 Delete          WaitForFirstConsumer   true                   12h
  1. 在第一个 Terminal 窗口可以查看到 RHOCS 的 vdb、vdc、vdd 存储设备已经被使用了。
sh-4.4# lsblk
NAME                                               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda                                                252:0    0   180G  0 disk
|-vda1                                             252:1    0     1M  0 part
|-vda2                                             252:2    0   127M  0 part
|-vda3                                             252:3    0   384M  0 part /boot
`-vda4                                             252:4    0 179.5G  0 part /sysroot
vdb                                                252:16   0    10G  0 disk
|-vg1-thin--pool--1_tmeta                          253:0    0     4M  0 lvm
| `-vg1-thin--pool--1-tpool                        253:2    0    27G  0 lvm
|   |-vg1-thin--pool--1                            253:3    0    27G  1 lvm
|   `-vg1-2bdb8b85--622f--426a--a096--abe626f32550 253:4    0     1G  0 lvm  /var/lib/kubelet/pods/1c972e66-d879-44d2-92f6-1ba4284237f5/volumes/kubernetes.io~csi/pvc-4f3f49a6-238c-4f77-93ce-96bb8fc77dde/mount
`-vg1-thin--pool--1_tdata                          253:1    0    27G  0 lvm  `-vg1-thin--pool--1-tpool                        253:2    0    27G  0 lvm  |-vg1-thin--pool--1                            253:3    0    27G  1 lvm  `-vg1-2bdb8b85--622f--426a--a096--abe626f32550 253:4    0     1G  0 lvm  /var/lib/kubelet/pods/1c972e66-d879-44d2-92f6-1ba4284237f5/volumes/kubernetes.io~csi/pvc-4f3f49a6-238c-4f77-93ce-96bb8fc77dde/mount
vdc                                                252:32   0    10G  0 disk
`-vg1-thin--pool--1_tdata                          253:1    0    27G  0 lvm  `-vg1-thin--pool--1-tpool                        253:2    0    27G  0 lvm  |-vg1-thin--pool--1                            253:3    0    27G  1 lvm  `-vg1-2bdb8b85--622f--426a--a096--abe626f32550 253:4    0     1G  0 lvm  /var/lib/kubelet/pods/1c972e66-d879-44d2-92f6-1ba4284237f5/volumes/kubernetes.io~csi/pvc-4f3f49a6-238c-4f77-93ce-96bb8fc77dde/mount
vdd                                                252:48   0    10G  0 disk
`-vg1-thin--pool--1_tdata                          253:1    0    27G  0 lvm  `-vg1-thin--pool--1-tpool                        253:2    0    27G  0 lvm  |-vg1-thin--pool--1                            253:3    0    27G  1 lvm  `-vg1-2bdb8b85--622f--426a--a096--abe626f32550 253:4    0     1G  0 lvm  /var/lib/kubelet/pods/1c972e66-d879-44d2-92f6-1ba4284237f5/volumes/kubernetes.io~csi/pvc-4f3f49a6-238c-4f77-93ce-96bb8fc77dde/mount

使用 ODF 创建 PVC/PV 验证

  1. 执行命令,创建测试项目和测试部署。
$ oc new-project pv-demo
$ oc apply -f - << EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: busyboxlabels:app: busybox
spec:replicas: 2selector:matchLabels:app: busyboxtemplate:metadata:labels:app: busyboxspec:containers:- name: pod-busyboximage: busybox:latestcommand: ["/bin/sh"]args: ["-c", "while true; do sleep $(($RANDOM % 5 + 5)); done"]
EOF
  1. 进入 OpenShift 开发者视图中的 “拓扑”,先选中的 busybox 部署,然后在 “操作” 中选择 “添加存储” 选项。
  2. 在 “添加存储” 页面中按照下图使用创建一个 PVC,并挂载到容器的 /mnt 目录。
  3. 创建完 PVC 后 busybox 部署将重新创建对应的 pod。
  4. 完成后可分别进入 busybox 部署的 2 个 pod,然后向 /mnt 目录中写文件,确认文件内容是持久化的。

参考

https://www.redhat.com/en/blog/persistent-data-red-hat-openshift-edge

OpenShift 4 - 在单节点 OpenShift 上部署 ODF 存储软件相关推荐

  1. openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程

    Centos7中openshift_3.11单节点安装及配置开机自启详解 本次openshift安装使用最简单便捷的单节点安装,适用于本地开发及测试 openshift简介 OpenShift是红帽公 ...

  2. Hadoop系列二:Hadoop单节点伪分布部署并执行mapreduce示例wordcount

    HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理.HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现 ...

  3. docker 单节点服务编排部署指南(docker-compose)

    Docker-Compose 多容器部署工具 概述 Docker-Compose 项目是 Docker 官方的开源项目,是用于定义和运行多容器 Docker 应用程序的工具.负责实现对 Docker ...

  4. 第15节 单臂路由上部署DHCP服务器及DHCP中继——基于PacketTracer仿真实验

    1理论知识储备 1.1 VTP协议相关理论知识 概念:VTP(VLAN Trunking Protocol):是VLAN中继协议,也被称为虚拟局域网干道协议.它是思科私有协议. 作用:在企业网络中有多 ...

  5. openshift java_在OpenShift上部署Java应用程序的快速指南

    在本文中,我将向您展示如何在OpenShift(Minishift)上部署应用程序,将它们与其中暴露的其他服务连接起来,还是使用由OpenShift提供的其他一些有趣的部署功能.OpenShift构建 ...

  6. Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署

    文章目录 Redis 下载地址 Redis 5.x 单节点 编译安装 Redis 启停 Redis Cluster 4.x VS Redis Cluster 5.x 演进之路 ( Master/Sla ...

  7. k8s安装sqlite3_kubernetes环境部署单节点redis数据库的方法

    kubernetes部署redis数据库(单节点) redis简介 Redis 是我们常用的非关系型数据库,在项目开发.测试.部署到生成环境时,经常需要部署一套 Redis 来对数据进行缓存.这里介绍 ...

  8. Kubernetes 部署 Mysql 8.0 数据库(单节点)

    作者:超级小豆丁 http://www.mydlq.club/article/75 目录 简介 Mysql 参数配置 创建 ConfigMap 存储 Mysql 配置文件 通过 Kubectl 工具部 ...

  9. Kubernetes 二进制方式集群部署(单节点多节点)

    目录 一.K8S 单 Master 节点二进制部署 1. 环境部署 2. 部署 etcd 集群 2.1 创建 k8s 工作目录 2.2 编写 etcd-cert.sh 和 etcd.sh 脚本 2.3 ...

最新文章

  1. 【Swift】自定义控件无限轮播 + 无限图片轮播
  2. 如何制作一颗CPU? 从石子到管脚绑定
  3. Incorrect column count: expected 1, actual 5,JdbcTemplate queryForList 出错
  4. VS之设置文件编码格式
  5. qt编写activex_Qt中使用ActiveX(一)
  6. 学习笔记——深拷贝与浅拷贝
  7. 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)
  8. 这个中秋,来点不一样~
  9. 前端学习(2828):数组和对象循环
  10. Java 链表数据修改
  11. @datetimeformat注解使用 晚了8个小时_Java注解,就是那么简单
  12. DNS资源记录类型的总结
  13. java就业培训教程 笔记
  14. 自己动手写操作系统 ----总计
  15. 【转】PLC编程软件: KW multiprog 和 codesys
  16. 计算机对舞蹈影响,计算机技术在舞蹈教学中的应用
  17. ESLint和Prettier的配置
  18. 51单片机智能温控风扇
  19. python电话号码转换英文字母_用python实现英文字母和相应序数转换的方法
  20. Elasticsearch Doc_Values解析

热门文章

  1. 公司U07 随机变量视角下的NPV估值 教材笔记
  2. python简单的绘制折现图
  3. python-office的使用
  4. jQuery三款简约MP3播放器插件
  5. 国际上的三大标准组织
  6. 华尔街“是”世界经济关键角色的原因
  7. Springboot+Vue实现富文本发表文章功能
  8. intptr_t详解
  9. vue mounted遇到的问题
  10. 基于机器学习的心脏病预测方法(1)——心脏病及Heart Disease UCI数据集介绍