Kubernetes 批处理和HPC发展一览

简介: Kubernetes 批处理和HPC发展一览

2022 Kubernetes 批处理和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

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

项目地址:

https://github.com/ray-project

Apache YuniKorn

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

项目地址:

https://github.com/apache/yunikorn-core

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
549 1
|
6月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
364 89
|
11月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
715 9
|
11月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1088 33
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
681 19
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
505 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。