写点什么

精彩回顾|KubeCon EU 2022 Kubernetes Batch + HPC 专题日

作者:Daocloud 道客
  • 2022 年 5 月 30 日
  • 本文字数:2672 字

    阅读完需:约 9 分钟

精彩回顾|KubeCon EU 2022 Kubernetes Batch + HPC 专题日

2022 年 5 月 16 日到 20 日,年度最顶级的云原生旗舰会议 KubeCon + CloudNativeCon Europe 2022,在西班牙 -- 瓦伦西亚举行。在这里聚集了全球的云原生技术专家、产品或解决方案供应商和使用者,对云原生进行广泛充分地交流和讨论。




随着 Kubernetes 生态的不断繁荣,越来越多的批处理作业和高性能作业逐步迁移至 Kubernetes 平台,充分利用 Kubernetes 的可扩展性和可移植性,但是 Kubernetes 对这些工作负载的支持方面还需改进提升。因此,在此次 KubeCon 举办期间,社区组织了一次 Batch + HPC 专题日,齐聚领域内各路专家一起讨论,如何在云原生场景下更好地支持批处理作业和高性能作业

大会上,宣布成立了 Kubernetes WG Batch,并对相关的技术和项目(例如:Kueue、Resource Orchestration、Volcano、Pulsar)等,进行了分享和探讨,下面一起来了解一下。


01 新成立:Kubernetes Batch workingGroup

Kubernetes 最初是一个通用的编排框架,是为服务应用程序而构建的,并且希望能支持越来越多的有状态应用程序。当前,Kubernetes 社区发现 Kubernetes 对批处理作业的支持,存在很多不足,并且整个云原生社区中存在着重复造轮子的现象,于是决定成立批处理工作小组 (Batch WG),讨论如何在 Kubernetes 上更好地支持批处理作业。 

批处理工作小组 (Batch WG) 的目标是统一用户部署批处理工作负载的方式,以提高可移植性并简化对 Kubernetes 供应者的可支持性。优化主要涉及四个方面:SIG 应用程序、SIG 自动伸缩、SIG 节点、SIG 调度。当前有三个工作主线:

  • 改进 Job API 以支持更广泛的工作负载 (MPI、ML、AI)。

  • Job 管理、队列、资源调配、调度和自动缩放。

  • 对专用硬件的运行时和调度支持 (加速器、NUMA、RDMA 等)。 

如果你有与批处理相关的项目 、增强方案或原型,可以邮件联系:

➔ slack.k8s.io #wg-batch

➔ wg-batch@k8s.io

➔ git.k8s.io/community/wg-batch

02 Kueue:基于 K8s 原生的作业队列和弹性配额管理器

Kubernetes 的大多数核心组件都是以 Pod 为中心的,而对于批处理工作负载,只关注 pod 是不够的,比如,集群容量是有限的,需要能对集群资源进行配额和成本管理。因此用户希望有一种公平高效、共享资源的简单方法,能在 Kubernetes 实现传统批处理调度器中常见的排队功能。

Kueue 正是一个基于 K8s 原生的作业队列和弹性配额管理器,无需重复实现现有功能,如自动缩放、Pod 调度、作业生命周期管理和准入控制等,原生支持 batch/v1.Job API ,可用于集成自定义工作负载,支持公平共享和资源灵活性。Kueue 和现有的 Kubernetes 组件完美融合,不用担心功能差异,让客户使用更简单。

下一步的开发计划是:与常见定制工作负载的集成:Spark、Kubeflow 等;作业抢占机制;预算管理;多群集支持。

项目地址:https://github.com/kubernetes-sigs/kueue

03 Resource Orchestration:NUMA 感知调度

当前,kubernetes 调度对 NUMA 是无感知的,资源管理器只存在于 Kubelet 中,导致当我们在 kubelet 上启用拓扑管理策略,如 “single-numa-node”,可能会引发大量 Topology Affinity Error 错误的 Pod。为了解决这个问题,同时也为了让有硬件需求的 HPC 作业或者性能敏感的应用程序能在 Kubernetes 上更好地运行,RedHat 团队向 Kubernetes 贡献了 NUMA 感知调度相关代码,主要实现逻辑如下:

