OpenShift 4 - 在单节点 OpenShift 上部署 ODF 存储软件
《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 增加额外存储设备
- 在第一个 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#
- 然后查看系统的存储情况,此时只有一个名为 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
- 在第二个 Terminal 窗口运行命令启动 virt-manager,完成后将显示以下窗口。
$ virt-manager
- 先点击上图的 Open 图标,此时将显示以下窗口。然后在弹出的 “crc on QEMU/KVM“ 窗口中点击第二个图标,确认此时 crc 虚拟机只有 1 个 VirtIO Disk。
- 先点击上图的 Add Hardware 按钮,然后在弹出的下图 “Add New Virtual Hardware” 窗口中设置 disk 空间,然后点击 Finish 按钮。
- 再重复上一步操作 2 次后可以看到如下图显示,此时 VM 会有 4个 VirtIO Disk,其中 3 个是我们手动增加的。
- 在第一个 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
- 也可运行以下命令为 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
- 在 OpenShift 控制台中使用缺省配置安装 ODF LVM Operator。缺省会安装在 openshift-storage 项目中。
- 在 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
- 部署完成后可以在 openshift-storage 项目中看到如下的部署拓扑。
- 在第二个 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
- 在第一个 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 验证
- 执行命令,创建测试项目和测试部署。
$ 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
- 进入 OpenShift 开发者视图中的 “拓扑”,先选中的 busybox 部署,然后在 “操作” 中选择 “添加存储” 选项。
- 在 “添加存储” 页面中按照下图使用创建一个 PVC,并挂载到容器的 /mnt 目录。
- 创建完 PVC 后 busybox 部署将重新创建对应的 pod。
- 完成后可分别进入 busybox 部署的 2 个 pod,然后向 /mnt 目录中写文件,确认文件内容是持久化的。
参考
https://www.redhat.com/en/blog/persistent-data-red-hat-openshift-edge
OpenShift 4 - 在单节点 OpenShift 上部署 ODF 存储软件相关推荐
- openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程
Centos7中openshift_3.11单节点安装及配置开机自启详解 本次openshift安装使用最简单便捷的单节点安装,适用于本地开发及测试 openshift简介 OpenShift是红帽公 ...
- Hadoop系列二:Hadoop单节点伪分布部署并执行mapreduce示例wordcount
HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理.HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现 ...
- docker 单节点服务编排部署指南(docker-compose)
Docker-Compose 多容器部署工具 概述 Docker-Compose 项目是 Docker 官方的开源项目,是用于定义和运行多容器 Docker 应用程序的工具.负责实现对 Docker ...
- 第15节 单臂路由上部署DHCP服务器及DHCP中继——基于PacketTracer仿真实验
1理论知识储备 1.1 VTP协议相关理论知识 概念:VTP(VLAN Trunking Protocol):是VLAN中继协议,也被称为虚拟局域网干道协议.它是思科私有协议. 作用:在企业网络中有多 ...
- openshift java_在OpenShift上部署Java应用程序的快速指南
在本文中,我将向您展示如何在OpenShift(Minishift)上部署应用程序,将它们与其中暴露的其他服务连接起来,还是使用由OpenShift提供的其他一些有趣的部署功能.OpenShift构建 ...
- Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署
文章目录 Redis 下载地址 Redis 5.x 单节点 编译安装 Redis 启停 Redis Cluster 4.x VS Redis Cluster 5.x 演进之路 ( Master/Sla ...
- k8s安装sqlite3_kubernetes环境部署单节点redis数据库的方法
kubernetes部署redis数据库(单节点) redis简介 Redis 是我们常用的非关系型数据库,在项目开发.测试.部署到生成环境时,经常需要部署一套 Redis 来对数据进行缓存.这里介绍 ...
- Kubernetes 部署 Mysql 8.0 数据库(单节点)
作者:超级小豆丁 http://www.mydlq.club/article/75 目录 简介 Mysql 参数配置 创建 ConfigMap 存储 Mysql 配置文件 通过 Kubectl 工具部 ...
- Kubernetes 二进制方式集群部署(单节点多节点)
目录 一.K8S 单 Master 节点二进制部署 1. 环境部署 2. 部署 etcd 集群 2.1 创建 k8s 工作目录 2.2 编写 etcd-cert.sh 和 etcd.sh 脚本 2.3 ...
最新文章
- 【Swift】自定义控件无限轮播 + 无限图片轮播
- 如何制作一颗CPU? 从石子到管脚绑定
- Incorrect column count: expected 1, actual 5,JdbcTemplate queryForList 出错
- VS之设置文件编码格式
- qt编写activex_Qt中使用ActiveX(一)
- 学习笔记——深拷贝与浅拷贝
- 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)
- 这个中秋,来点不一样~
- 前端学习(2828):数组和对象循环
- Java 链表数据修改
- @datetimeformat注解使用 晚了8个小时_Java注解,就是那么简单
- DNS资源记录类型的总结
- java就业培训教程 笔记
- 自己动手写操作系统 ----总计
- 【转】PLC编程软件: KW multiprog 和 codesys
- 计算机对舞蹈影响,计算机技术在舞蹈教学中的应用
- ESLint和Prettier的配置
- 51单片机智能温控风扇
- python电话号码转换英文字母_用python实现英文字母和相应序数转换的方法
- Elasticsearch Doc_Values解析