缓存管理自动化:JuiceFS 企业版 Cache Group Operator 新特性发布

近期,JuiceFS 企业版推出了 Cache Group Operator,用于自动化创建和管理缓存组集群。Operator 是一种简化 Kubernetes 应用管理的工具,它能够自动化应用程序的生命周期管理任务,使部署、扩展和运维更加高效。

在推出 Operator 之前,我们曾通过 StatefulSet 或 DaemonSet 的方式为用户提供缓存组创建功能,但用户在使用这种方式时存在以下不便之处:

  • 节点配置不灵活:无法在同一集群内针对不同节点类型或资源(如挂载参数、缓存组权重、缓存盘等)进行单独配置;
  • 手动管理节点:需要依赖人工监控并手动添加或移除节点,操作繁琐且易出错;
  • 缓存清理不自动化:缓存清理需手动执行,缺乏自动化支持。

为了解决这些问题,JuiceFS 推出了 Cache Group Operator,提供以下功能:

  • 在同一集群中配置不同的节点类型和资源,满足不同的节点的需求;
  • 支持平滑添加或移除节点,尽可能减小加减节点期间缓存命中率波动;
  • 自动缓存清理;
  • 通过 UI 的形式可视化管理缓存组集群。

01 如何使用 Operator

安装 Operator

首先,添加 JuiceFS Helm 仓库并更新:

helm repo add juicefs https://juicedata.github.io/charts/
helm repo update

使用 Helm 安装 JuiceFS Cache Group Operator:

helm upgrade --install juicefs-cache-group-operator juicefs/juicefs-cache-group-operator -n juicefs-cache-group --create-namespace

用户可以使用 kubectl wait 等待 Operator 准备就绪:

kubectl wait -n juicefs-cache-group --for=condition=Available=true --timeout=120s deployment/juicefs-cache-group-operator

创建缓存组集群

apiVersion: v1
kind: Secret
metadata:name: juicefs-secretnamespace: juicefs-cache-group
type: Opaque
stringData:name: juicefs-xxtoken: xxaccess-key: xxsecret-key: xx
---
apiVersion: juicefs.io/v1
kind: CacheGroup
metadata:name: cachegroup-samplenamespace: juicefs-cache-group
spec:secretRef:name: juicefs-secretworker:template:nodeSelector:juicefs.io/cg-worker: "true"image: juicedata/mount:ee-5.1.1-1faf43bopts:- group-weight=100resources:requests:cpu: 100mmemory: 128Milimits:cpu: 1memory: 1Gi

我们给需要节点添加如下标签,即可添加一个缓存组节点

kubectl label node node1 juicefs.io/cg-worker=true

缓存节点可能存在异构的配置(例如缓存盘的大小不一样),此时可以通过 spec.worker.overwrite 字段来为不同的节点指定不同的配置:

apiVersion: juicefs.io/v1
kind: CacheGroup
metadata:name: cachegroup-sample
spec:worker:template:nodeSelector:juicefs.io/cg-worker: "true"image: juicedata/mount:ee-5.1.1-1faf43bhostNetwork: truecacheDirs:- path: /var/jfsCache-0type: HostPathopts:- group-weight=100# 单位 MiB- cache-size=2048overwrite:- nodes:- k8s-03# 也可以使用 nodeSelector# nodeSelector:#   kubernetes.io/hostname: k8s-02opts:# 单位 MiB- cache-size=1024- group-weight=50cacheDirs:- path: /var/jfsCache-1type: HostPath- path: /var/jfsCache-2type: HostPath

获取缓存组状态

$ kubectl get cachegroupsNAME                CACHE GROUP NAME                        PHASE   READY   AGE
cachegroup-sample   juicefs-cache-group-cachegroup-sample   Ready   1/1     10s

当 phase 状态变为 Ready 时,表示缓存组已成功创建。接下来,用户可以在客户端上添加挂载参数,以开始使用缓存组:

juicefs mount xx -o cache-group=juicefs-cache-group-cachegroup-sample,no-sharing

平滑增删节点