1. 引入 NodeResourceTopology CRD,负责维护资源信息,供调度插件调用;

2. Agent 组件以 daemonset 的形式部署在每一个节点之上,负责更新 NRT 中资源使用情况;

3. 集成调度插件,通过预选和优选进行常规的调度操作。

目前,NUMA 感知调度相关代码维护在 kubernetes-sig/scheduler-plugins 项目中,未来计划合并入 kubernetes 主库

组织地址:https://github.com/k8stopologyawareschedwg

04 Volcano:用于计算密集型工作负载的云原生批调度系统

Volcano 是一个云原生批处理系统,也是 CNCF 的第一个批处理计算项目。主要用在高性能计算 (HPC) 领域,如大数据、人工智能、基因计算。Volcano 提供基于作业的公平共享、优先级、抢占、回收和队列管理功能,这些功能对 HPC 用户非常重要。Volcano 在大数据、人工智能和 HPC 计算领域与 spark operator、fink operator、kubeflow、Cromwell 等计算生态系统进行了集成。今年,Volcano 还集成了 spark 与它的定制批量调度程序。贡献者正在开发许多新功能,例如,针对 HPC 用户的协同定位、弹性培训、vGPU、吞吐量优化和多集群调度。

自 2019 年开源以来,Volcano 已经被全球 50 多个用户成功部署,帮助用户加速 AI 培训、服务、大数据分析等,同时结合其他云原生项目提高集群利用率。 

项目地址:https://github.com/volcano-sh/volcano

05 Apache Pulasr:下一代云原生分布式消息流平台

Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性,在全球乃至国内都得到了广泛的应用。其商业化公司 StreamNative 与「DaoCloud 道客」也有着深入的合作。

随着 Apache Pulsar 社区的不断发展,越来越多的连接器将会接入 Pulsar,为了提高数据抽取和数据分发的可用性,Pulsar 和 NiFi 结合是一个不错的选择。NiFi 将充分发挥自身在 ELT、ETL、数据处理、转换、验证和批处理方面的优势。

项目地址:http://github.com/apache/pulsar/

06 其他项目

此外,大会还分享了一些比较热门的项目。

Ray:一个开源框架,为构建分布式应用程序提供简单、通用的 API。可以减少 DL(深度学习) 模型的培训、扩展、部署和服务的复杂性障碍,让更多不同的用户能够访问 DL。

项目地址:https://github.com/ray-project


Apache YuniKorn :一个用于批处理工作负载的 Kubernetes 调度器插件。使用 Apache YuniKorn 可以通过高级选项来调度批处理工作负载,如工作负载排队和配额共享等,并且不会影响传统的非批处理 Kubernetes 工作负载。

项目地址:https://github.com/apache/yunikorn-core


随着云原生技术的广泛应用,越来越多的用户希望能在 K8s 上,进行高性能的工作负载,如 Apache Spark、PMLS(Petuum)、TensorFlow 等。在 K8s 中运行这些工作负载则需要高级功能,如公平调度、排队、作业管理 (暂停/恢复) 和数据管理等。Kubernetes 成为 AI、大数据和高性能批量计算的下一代基础设施已是大势所趋。在云原生场景下,如何更好地支持批处理作业和高性能作业,既是机遇,也是挑战。未来呼啸而来,期待与你一起成为未来行道者。

发布于: 刚刚阅读数: 4
用户头像

驾驭数字方程式 2022.02.11 加入

遨游云原生,驾驭数字方程式,打造开放的云操作系统为企业数字化转型赋能

评论

发布
暂无评论
精彩回顾|KubeCon EU 2022 Kubernetes Batch + HPC 专题日_Kubernetes_Daocloud 道客_InfoQ写作社区