首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Fluid 0.6 版本发布:数据感知的Pod调度与数据集自动弹性扩缩容

Fluid 0.6 版本发布:数据感知的Pod调度与数据集自动弹性扩缩容

作者头像
CNCF
发布2021-08-26 09:45:54
发布2021-08-26 09:45:54
90100
代码可运行
举报
文章被收录于专栏:CNCFCNCF
运行总次数:0
代码可运行

Fluid是CNCF基金会旗下云原生环境中数据密集型应用的高效支撑平台,项目自开源发布以来吸引了众多相关方向领域专家和工程师的关注,在大家的积极反馈下社区不断演进。近期 Fluid 0.6 版本正式发布,在该版本中,Fluid 主要新增改善以下三个方面内容:

  • 数据感知的Pod调度,支持数据与应用协同调度,加强生态融合, 适配更多开源调度器。
  • 丰富数据集操作功能,支持数据集自动弹性扩缩容、挂载点动态更新。
  • 缓存引擎新增与增强,支持缓存引擎高可用并新增公有云缓存引擎。

Fluid 开源项目地址:https://github.com/fluid-cloudnative/fluid

Fluid 项目全新官网:https://fluid-cloudnative.github.io/

这三大主要功能的开发需求来自众多社区用户的实际生产反馈,此外 Fluid v0.6 还进行了一些 bug 修复和文档更新,欢迎使用体验 Fluid v0.6!

Fluid v0.6 下载链接:https://github.com/fluid-cloudnative/fluid/releases

下文是本次新版本发布功能的进一步介绍。

数据感知的Pod调度优化

Fluid一直致力于利用云原生资源调度能力满足云上数据密集应用高效运行的需求。在上个版本Fluid v0.5中,我们已经针对数据集编排缺乏架构感知的问题,在数据集编排调度方面进行了一系列优化。在Fluid v0.6中,我们进一步针对容器编排缺乏数据感知的问题,设计实现了对Pod调度的优化。

我们目前考虑到的优化场景问题包括:

  • 使用非k8s原生调度器时,不能与Fluid很好的兼容
  • 使用数据集的Pod调度时,缺少考虑缓存分布考虑
  • 不使用数据集的Pod,可能调度到有缓存的节点,影响其它Pod使用缓存

我们根据数据集缓存位置信息制定Pod调度策略,通过webhook机制将生成的调度信息注入到Pod,最终实现了以下功能:

  • 在默认Fuse模式(Fuse和缓存引擎同节点部署)下,支持k8s原生调度器,以及Volcano,Yunikorn等第三方调度器,实现Pod数据亲和性调度
  • 在全局Fuse模式下,将Pod优先调度到有数据缓存能力的节点
  • 当Pod不使用数据集时,尽量避免将Pod调度到有缓存的节点

关于Pod调度优化功能的开启与配置方式,请参考 Github 上的示例文档

丰富数据集操作功能

1. 数据集在线弹性缓存扩缩容

Fluid v0.5 开启了在线弹性扩缩容之路,当时提供了在线手动扩缩容的能力。然而,在真实的生产环境中,手工操作扩缩具有较大的复杂度和延迟性。自动弹性伸缩是Kubernetes的核心能力之一,此前一直是围绕这无状态的应用负载展开。现在,有状态的数据密集型应用也可以利用Fluid提供的分布式缓存的弹性伸缩能力,从而实现灵活扩充和收缩数据缓存。Fluid基于Runtime提供了缓存空间、现有缓存比例等性能指标, 结合自身对于Runtime资源的扩缩容能力,从而达到数据缓存按需伸缩能力。

进一步,我们发现根据数据缓存量比例触发自动的数据缓存能力弹性扩缩容具有非常多的优势,但也有一个缺陷,就是需要根据资源压力计算出合理的值后调整,这就存在一定的程度滞后性。因此Fluid v0.6通过结合CronHPA提供了定时扩缩容的能力,从而根据应用自身使用数据的时间特点,实现数据缓存的按时扩缩容,充分利用了集群计算和存储资源加速应用的数据访问性能。当前,使用自动扩容+定时缩容可以最大化的使Fluid平台在k8s集群内变成一种可控的弹性缓存资源。目前,Fluid的Alluxio Runtime在这方面提供了完整的支持。

2. 数据集挂载点动态更新功能

在Fluid的每个数据集中,都声明了若干挂载点(mountPoint)。

例如,如下名为test的数据集中,声明了hbase和spark两个挂载点:

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: test
spec:
  mounts:    
  - mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/       
    name: hbase
  - mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/spark/       
    name: spark

之前的版本中,只有数据集创建时,才会把数据集中声明的那些挂载点挂载到虚拟文件系统中。一旦数据集创建完成,即使再修改挂载点也不会生效,若要修改则只能删除重建,这在实际使用中具有很多不便。在Fluid v0.6中,我们新增了数据集挂载点动态增减功能。一旦修改数据集的挂载点,数据集将暂时进入Updating状态。直到挂载/卸载完成,数据集才会重新回到Bound状态。

缓存引擎新增与增强

1. 新增数据缓存引擎实现

Fluid 默认使用的分布式缓存 Runtime 是 AlluxioRuntime,为了满足不同环境用户对缓存系统的需求,在之前的版本中 Fluid 已经将分布式缓存 Runtime 接入框架设计成了可插拔的架构。在 Fluid v0.6中,来自腾讯云的社区贡献者基于该框架开发了 GooseFSRuntime,新增了一种支撑 Fluid Dataset 数据管理和缓存的执行引擎实现。用户可以在 Fluid 中通过 GooseFSRuntime 使用 GooseFS

(https://cloud.tencent.com/document/product/436/56412) 缓存能力进行腾讯云 COS 文件的访问和缓存。在 Fluid 上使用和部署 GooseFSRuntime 流程简单、兼容原生 K8s 环境、开箱即用,配合腾讯云 TKE(https://cloud.tencent.com/product/tke) 使用更佳。

2. 数据缓存引擎高可用运行时

Fluid 目前支持的缓存引擎 Alluxio、JindoFS、GooseFS 均为分布式文件系统,Alluxio、GooseFS 、JindoFS Cache 模式均为 Master-Worker 架构。在分布式文件系统中,高可用性包含两个方面:一是整个文件系统的可用性,二是数据的完整和一致性。Master 作为全局元数据管理组件,通过 Master High-Availability 保证文件系统的高可用;通过 Raft 算法实现选主、状态机同步等操作保证日志和元数据的完整和一致性。在 Fluid v0.6中,来自腾讯云的社区贡献者设计实现高可用运行时功能,用户只需要指定期望 master 个数,如果个数为大于1的奇数,将自动使用高可用模式。

总结

Fluid v0.6 主要解决和满足社区用户在实际生产环境中反馈的问题和需求。在调度方面,支持数据感知的Pod调度,从而满足多场景数据与应用协同调度的需求。在数据集操作方面,进一步丰富了相关功能,支持数据集自动弹性扩缩容、挂载点动态更新。在缓存引擎方面,进行新增缓存引擎新增并增强功能,支持了缓存引擎高可用并新增公有云缓存引擎。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 数据集在线弹性缓存扩缩容
  • 2. 数据集挂载点动态更新功能
  • 1. 新增数据缓存引擎实现
  • 2. 数据缓存引擎高可用运行时
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档