当节点发生变更时,缓存组 Operator 会以平滑的形式增删节点,具体逻辑如下:

  • 当新增节点时,缓存组 Operator 会自动创建新的 Worker Pod,并添加 group-backup 挂载参数。如果新的 Worker Pod 接收到应用请求,并且发现缓存未命中,这个 Worker Pod 会将请求转发给其它缓存节点,确保缓存可以命中。默认 10 分钟后,group-backup 挂载参数会被移除掉,可以通过 spec.backupDuration 来控制默认时间:

    apiVersion: juicefs.io/v1
    kind: CacheGroup
    metadata:name: cachegroup-sample
    spec:backupDuration: 10m
    
  • 当移除节点时,缓存组 Operator 会先尝试将节点上的缓存数据迁移到其它节点,然后再删除节点。最长等待数据迁移时间默认为 1 小时,可以通过 spec.waitingDeletedMaxDuration 来控制默认时间:

    apiVersion: juicefs.io/v1
    kind: CacheGroup
    metadata:name: cachegroup-sample
    spec:waitingDeletedMaxDuration: 1h
    

02 在 CSI Dashboard 中使用

安装完成后,用户可以通过 JuiceFS CSI Dashboard 轻松查看和管理缓存组集群。Dashboard 提供了直观的界面,帮助实时监控缓存组的运行状态,灵活添加或移除缓存节点,并详细查看缓存的使用情况。

通过 Dashboard 管理缓存组集群

  1. 添加/移除缓存节点

2.查看缓存使用情况

3.预热缓存组集群

通过点击添加节点的旁边的「预热」按钮对缓存组进行预热。你可以通过调整下面的参数来实现自定义的目的,例如默认会对整个文件系统进行预热,可以调整 subpath 对指定目录进行预热。

有关 JuiceFS Cache Group Operator 的更多详细信息,请参考官方文档:

JuiceFS Cache Group Operator 文档

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

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

相关文章

Wireshark和科来网络分析系统

Wireshark 是一款功能强大的网络协议分析工具,主要用于捕获和分析网络流量,帮助用户排查网络问题、进行安全分析和学习网络协议。以下是 Wireshark 的基础使用指南: 1. 安装 Wireshark 访问 Wireshark 官网 下载并安装适合你操作系统的版本…

无穿戴动作捕捉系统技术解密及多元化运用

在当今科技飞速发展的时代,动作捕捉技术不断革新,无穿戴动作捕捉系统崭露头角。与传统粘贴标记点的动作捕捉技术相比,无标记点动作捕捉技术具有显著优势。它能够在确保高精度捕捉的前提下,以非接触的方式极大地提升被捕捉对象的表…

GPT分区 使用parted标准分区划分,以及相邻分区扩容

parted 是一个功能强大的命令行工具,用于创建和管理磁盘分区表和分区。它支持多种分区表类型,如 MBR(msdos)、GPT(GUID Partition Table)等,并且可以处理大容量磁盘。parted 提供了一个交互式界…

DevOps工程技术价值流:Ansible自动化与Semaphore集成

在DevOps的浪潮中,自动化运维工具扮演着举足轻重的角色。Ansible,作为一款新兴的自动化运维工具,凭借其强大的功能和灵活性,在运维领域迅速崭露头角。本文将深入探讨Ansible的特点、架构、工作原理,以及其应用场景&…

2025元旦源码免费送

我们常常在当下感到时间慢,觉得未来遥远,但一旦回头看,时间已经悄然流逝。对于未来,尽管如此,也应该保持一种从容的态度,相信未来仍有许多可能性等待着我们。 免费获取源码。 更多内容敬请期待。如有需要可…

嵌入式开发中的机器人表情绘制

机器人的表情有两种,一种是贴图,一钟是调用图形API自绘。 贴图效果相对比较好,在存储空间大的情况下是可以采用的。 自绘比较麻烦,但在资源和空缺少的情况下,也是很有用的。而且自绘很容易通过调整参数加入随机效果&…

leetcode108:将有序数组转化为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确…

01-2023年上半年软件设计师考试java真题解析

