如何将 Minio DirectPV 配置为 RustFS 存储后端?

RustFS 作为新一代的分布式对象存储系统,提供了 Helm Chart 以便 Kubernetes 集群上安装 RustFS 实例。而 DirectPV 是一个符合 CSI 标准的 Kubernetes 存储项目,由 Minio 发布且开源。本文使用 DirectPV 为 Kubernetes 上的 RustFS 实例提供后端存储服务,实现两个对象存储服务的“结合”。

前提

  • 运行良好的 Kubernetes 集群。

    本文使用 K3S 作为测试环境,根据 K3S 安装指南完成安装:

    # 安装 K3S curl -sfL https://get.k3s.io | sh - # 安装确认 kubectl get nodes NAME STATUS ROLES AGE VERSION vm-0-17-ubuntu Ready control-plane 63m v1.34.3+k3s1
  • 一块空磁盘

    本文在安装 K3S 的服务器上(OS 为 Ubuntu 24.04)挂载了一块容量为 20GB 的新磁盘:

    df -h vdb 253:16 0 20G 0 disk /root/data/disk mount | grep vdb /dev/vdb on /root/data/disk type ext4 (rw,relatime)

安装 DirectPV

可以直接根据 minio/directpv 文档进行 DirectPV 的安装。这个过程中会使用到 krew plugin,根据不同的 OS 执行安装命令即可。

在 Ubuntu 上执行如下命令:

( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew )

安装完毕,将PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"写到 ~/.bashrc 或 ~/.zshrc 即可。

开始安装 DirectPV。

  • 安装 directpv krew 插件
kubectl krew install directpv
  • 在 Kubernetes 集群中安装 DirectPV
kubectl directpv install Installing on unsupported Kubernetes v1.34 ███████████████████████████████████████████████████████████████████████████ 100% ┌──────────────────────────────────────┬──────────────────────────┐ │ NAME │ KIND │ ├──────────────────────────────────────┼──────────────────────────┤ │ directpv │ Namespace │ │ directpv-min-io │ ServiceAccount │ │ directpv-min-io │ ClusterRole │ │ directpv-min-io │ ClusterRoleBinding │ │ directpv-min-io │ Role │ │ directpv-min-io │ RoleBinding │ │ directpvdrives.directpv.min.io │ CustomResourceDefinition │ │ directpvvolumes.directpv.min.io │ CustomResourceDefinition │ │ directpvnodes.directpv.min.io │ CustomResourceDefinition │ │ directpvinitrequests.directpv.min.io │ CustomResourceDefinition │ │ directpv-min-io │ CSIDriver │ │ directpv-min-io │ StorageClass │ │ node-server │ Daemonset │ │ controller │ Deployment │ └──────────────────────────────────────┴──────────────────────────┘ DirectPV installed successfully
  • 安装确认并获取安装信息
kubectl -n directpv get pods NAME READY STATUS RESTARTS AGE controller-54d56fb9f8-92cz8 3/3 Running 0 90m controller-54d56fb9f8-kfltl 3/3 Running 0 90m controller-54d56fb9f8-ncxcn 3/3 Running 0 90m node-server-vgpn2 4/4 Running 0 90m kubectl directpv info ┌──────────────────┬──────────┬───────────┬─────────┬────────┐ │ NODE │ CAPACITY │ ALLOCATED │ VOLUMES │ DRIVES │ ├──────────────────┼──────────┼───────────┼─────────┼────────┤ │ • vm-0-17-ubuntu │ - │ - │ - │ - │ └──────────────────┴──────────┴───────────┴─────────┴────────┘ 0 B/0 B used, 0 volumes, 0 drives
  • 添加磁盘(驱动)

首先检测磁盘信息并将其信息写到drives.yaml文件中:

kubectl directpv discover Discovered node 'vm-0-17-ubuntu' ✔ ┌─────────────────────┬────────────────┬───────┬────────┬────────────┬──────┬───────────┬─────────────┐ │ ID │ NODE │ DRIVE │ SIZE │ FILESYSTEM │ MAKE │ AVAILABLE │ DESCRIPTION │ ├─────────────────────┼────────────────┼───────┼────────┼────────────┼──────┼───────────┼─────────────┤ │ 253:16$PXmUgO0FF... │ vm-0-17-ubuntu │ vdb │ 20 GiB │ ext4 │ - │ YES │ - │ └─────────────────────┴────────────────┴───────┴────────┴────────────┴──────┴───────────┴─────────────┘ Generated 'drives.yaml' successfully.

