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、大数据和高性能批量计算的下一代基础设施已是大势所趋。在云原生场景下,如何更好地支持批处理作业和高性能作业,既是机遇,也是挑战。未来呼啸而来,期待与你一起成为未来行道者。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
29天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
62 1
|
2月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
2月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
2月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
199 4
|
2月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
135 17
|
2月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
881 1
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
89 3
|
2月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
128 1
|
2月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
71 1