作者简介
- 朱唯唯:Juicedata 全栈工程师,JuiceFS CSI Driver 项目维护者,开源爱好者。
- 尹珉:杭州数跑科技运维工程师,KubeSphere 开源社区 Ambassador,KubeSphere 社区用户委员会杭州站站长,云原生爱好者。
JuiceFS 简介
JuiceFS 是为海量数据设计的分布式文件系统,使用对象存储来做数据持久化,避免重复造轮子,还能大大降低工程复杂度,让用户专注解决元数据和访问协议部分的难题。
使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如,Amazon S3),而数据所对应的元数据可以根据场景需要被持久化在 Redis、MySQL、SQLite 等多种数据库中。
KubeSphere 平台介绍
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
KubeSphere 提供了运维友好的向导式操作界面,即便是 Kubernetes 经验并不丰富的用户,也能相对轻松的上手开始管理和使用。它提供了基于 Helm 的应用市场,可以在可视化界面下非常轻松地安装各种 Kubernetes 应用。
本教程将介绍如何在 KubeSphere 中一键部署 JuiceFS CSI Driver,为集群上的各种应用提供数据持久化。
前提条件
- 安装 KubeSphere[1]
- 在 KubeSphere 中启用应用商店[2]
- 准备对象存储
- 创建华为云 OBS[3]
- 创建秘钥[4]
部署 Redis
Redis 是 JuiceFS 架构中的关键组件,它负责存储所有元数据并响应客户端对元数据的操作。所以在部署 JuiceFS CSI Driver 之前,需要先部署一个 Redis 数据库,部署详细步骤可参考 KubeSphere 官方文档[5]。
部署 JuiceFS CSI Driver
KubeSphere 从 v3.2.0 开始新增了 “动态加载应用商店” 的功能,合作伙伴可通过提交 PR 申请将应用的 Helm Chart 集成到 KubeSphere 应用商店,这样 KubeSphere 应用商店即可动态加载应用。目前 JuiceFS CSI Driver 的 Helm Chart 已经通过这种方式集成到了 KubeSphere 的应用商店,用户可以一键将 JuiceFS CSI Driver 部署至 Kubernetes。
首先选择您所需部署的企业空间和项目。

进入项目后,点击“创建”部署新应用。

选择“从应用商店”。

点击目标应用,然后点击“部署”。


修改 backend 参数。

验证服务。

部署有状态应用
创建有状态副本集。

添加自定义名称。

添加容器镜像。

sh,-c,while true; do echo $(date -u) >> /data/out.txt; sleep 5; done

添加存储卷模板。



检查状态。

验证存储卷
首先验证创建的 PVC 绑定状态。
kubectl get pvc -n kubesphere

进入有状态应用检查挂载状态。


登录 OBS 查看文件同步状态。


注意事项
- JuiceFS CSI Driver 安装完成任何 namespace 都可以使用。
- PVC 所属的 Pod 归属在 JuiceFS CSI Driver 的 namespace 中。
- 创建完应用必须进入所声明挂载的文件夹存放数据,远端存储才会同步显示。
