摘要:在边缘计算场景中,资源受限、网络不稳定是常态,庞大的云原生套件往往“水土不服”。本文将介绍如何将轻量级Kubernetes发行版K3s与Rust编写的开源对象存储RustFS相结合,打造一个兼具弹性、轻量和S3兼容性的边缘云原生存储解决方案。
一、 缘起:边缘场景下的存储挑战
随着物联网和边缘计算的蓬勃发展,计算能力正不断下沉到靠近数据源的边缘节点。然而,边缘环境通常具有以下特点:- 资源有限:CPU、内存、存储空间远不如数据中心。
- 网络不稳定:与中心云的网络连接时延高、带宽小甚至可能中断。
- 运维困难:节点分散,难以进行大规模的集中运维。
二、 技术选型:为何是K3s与RustFS?
1. K3s:为边缘而生的K8s发行版K3s是一款经CNCF一致性认证的Kubernetes发行版,它通过以下方式实现了“瘦身”:- 将K8s所需的所有组件打包成一个不到100MB的二进制文件。
- 使用sqlite3替代etcd作为默认存储后端,简化了部署。
- 大幅简化了安装和运维流程,一条命令即可完成集群搭建。
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
kubectl get nodes即可查看轻量而强大的K3s集群。 2. RustFS:MinIO的Rust平替方案RustFS是一个用Rust编写的开源分布式对象存储系统,其核心优势包括:
- 完全兼容S3协议:现有基于S3 API的应用可以无缝迁移。
- 性能与安全:Rust语言天生具备内存安全和高性能特性。
- 部署灵活:支持源码、二进制、Docker及Helm Chart多种方式安装,完美契合云原生生态。
三、 实战:在K3s上部署RustFS
下面我们一步步地将RustFS部署到K3s集群中。 步骤一:准备工作——配置本地存储 K3s默认集成了Rancher开发的local-path-provisioner,它能够将节点上的本地路径动态提供为PV(持久化卷)。这正是边缘场景下利用本地磁盘的理想方案。
# 安装local-path-provisioner kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.32/deploy/local-path-storage.yaml# 查看确认StorageClass已就绪 kubectl get sc
local-path已成为默认的StorageClass:
NAME PROVISIONER RECLAIMPOLICY ... local-path (default) rancher.io/local-path Delete ...
git clone git@github.com:rustfs/rustfs.git cd rustfs
values.yaml文件中的关键参数,例如资源限制、PVC大小和StorageClass。
# values.yaml 关键配置示例 storageclass:name: local-path # 使用我们刚刚确认的StorageClasssize: 256Mi # 根据你的磁盘空间调整# 默认用户名和密码(生产环境请务必修改!) auth:username: "rustfsadmin"password: "rustfsadmin"
# 使用Traefik Ingress helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="traefik"
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 ...NAME STATUS VOLUME... CAPACITY ... persistentvolumeclaim/data-rustfs-0... Bound pvc-xxx 256Mi ... ...NAME CLASS HOSTS ADDRESS PORTS AGE ingress/rustfs traefik your.rustfs.com 10.0.0.4 80,443 30m
四、 初体验:登录RustFS控制台
当所有Pod都处于Running状态后,即可通过Ingress地址访问RustFS。你需要将本地DNS(如修改hosts文件)指向K3s节点的IP,使得 your.rustfs.com能够解析。 在浏览器中输入 https://your.rustfs.com,使用预设的用户名和密码(本例中为 rustfsadmin/ rustfsadmin)登录。

五、 总结
通过本文的实践,我们成功地在边缘友好的K3s集群上部署了轻量级的S3兼容存储方案RustFS。这个组合方案具有以下显著优势:- 极简架构:K3s和RustFS都秉承了“小而美”的理念,资源占用低,启动速度快。
- 开箱即用:基于Helm Chart的部署方式极大简化了运维成本。
- 标准兼容:完全兼容Kubernetes生态和S3 API,现有应用无需改造即可接入。
- 边缘优化:利用本地存储,不依赖高速网络,非常适合边缘和轻量级私有云场景。