K3s x RustFS,边缘场景下的云原生存储解决之道

news/2025/10/30 10:00:10/文章来源:https://www.cnblogs.com/rustfs/p/19176021

本文分享使用 Helm Chart 在 K3s 上安装 RustFS。使用 K3s local-path-provisioner 来将本地磁盘转换诶 PVC,再将 PVC 当作 RustFS VOLUME,从而搭建 RustFS 多机多盘集群。

关于 RustFS

RustFS 是一个用 Rust 编写的开源分布式对象存储系统,完全兼容 S3,可作为 minio 的平替。支持多种安装方式:源码编译、二进制、Docker 以及 Helm Chart。K3s 和 RustFS 相结合,能够作为边缘场景的云原生存储解决方案。

k3s 的安装

k3s 是经 CNCF 一致性认证的 Kubernetes 发行版,专为物联网及边缘计算而设计。简言之,k3s 是一个轻量级的 Kubernetes 发行版。

k3s 的安装非常简单,对于国内用户来讲,执行如下命令可以加速 k3s 的安装:

$ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.28.5+k3s1 as release
[INFO]  Downloading hash rancher-mirror.rancher.cn/k3s/v1.28.5-k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary rancher-mirror.rancher.cn/k3s/v1.28.5-k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping installation of SELinux RPM
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
sh: 1014: restorecon: not found
sh: 1015: restorecon: not found
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s

接着可以查看 k3s 是否安装成功:

#查看 k3s 版本
$ k3s --version
k3s version v1.33.4+k3s1 (148243c4)
go version go1.24.5# 查看 k3s 集群$ kubectl get nodes
NAME             STATUS   ROLES                  AGE    VERSION
vm-0-12-ubuntu   Ready    control-plane,master   135m   v1.33.4+k3s1

安装 RustFS

使用 RustFS Helm Chart来在 K3s 上进行安装。克隆此仓库到本地:

$ git clone git@github.com:rustfs/rustfs.git

整个目录结构如下:

├── Chart.yaml
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── configmap.yaml
│   ├── ingress.yaml
│   ├── secret-tls.yaml
│   ├── secret.yaml
│   ├── service.yaml
│   ├── serviceaccount.yaml
│   ├── statefulset.yaml
│   └── tests
│       └── test-connection.yaml
├── tls
│   ├── tls.crt
│   └── tls.key
└── values.yaml

当前 RustFS helm chart 是多机多盘(MNMD)模式,支持 4 个 pod,每个 pod 4 个 volume 以及 16 个 pod,每个 pod 一个 volume 的安装方式。默认为 4 个 pod 模式(也是推荐模式)。

根据自身需要对 values.yaml 中的参数进行修改,比如 CPU、Memory 的请求限制、PVC 的大小、StorageClass 的名称、Ingress 信息等。

由于在 K3s 上是通过 PVC 来当作 RustFS 实例所用到的 VOLUME,所以使用了 Rancher 自研的 local-path-provisioner来将本地磁盘转换为 StorageClass,执行官方推荐的安装命令安装即可:

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.32/deploy/local-path-storage.yaml

然后查看 storageclass:

kubectl  get sc
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  149m

因此,在 values.yaml 文件中增加 PVC 内容:

storageclass:
name: local-path
size: 256Mi

然后执行 helm install 进行安装即可。

对于 traefki ingressclass,执行如下命令:

helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="traefik"

K3s 默认安装了 traefik,因此 traefik 默认为 ingressclass。

对于 nginx ingressclass,执行如下命令:

helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="nginx"

返回如下:

NAME: rustfs
LAST DEPLOYED: Tue Sep 16 07:20:59 2025
NAMESPACE: rustfs
STATUS: deployed
REVISION: 1
NOTES:1. Get the application URL by running these commands:http://your.rustfs.com/

查看 pod,pvc,ingres,svc 等资源:

