资讯详情

资讯详情

在 Rancher 上部署 JuiceFS CSI Driver:从零搭建 Kubernetes 持久化存储

在 Rancher 上部署 JuiceFS CSI Driver从零搭建 Kubernetes 持久化存储【免费下载链接】juicefsJuiceFS is a distributed POSIX file system built on top of Redis and S3.项目地址: https://gitcode.com/GitHub_Trending/ju/juicefsJuiceFS 是一款基于 Redis 与 S3 等对象存储构建的分布式 POSIX 文件系统其数据与元数据分离的架构天然适合作为 Kubernetes 的共享存储层。本文以 Rancher 图形化管理平台为主线完整演示如何在 Linux 上通过 Docker 安装 Rancher、创建 Kubernetes 集群并借助 Rancher 内置的 Helm 应用市场一键部署 JuiceFS CSI Driver最终为集群中的各类应用提供数据持久化能力。读完本文你将掌握 Rancher 集群的搭建流程、JuiceFS CSI Driver 的图形化安装与参数配置方法以及如何在应用部署中通过 StorageClass 使用 JuiceFS 卷。为什么选择 Rancher JuiceFSRancher 是一款企业级的 Kubernetes 集群管理系统能够在各大云计算平台上快速完成 Kubernetes 集群的部署。它提供基于浏览器的管理界面即便是 Kubernetes 经验有限的用户也能轻松上手。Rancher 默认内置基于 Helm 的应用市场各类 Kubernetes 应用都可以在图形界面下便捷安装。从 JuiceFS 的架构来看参见 架构文档JuiceFS 文件系统由三部分构成负责所有文件 I/O 操作的 JuiceFS 客户端、存储文件数据切块的对象存储如 S3、OSS、MinIO以及保存文件名、大小、权限、目录结构等元数据的元数据引擎如 Redis、TiKV、MySQL、PostgreSQL、SQLite。这种解耦设计使得同一个文件系统可以被集群中任意节点上的多个 Pod 并发访问天然契合 Kubernetes 共享存储的诉求。在 Kubernetes 场景下JuiceFS 官方推荐的接入方式是 JuiceFS CSI Driver它负责在每个工作节点上自动完成 JuiceFS 文件系统的挂载并通过 StorageClass / PVC 机制向 Pod 提供持久化卷。将两者结合即可通过 Rancher 的图形界面完成集群创建 → 应用市场安装 CSI Driver → 应用挂载卷的全流程无需手工编写大量 Helm 命令。安装 RancherRancher 几乎可以安装在所有现代 Linux 发行版上既可以直接安装在操作系统上也可以运行在 Docker、Kubernetes、K3s 或 RKE 之上。无论选择哪种环境安装后都是产品就绪Product-Ready状态。本文选择在 Docker 中安装 Rancher环境要求如下操作系统Linux 系统x86-64 架构内存4GB 及以上Docker19.03 及以上版本执行以下命令安装 Ranchersudo docker run --privileged -d --restartunless-stopped -p 80:80 -p 443:443 rancher/rancher参数说明--privileged以特权模式运行容器Rancher 需要在容器内部创建并管理 Kubernetes 集群-d后台运行--restartunless-stopped除非手动停止否则容器退出后自动重启保证 Rancher 服务长期可用-p 80:80 -p 443:443将容器的 80HTTP与 443HTTPS端口映射到宿主机Rancher 的 Web 管理界面默认通过 HTTPS 提供服务。容器创建完成后在浏览器中访问宿主机的 IP 地址即可打开 Rancher 的管理界面。创建 Kubernetes 集群Rancher 安装完成后可以看到它已经在当前容器内部署了一个 K3s 集群Rancher 自身的相关资源都运行在这个内部 K3s 集群中不过本教程暂时无需关注这个内部集群。接下来开始创建真正的业务 Kubernetes 集群。在欢迎页面的 Cluster集群区域点击Create创建集群。Rancher 支持在各大云计算平台上创建 Kubernetes 集群而这里我们需要直接在 Rancher 所在宿主机上创建集群因此选择Custom自定义方式。随后按照向导填写集群名称并选择 Kubernetes 版本。进入Cluster Options集群选项页面后选择要创建的节点角色如 etcd、Control Plane、Worker然后复制页面生成的注册命令到目标宿主机上执行即可将节点加入集群。集群创建完成后会显示在 Rancher 的集群列表中此时可以进入该集群进行后续操作。一键安装 JuiceFS CSI Driver添加 JuiceFS Chart 仓库在集群列表中点击进入 Kubernetes 集群点击左侧导航菜单展开Apps Marketplace应用与应用市场→Chart RepositoriesChart 仓库点击Create按钮添加 JuiceFS CSI 仓库填写Name名称juicefsIndex URL索引地址https://juicedata.github.io/charts/提交后即可在仓库列表中看到新添加的juicefs仓库。搜索并安装 juicefs-csi-driver从左侧菜单打开Apps Marketplace→Charts应用图表在搜索栏中输入juicefs点击打开juicefs-csi-driver应用详情页。点击应用详情页中的Install按钮默认会安装最新版本也可以点击切换到历史版本进行安装。安装向导分为两步Step 1设置 Namespace命名空间JuiceFS CSI Driver 默认安装到kube-system命名空间这一步无需额外设置。Step 2调整配置参数该页面提供了 YAML 编辑器可以根据实际需求调整 JuiceFS 相关信息。通常情况下只需要修改storageClasses部分其中backend部分用来定义文件系统的后端数据库和对象存储。如果你使用的是已经预先创建好的文件系统即已通过juicefs format命令格式化过的卷那么只需填写metaurl和name两项即可例如... storageClasses: - backend: accessKey: bucket: metaurl: redis://:mypasswdefgh123.redis.rds.aliyuncs.com/1 name: myjfs secretKey: storage: enabled: true name: juicefs-sc reclaimPolicy: Retain ...提示如果你有多个 JuiceFS 文件系统分别需要关联到 Kubernetes 集群中不同的 StorageClass可以在storageClasses数组后面继续追加 StorageClass 配置项注意修改存储类的名称以避免冲突。backend 核心字段解析从 format 命令的实现 可以看出JuiceFS 创建文件系统本质上需要三部分信息元数据引擎地址META-URL、文件系统名称NAME以及对象存储配置这与 CSI Driverbackend中的字段一一对应metaurl元数据引擎地址即juicefs format命令中的META-URL。以 Redis 为例通用格式为redis[s]://[username:password]host[:port]/db详见 元数据引擎配置文档其中方括号内为可选部分。示例redis://:mypasswdefgh123.redis.rds.aliyuncs.com/1表示使用阿里云 Redis 实例的 1 号逻辑数据库密码为mypasswd。若 Redis 开启了 TLS则协议头需使用rediss://。name文件系统名称NAME。从源码看该名称会作为对象存储中所有数据对象的前缀object.WithPrefix(blob, format.Name/)见 cmd/format.go因此同一存储桶下可以安全地共存多个 JuiceFS 文件系统。storage对象存储类型如s3、gs、oss、cos对应juicefs format的--storage参数源码默认值为file本地磁盘。留空时由 CSI Driver 内部决定。bucket对象存储的访问地址对应--bucket参数例如https://myjfs.s3.us-east-2.amazonaws.com。accessKey/secretKey对象存储的认证凭据对应--access-key/--secret-key。如果云服务器实例本身已通过 IAM/RAM 角色获得对象存储读写权限这两个字段可以留空。如果希望 CSI Driver 在集群中自动创建全新的文件系统而不是使用已存在的文件系统则需要在backend中完整填写上述storage、bucket、accessKey、secretKey等字段JuiceFS CSI Driver 会以这些配置为参数执行format完成文件系统的初始化。StorageClass 级配置name: juicefs-scStorageClass 的名称后续应用部署时通过该名称引用 JuiceFS 卷enabled: true启用该 StorageClassreclaimPolicy: RetainPVC 被删除时保留底层文件系统中的数据避免误删导致数据丢失。Kubernetes 的回收策略默认为Delete生产环境建议按需显式指定。配置完成后点击Install等待应用安装完成即可。使用 JuiceFS 持久化数据CSI Driver 安装完成后集群中即存在名为juicefs-sc的 StorageClass。部署应用时只需在存储配置中指定juicefs-sc并创建对应的 PersistentVolumeClaimPVCPod 即可通过 PVC 挂载 JuiceFS 共享存储。与直接在宿主机上挂载 JuiceFS 再通过hostPath提供给 Pod 的方案相比两种方式的取舍详见 在 Kubernetes 上使用 JuiceFSCSI Driver 具备显著优势按需自动挂载每个工作节点上的挂载点由 CSI Driver 按需创建与管理新增节点时无需人工预装挂载点Pod 调度到任何节点都能正常访问挂载点自动恢复即使节点上的 JuiceFS 挂载进程异常退出CSI Driver 也能自动恢复挂载点业务 Pod 无需重建按应用隔离配置可以针对每个 StorageClass / 应用单独调整 JuiceFS 的挂载参数与缓存策略而hostPath方案下所有 Pod 共享宿主机同一挂载点无法做差异化配置资源受控CSI Driver 将挂载进程作为 Kubernetes 管理的容器运行CPU、内存等资源占用由 Kubernetes 统一调度不会出现宿主机资源被挂载进程无限抢占的情况。总结本文完整走通了安装 Rancher → 创建 Kubernetes 集群 → 应用市场一键安装 JuiceFS CSI Driver → 应用挂载 JuiceFS 持久化卷的完整链路。整个过程完全在 Rancher 的图形界面中完成不需要手工编写复杂的 Helm 命令。部署完成后集群中的应用即可获得一个由对象存储提供容量、由 Redis 等数据库承载元数据、具备 POSIX 语义的分布式共享文件系统为无状态应用之外的数据库、消息队列等有状态工作负载提供坚实的数据持久化底座。如果想进一步了解 JuiceFS 在 Kubernetes 之外的接入方式如 FUSE 挂载、S3 Gateway、WebDAV可参阅 独立模式快速上手 与 S3 Gateway 指南若需了解元数据引擎与对象存储的完整选型与配置可分别参考 元数据引擎配置 与 对象存储配置。【免费下载链接】juicefsJuiceFS is a distributed POSIX file system built on top of Redis and S3.项目地址: https://gitcode.com/GitHub_Trending/ju/juicefs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →