找回密码
 立即注册
首页 业界区 安全 K3s x RustFS,边缘场景下的云原生存储解决之道 ...

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

坏级尹 昨天 10:25
本文分享使用 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 的安装:
  1. $ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  2. [INFO]  Finding release for channel stable
  3. [INFO]  Using v1.28.5+k3s1 as release
  4. [INFO]  Downloading hash rancher-mirror.rancher.cn/k3s/v1.28.5-k3s1/sha256sum-amd64.txt
  5. [INFO]  Downloading binary rancher-mirror.rancher.cn/k3s/v1.28.5-k3s1/k3s
  6. [INFO]  Verifying binary download
  7. [INFO]  Installing k3s to /usr/local/bin/k3s
  8. [INFO]  Skipping installation of SELinux RPM
  9. [INFO]  Creating /usr/local/bin/kubectl symlink to k3s
  10. [INFO]  Creating /usr/local/bin/crictl symlink to k3s
  11. [INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
  12. [INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
  13. [INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
  14. [INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
  15. [INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
  16. sh: 1014: restorecon: not found
  17. sh: 1015: restorecon: not found
  18. [INFO]  systemd: Enabling k3s unit
  19. Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
  20. [INFO]  systemd: Starting k3s
复制代码
接着可以查看 k3s 是否安装成功:
  1. #查看 k3s 版本
  2. $ k3s --version
  3. k3s version v1.33.4+k3s1 (148243c4)
  4. go version go1.24.5
  5. # 查看 k3s 集群
  6. $ kubectl get nodes
  7. NAME             STATUS   ROLES                  AGE    VERSION
  8. vm-0-12-ubuntu   Ready    control-plane,master   135m   v1.33.4+k3s1
复制代码
安装 RustFS

使用 RustFS Helm Chart来在 K3s 上进行安装。克隆此仓库到本地:
  1. $ git clone git@github.com:rustfs/rustfs.git
复制代码
整个目录结构如下:
  1. ├── Chart.yaml
  2. ├── templates
  3. │   ├── NOTES.txt
  4. │   ├── _helpers.tpl
  5. │   ├── configmap.yaml
  6. │   ├── ingress.yaml
  7. │   ├── secret-tls.yaml
  8. │   ├── secret.yaml
  9. │   ├── service.yaml
  10. │   ├── serviceaccount.yaml
  11. │   ├── statefulset.yaml
  12. │   └── tests
  13. │       └── test-connection.yaml
  14. ├── tls
  15. │   ├── tls.crt
  16. │   └── tls.key
  17. └── 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,执行官方推荐的安装命令安装即可:
  1. kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.32/deploy/local-path-storage.yaml
复制代码
然后查看 storageclass:
  1. kubectl  get sc
  2. NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
  3. local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  149m
复制代码
因此,在 values.yaml 文件中增加 PVC 内容:
  1. storageclass:
  2. name: local-path
  3. size: 256Mi
复制代码
然后执行 helm install 进行安装即可。
对于 traefki ingressclass,执行如下命令:
  1. helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="traefik"
复制代码
K3s 默认安装了 traefik,因此 traefik 默认为 ingressclass。
对于 nginx ingressclass,执行如下命令:
  1. helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="nginx"
复制代码
返回如下:
  1. NAME: rustfs
  2. LAST DEPLOYED: Tue Sep 16 07:20:59 2025
  3. NAMESPACE: rustfs
  4. STATUS: deployed
  5. REVISION: 1
  6. NOTES:
  7. 1. Get the application URL by running these commands:
  8.    http://your.rustfs.com/
复制代码
查看 pod,pvc,ingres,svc 等资源:
  1. kubectl -n rustfs get pods,pvc,ingress,svc
  2. NAME           READY   STATUS    RESTARTS   AGE
  3. pod/rustfs-0   1/1     Running   0          88m
  4. pod/rustfs-1   1/1     Running   0          92m
  5. pod/rustfs-2   1/1     Running   0          96m
  6. pod/rustfs-3   1/1     Running   0          101m
  7. NAME                                           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
  8. persistentvolumeclaim/data-rustfs-0-rustfs-0   Bound    pvc-5ff16d6f-217e-4e05-b553-0c9245aa8dfb   256Mi      RWO            local-path     <unset>                 145m
  9. persistentvolumeclaim/data-rustfs-0-rustfs-1   Bound    pvc-665927f9-5bbb-4866-87ac-c4254e32cf11   256Mi      RWO            local-path     <unset>                 145m
  10. persistentvolumeclaim/data-rustfs-0-rustfs-2   Bound    pvc-595df1fe-2196-4174-9e52-eeed6a705284   256Mi      RWO            local-path     <unset>                 145m
  11. persistentvolumeclaim/data-rustfs-0-rustfs-3   Bound    pvc-480b6848-4cb0-416f-8e88-137ebec4e035   256Mi      RWO            local-path     <unset>                 145m
  12. persistentvolumeclaim/data-rustfs-1-rustfs-0   Bound    pvc-0a7cc385-0378-486a-83f7-db883fe1e29d   256Mi      RWO            local-path     <unset>                 145m
  13. persistentvolumeclaim/data-rustfs-1-rustfs-1   Bound    pvc-f304ed03-0967-4e62-b8cd-fdb2525b1018   256Mi      RWO            local-path     <unset>                 145m
  14. persistentvolumeclaim/data-rustfs-1-rustfs-2   Bound    pvc-cf9d3539-b5a1-4e7e-95c0-a2cf99e57bc5   256Mi      RWO            local-path     <unset>                 145m
  15. persistentvolumeclaim/data-rustfs-1-rustfs-3   Bound    pvc-9caaf98c-faee-444d-9e2c-a377aafb9fb9   256Mi      RWO            local-path     <unset>                 145m
  16. persistentvolumeclaim/data-rustfs-2-rustfs-0   Bound    pvc-8ea082b2-ba9f-4cd6-9866-866ed541697f   256Mi      RWO            local-path     <unset>                 145m
  17. persistentvolumeclaim/data-rustfs-2-rustfs-1   Bound    pvc-e7c69318-2648-4722-964e-cc89b798c191   256Mi      RWO            local-path     <unset>                 145m
  18. persistentvolumeclaim/data-rustfs-2-rustfs-2   Bound    pvc-883e9eba-1038-4789-b7fc-731f6becf794   256Mi      RWO            local-path     <unset>                 145m
  19. persistentvolumeclaim/data-rustfs-2-rustfs-3   Bound    pvc-ac8be1b7-ed72-4994-b5a5-87ef2fefcfd2   256Mi      RWO            local-path     <unset>                 145m
  20. persistentvolumeclaim/data-rustfs-3-rustfs-0   Bound    pvc-1d80e06a-91a7-4e64-8f3f-aaadaf576bb9   256Mi      RWO            local-path     <unset>                 145m
  21. persistentvolumeclaim/data-rustfs-3-rustfs-1   Bound    pvc-f3bca979-bec3-49fa-92d7-44c45560c94b   256Mi      RWO            local-path     <unset>                 145m
  22. persistentvolumeclaim/data-rustfs-3-rustfs-2   Bound    pvc-ad3a9d90-db72-49d1-b372-0f321869f7a5   256Mi      RWO            local-path     <unset>                 145m
  23. persistentvolumeclaim/data-rustfs-3-rustfs-3   Bound    pvc-fbf06576-873b-46d7-b084-c0a71ed324fe   256Mi      RWO            local-path     <unset>                 145m
  24. NAME                               CLASS     HOSTS              ADDRESS    PORTS     AGE
  25. ingress.networking.k8s.io/rustfs   traefik   your.rustfs.com    10.0.0.4   80, 443   30m
  26. NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
  27. service/rustfs-headless   ClusterIP   None            <none>        80/TCP,9001/TCP   108m
  28. 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 的登录页面:
1.png

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册