drives.yaml文件内容如下:

version: v1 nodes: - name: vm-0-17-ubuntu drives: - id: 253:16$PXmUgO0FF7sKtsaVihMadap1hCZil9Rksbz2SdQkMfA= name: vdb size: 21474836480 make: "" fs: ext4 select: "yes"

接着使用drives.yaml文件进行 DirectPV 初始化:

kubectl directpv init drives.yaml --dangerous ███████████████████████████████████████████████████████████████████████████ 100% Processed initialization request '3a70561d-3de0-4756-b256-159fc98593d1' for node 'vm-0-17-ubuntu' ✔ ┌──────────────────────────────────────┬────────────────┬───────┬─────────┐ │ REQUEST_ID │ NODE │ DRIVE │ MESSAGE │ ├──────────────────────────────────────┼────────────────┼───────┼─────────┤ │ 3a70561d-3de0-4756-b256-159fc98593d1 │ vm-0-17-ubuntu │ vdb │ Success │ └──────────────────────────────────────┴────────────────┴───────┴─────────┘

恭喜你,走到这一步,你已经成功安装了 DirectPV(之前的每一步出错都会导致失败,请认真查看命令以及输出结果),使用如下命令确认:

kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE directpv-min-io directpv-min-io Delete WaitForFirstConsumer true 90m local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 115m

可以看到,名为directpv-min-io的 StorageClass 已经存在。接下来就使用这个 SC 进行 RustFS 的安装。

在 K3S 上安装 RustFS

RustFS 提供 Helm Chart来在 Kubernetes 上安装 RustFS。目前支持两种模式:单机单盘(SNSD)和多机多盘(MNMD)

可以将 GitHub Repo 代码 clone 到本地,然后进入到helm/rustfs目录下进行安装,也可以直接使用 RustFS 的远端仓库(RustFS 已经将 Helm Chart 发布到了 Artifact Hub),比如:

# 添加仓库 helm repo add rustfs https://charts.rustfs.com # 安装 RustFS helm install rustfs -n rustfs rustfs/rustfs --create-namespace --version 0.0.80

由于 RustFS Helm Chart 默认使用local-pathStorageClass,而且默认的 PVC 大小为 256Mi,因此需要根据自身情况设置合适的大小,最简单的方式就是在本地创建一个values.yml文件,然后修改如下内容:

storageclass: name: directpv-min-io dataStorageSize: 256Mi logStorageSize: 256Mi

当然,也可以用--set来实现参数的覆盖,但是由于 RustFS 多种安装模式、多种 Ingress Controller,以及 pod 资源的自定义等,--set就需要指定多个参数,会显得繁琐。将需要变更的信息写到本地values.yml,然后用-f指定,可能更加便捷的自定义安装 RustFS。

本文采用本地安装模式(也就是 Helm Chart 代码在本地),执行如下命令进行安装:

helm install rustfs ./ -n rustfs --create-namespace -f values.yaml

查看 PVC

kubectl -n rustfs get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE>注意事项

安装 DirectPV 的过程中,会对该磁盘上的数据进行格式化,而且该磁盘不能被其他程序占用,否则会出现如下错误:

┌──────────────────────────────────────┬────────────────┬───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ REQUEST_ID │ NODE │ DRIVE │ MESSAGE │ ├──────────────────────────────────────┼────────────────┼───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ e9adb7af-8061-46b1-8112-d86e5fb653cd │ vm-0-17-ubuntu │ vdb │ Failed; unable to format device /dev/vdb; unable to execute command [mkfs.xfs -i maxpct=50 -m uuid=2be5b9cc-beeb-4d54-bbcb-a1cbc5f0ef97 -f -L DIRECTPV /dev/vdb]; output=mkfs.xfs: cannot open /dev/vdb: Device or resource busy │ │ │ │ │ ; error=exit status 1 │ └──────────────────────────────────────┴────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

可以通过将此磁盘umount来解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文科论述深度改写|挑战哲学论述文,“快降重”如何应对思辨文本?

摘要 文科论述,尤其是哲学、社会学文本,强调思辨性和个人化表达,这对降AI率工具是巨大考验。本次,我选用一篇关于“技术哲学”的论述文,其AI特征体现在论证结构的过于工整和例证的刻板。我们看看“快降重”能否触及“思…

SSA-VMD麻雀搜索算法优化变分模态分解+皮尔逊系数+小波阈值降噪+信号重构,MATLAB代码 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于Springcloud的智能社区服务系统vue3 门禁报修缴费停车

文章目录 技术架构概述后端实现要点前端功能实现关键业务流程安全与性能优化部署方案 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 技术架构概述 该系统采用前后端分离架构,后端基于Spring Cloud微…

python 大学生身体健康体检管理系统有ue3

文章目录大学生身体健康体检管理系统(基于UE3)核心功能模块技术实现要点部署方案--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!大学生身体健康体检管理系统(基于UE3&#xff09…

高性价比榜单!2026年值得关注的小程序开发公司大比拼

你是否正在为2026年的业务数字化转型寻找靠谱的小程序开发伙伴?面对市场上众多的服务商,如何选择一家真正省心、靠谱且性价比高的公司,成了许多创业者和企业主的头疼问题。 今天,我们结合行业趋势、客户口碑与服务…

Java毕设选题推荐:基于 SpringBoot+vue的电竞比赛管理系统的设计与实现基于springboot的电竞赛事中心设计系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

python 工商局商家年检管理系统vue3

文章目录工商局商家年检管理系统(Vue3)摘要系统概述核心功能模块技术栈要点代码片段示例(Vue3)扩展性设计--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!工商局商家年…

python便民医疗服务预约系统 微信小程序vue3

文章目录 便民医疗服务预约系统(Python 微信小程序 Vue3)核心功能模块技术栈关键实现部署方案扩展方向 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 便民医疗服务预约系统(…

Java毕设选题推荐:基于springboot的个性化音乐推荐系统基于用户音乐个性化推荐系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

python在线考试系统vue3

文章目录技术栈概述核心功能模块性能优化与扩展性部署方案--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈概述 Python在线考试系统结合Vue3前端框架,通常采用前后端分离架构。后端使用Python的D…

Java毕设选题推荐:基于springboot的手机通话套餐智慧通讯业务办理3D可视化平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

踩坑三天,我终于搞懂了如何让多个AI助手在浏览器里“和平共处“

一次惊心动魄的架构重构 说实话,当我第一次看到 Claude Code CLI、Codex CLI、GitHub Copilot CLI 这些工具的时候,我就在想:能不能把它们都整合到一个 Web 平台上,让用户随时随地通过浏览器就能调用这些 AI 助手? 听…

【计算机毕业设计案例】基于springboot的演出网站订票系统基于SpringBoot+vue的演出购票系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【计算机毕业设计案例】基于JAVA的高校食堂在线点餐系统的设计与实现基于springboot框架的校园食堂外卖点餐系统基于springboot的高校食堂点餐系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【计算机毕业设计案例】基于springboot的智慧物联卡手机卡流量卡通讯业务办理3D可视化平台(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

大数据时代,ETL 如何助力数据挖掘

大数据时代,ETL 如何助力数据挖掘:从“脏数据”到“金矿”的转化密码 一、引言:数据挖掘的“拦路虎”——脏数据与分散数据 1.1 数据挖掘工程师的崩溃瞬间 你有没有遇到过这样的场景? 想做用户行为分析,却发现数据…

地砖屏如何优化展厅空间利用率?

地砖屏 https://www.bmcyzs.com/ 为展厅空间利用带来了革命性的优化思路。它将传统静态的地面转化为一个动态的、可交互的数字界面,打破了展厅设计中地面只能用于行走和承载的传统定式,实现了空间功能在垂直维度上的叠加与融合。 这种多功能整合的核心优…

数学_大鹏_杠上整理_初一(上)_板块02-平面直角坐标系

板块二:平面直角坐标系压轴题 必考20大题型 专题1:点的坐标特征 专题1:点的坐标特征

计算机Java毕设实战-基于springboot的话剧文艺演出网站订票系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

计算机Java毕设实战-基于springboot的电竞赛事中心设计系统基于SpringBoot的电竞赛事购票系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…