kubectl -n rustfs get pods,pvc,ingress,svc
NAME           READY   STATUS    RESTARTS   AGE
pod/rustfs-0   1/1     Running   0          88m
pod/rustfs-1   1/1     Running   0          92m
pod/rustfs-2   1/1     Running   0          96m
pod/rustfs-3   1/1     Running   0          101mNAME                                           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
persistentvolumeclaim/data-rustfs-0-rustfs-0   Bound    pvc-5ff16d6f-217e-4e05-b553-0c9245aa8dfb   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-0-rustfs-1   Bound    pvc-665927f9-5bbb-4866-87ac-c4254e32cf11   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-0-rustfs-2   Bound    pvc-595df1fe-2196-4174-9e52-eeed6a705284   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-0-rustfs-3   Bound    pvc-480b6848-4cb0-416f-8e88-137ebec4e035   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-1-rustfs-0   Bound    pvc-0a7cc385-0378-486a-83f7-db883fe1e29d   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-1-rustfs-1   Bound    pvc-f304ed03-0967-4e62-b8cd-fdb2525b1018   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-1-rustfs-2   Bound    pvc-cf9d3539-b5a1-4e7e-95c0-a2cf99e57bc5   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-1-rustfs-3   Bound    pvc-9caaf98c-faee-444d-9e2c-a377aafb9fb9   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-2-rustfs-0   Bound    pvc-8ea082b2-ba9f-4cd6-9866-866ed541697f   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-2-rustfs-1   Bound    pvc-e7c69318-2648-4722-964e-cc89b798c191   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-2-rustfs-2   Bound    pvc-883e9eba-1038-4789-b7fc-731f6becf794   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-2-rustfs-3   Bound    pvc-ac8be1b7-ed72-4994-b5a5-87ef2fefcfd2   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-3-rustfs-0   Bound    pvc-1d80e06a-91a7-4e64-8f3f-aaadaf576bb9   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-3-rustfs-1   Bound    pvc-f3bca979-bec3-49fa-92d7-44c45560c94b   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-3-rustfs-2   Bound    pvc-ad3a9d90-db72-49d1-b372-0f321869f7a5   256Mi      RWO            local-path     <unset>                 145m
persistentvolumeclaim/data-rustfs-3-rustfs-3   Bound    pvc-fbf06576-873b-46d7-b084-c0a71ed324fe   256Mi      RWO            local-path     <unset>                 145mNAME                               CLASS     HOSTS              ADDRESS    PORTS     AGE
ingress.networking.k8s.io/rustfs   traefik   your.rustfs.com    10.0.0.4   80, 443   30mNAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
service/rustfs-headless   ClusterIP   None            <none>        80/TCP,9001/TCP   108m
service/rustfs-svc        ClusterIP   10.43.240.116   <none>        80/TCP,9001/TCP   108m

等待所有资源都处于 Ready 状态就可以登录 RustFS 了。

登录 RustFS

可以使用默认用户名和密码来登录 RustFS 实例。默认用户名和密码都写在了 values.yaml 中,并通过 secret 的方式以环境变量的形式注入到了 Pod 中。本次安装指定的默认用户名和密码均为 rustfsadmin。因此使用该用户名和密码,在浏览器中输入 Ingress 的地址 https://your.rustfs.com 即可看到 RustFS 的登录页面:

rustfs-console-login.png

接着就可以来创建存储桶、对象等使用 RustFS。详细使用,可以查看 RustFS 官方文档。

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

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

相关文章

2025年10月进度管理工具推荐:信创适配进度系统排名榜

项目进度失控、跨部门信息断层、交付节点频繁延期,是当下大中型企业在推进复杂研发与多项目并行时最常见的痛点。随着信创政策持续深化,国产化、可定制、能闭环的进度管理工具成为CIO与PMO选型清单里的“硬指标”。艾…

2025-10-29 ZR-J 模拟赛 赛后总结【ZR】

T1 被神秘数据 hack 了挂了 20pts。 T3 想到了真真假假假假真真做法。结果挂完了。 80+100+0+0。 T1 No Problem 题意 有一个 \(n \times m\) 的教室,每个人会和自己周围八个方向的人握手。 如果还有空位, 老师会挑一…

2025年热门的上海行星式搅拌机设备行业内口碑厂家排行榜

2025年热门的上海行星式搅拌机设备行业内口碑厂家排行榜 随着精细化工、新材料、新能源等行业的快速发展,行星式搅拌机作为高效混合、分散、研磨的核心设备,市场需求持续增长。上海作为中国高端装备制造的重要基地,…

阿里云 OSS postObject V4 使用

阿里云 OSS postObject V4 使用背景 类似预签名的方式,后端生成了签名和policy, 前端使用表单提交。 提示 如果可以,尽量使用简单的方式,比如前端用accessKeyId+accessKeySecret 的方式直接putObject.但这种方法会暴…

2025年10月武汉离婚律师推荐榜:五强对比评测与选择指南

在婚姻登记机关公布的2023年武汉市离婚登记量4.1万对、同比上升7.4%的背景下,协议不成转而寻求诉讼代理的当事人逐年增多。对首次面对财产分割、抚养权争夺、债务划分的当事人而言,如何迅速锁定既懂婚姻家事又熟悉本…

用筛选过滤器修改京东界面名字

1.打开京东页面 2.打开fidder选择规则—自动断点—在返回之后 3.刷新京东页面,打开fidder—filters—选择use filters—图1—图2—action(第一个选项) 4.右侧找到www.jd.com(双击)—title改为百度

2025年靠谱的精冲工艺座椅齿板厂家最新TOP排行榜

2025年靠谱的精冲工艺座椅齿板厂家最新TOP排行榜精冲工艺座椅齿板行业概述精冲工艺作为现代制造业中的一项关键技术,采用精密冲裁的生产方式取代了部分传统的机加工、锻造、铸造、粉末冶金等工艺,大幅降低了生产成本…

修改京东商城官网title为百度商城

filters打开Use Fiters,勾选breakpoints中break response on content-type,后面输入text/html——规则选择在返回后断点——打开关官网 在主机地址中找到www.jd.com,点击actions,双击后在语法查看中找到title标签修改…

springboot+vue图书借阅管理专业的系统设计(源码+文档+调试+基础修改+答疑)

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

2025 年散热器厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析及多领域适配能力储能液冷/锂电/铜管串铝翅片散热器公司推荐

引言 在工业升级与新兴领域快速发展的当下,散热器作为保障设备稳定运行的关键部件,其品质与性能直接关系到机械、电子、新能源等众多行业的生产效率与安全。当前市场上散热器厂商数量众多,产品质量参差不齐,部分厂…

图纸安全外发策略,保障企业知识产权与市场竞争力

在当今竞争激烈的市场环境中,图纸安全外发的重要性日益凸显。企业必须意识到,设计资料的外发不仅涉及业务的正常运作,更关乎知识产权的保护与市场竞争力的维持。一旦设计图纸泄露,竞争对手可能迅速获取企业的核心技…

101超酷!用Python写回文音乐,3步搞定你的MIDI创作处女作

101超酷!用Python写回文音乐,3步搞定你的MIDI创作处女作$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");回环诗_旋律模进_开嗓音频生成_sequence 回忆上次…

ctf简单出题流程

ctf简单出题流程 文件介绍 indexsrc 写一些题目的文件index.phpdockerfile 首先肯定是要安装好Docker的 Docker的流程网上有,这里就不再追述了 首先可以查看镜像 sudo docker images文件创建 我们可以在我们的/app…

2025年口碑好的连体雨衣厂家最新用户好评榜

2025年口碑好的连体雨衣厂家最新用户好评榜在当今快节奏的生活中,连体雨衣已成为户外工作者、骑行爱好者、建筑工人等群体的必备防护装备。随着消费者对产品质量和功能要求的不断提高,市场上涌现出一批以优质产品和卓…

体素化

from OCC.Core.STEPControl import STEPControl_Reader from OCC.Core.IFSelect import IFSelect_RetDone from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox, BRepPrimAPI_MakeCylinder from OCC.Core._BRepBndL…

2025年口碑好的四方立绒厂家推荐及选择指南

2025年口碑好的四方立绒厂家推荐及选择指南 四方立绒作为一种高档纺织面料,广泛应用于服装、家纺、装饰等领域,其柔软细腻的触感和优异的保暖性能深受市场青睐。随着消费者对品质要求的提升,选择一家口碑好、实力强…

吃数篇 酉鸡

做何呢?吃数篇 酉鸡 q:为什么不从day -2 开始写? a:懒。 其实总是会有一些想做的事因为各种各样原因没做。 不扯了,想看去鲜花吧(虽然目前没有,顺带一提,它没有也是这个原因)。 简单回顾day -2: 上午:赤石。 …

2025年十大哈尔滨工伤纠纷律师事务所哪家强

2025年十大哈尔滨工伤纠纷律师事务所哪家强在工伤纠纷领域,专业法律服务的需求日益增长。哈尔滨作为黑龙江省会城市,拥有众多专业律师事务所,为工伤受害者提供法律支持。工伤案件涉及复杂的法律程序和赔偿标准,选择…

Web信息的物联网设备指纹如何生成

当你家里的智能摄像头、路由器或者智能音箱连接到互联网时,它们是如何被准确识别出来的?就像每个人都有独一无二的指纹一样,物联网设备也有自己的“数字指纹”,帮助网络系统区分不同的设备。那么,Web信息的物联网…

跨网文件传输是什么?主要有哪几种应用场景?

跨网文件传输是现代信息技术中一个不可或缺的组成部分。它使得在不同网络环境之间,可以安全且高效地交换文件,满足了各行业对数据交换的迫切需求。无论是企业研发与办公网络之间的数据共享,还是金融行业对客户信息的…