1.真题内容 在某系统中,类 Interval(间隔) 代表由下界(lower bound(边界))上界(upper bound )定义的区间。 要求采用不同的格式显示区间范围。 如[lower bound , upper bound ]、[ lower bound … upper bound ]、[ lower bou nd - upper bound &#x…

svn分支相关操作(小乌龟操作版)

在开发工作中进行分支开发,涉及新建分支,分支切换,合并分支等 新建远程分支 右键选择branch/tagert按钮 命名分支的路径名称 点击确定后远程分支就会生成一个当时命名的文件夹(开发分支) 分支切换 一般在开发阶段&a…

【每日学点鸿蒙知识】模拟器开启网络、长时任务、兼容性测试支持、丢帧定位、SO中访问rawfile等

1、模拟器如何开启网络? 模拟器使用的是电脑本身的网络,不通过代理即可访问网络。 2、创建子window后,锁屏很短时间内,应用会被杀死? 没开长时任务,锁屏和退后台保活要开长时任务。 应用退至后台后&…

Python中PDF转Word的技术

Python PDF转Word技术概述 在日常办公和数据处理中,经常需要将PDF文档转换为Word文档,以便进行编辑、修改或格式调整。Python作为一种强大的编程语言,提供了多种库和工具来实现这一功能。以下是对Python中PDF转Word技术的详细介绍。 一、技…

功率器件热设计基础(四)——功率半导体芯片温度和测试方法

/ 前言 / 功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计基础知识,才能完成精确热设计,提高功率器件的利用率,降低系统成本,并保证系统的可靠性。 功率器件热设计基础系列文章会…

Kafka消息不丢失与重复消费问题解决方案总结

1. 生产者层面 异步发送与回调处理 异步发送方式:生产者一般使用异步方式发送消息,异步发送有消息和回调接口两个参数。在回调接口的重写方法中,可通过异常参数判断消息发送状态。若消息发送成功,异常参数为null;若发…

linux-centos-安装miniconda3

参考: 最新保姆级Linux下安装与使用conda:从下载配置到使用全流程_linux conda-CSDN博客 https://blog.csdn.net/qq_51566832/article/details/144113661 Linux上删除Anaconda或Miniconda的步骤_linux 删除anaconda-CSDN博客 https://blog.csdn.net/m0_…

【每日学点鸿蒙知识】Taro、native层获取文件宽度、位置变化callback、数据迁移、oh_modules说明等

1、Taro开发HarmonyOS NEXT有相应的开发文档吗? Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿蒙单内核系统里,在Taro H5平台的基础上,基于原生壳工程的jsbridge能力,扩展H5平台不支持的小程序Api能力&#xf…

pycharm+anaconda创建项目

pycharmanaconda创建项目 安装: Windows下PythonPyCharm的安装步骤及PyCharm的使用-CSDN博客 详细Anaconda安装配置环境创建教程-CSDN博客 创建项目: 开始尝试新建一个项目吧! 选择好项目建设的文件夹 我的项目命名为:pyth…

前端(九)js介绍(2)

js介绍(2) 文章目录 js介绍(2)一、函数1.1函数的两种形式1.2函数的作用域1.3声明与提升 二、bom操作三、dom操作 一、函数 1.1函数的两种形式 //有参函数 //js中的函数只能返回一个值,如果要返回多个需要放在数组或对象中 function func(a,b){return ab } func(1,…

京准科普:车辆测速网络时间同步系统的概述

京准科普:车辆测速网络时间同步系统的概述 采用毫秒级标准NTP时间同步服务器检定区间测速系统主要用于指导测量车辆在特定区间内的平均速度,以确保交通法规的严格执行;以下是详细的解决方案: 1. 系统需求分析 高精度时间同步&am…

基于单片机的多功能视力保护器(论文+源码)

1.系统设计 多功能视力保护器在设计过程中能够对用户阅读过程中的各项数据信息进行控制,整体设计分为亮种模式,分别是自动模式,手动模式。在自动模式的控制下,当单片机检测当前光照不强且有人时就开启LED灯,并且会根据…

掌握大数据处理利器:Flink 知识点全面总结【上】

1.Flink的特点 Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。 Flink主要特点如下: 高吞吐和低延迟。每秒处理数百万个事件,毫秒级延迟。结果的准确性。Flink提供了事件时间(event--time)和处理时间(proces…