首页 > 其他分享 >Slurm和K8S

Slurm和K8S

时间:2023-08-09 09:56:55浏览次数:42  
标签:K8s 优先级 Slurm 调度 MPI HPC K8S

 

1、观点差异

  • K8s专为管理长时间运行的流程而构建的

            协调多个微服务,扩展、管理可用性,通常支持一个或多个web服务

  • 云原生系统假设有"infinite"可用资源

              优先级不是云编排的核心,体现在调度语义上,"Affinity"与"Anti-Affinity"设置不能转换为批处理工作流程

  • HPC系统假设系统大小是固定的

              但是工作量是无限的,队列优先级对于大多数大型系统至关重要

  • Slurm是一个策略引擎
  • Slurm涵盖了几个相关的HPC系统管理任务

              作业排队和优先级,作业记账,用户对计算资源的访问控制(cgroups、pam_slurm_adopt),大规模作业启动(MPI、PMIx、nss_slurm、sbcast)


2、Kubernetes Batch支持

  • K8s对批处理工作流程的支持有限

              以"pods"或"jobs"为模型,由于"jobs"模型的问题,大多数工作流使用"pods"

  • 优先级模型有限

              先进先出是最常见的

  • MPI风格的工作负载支持较弱

              默认K8s组件不保证并发pod调度

  • "MPI Operator"是确保Pod同时启动的最常用组件

              无法扩大规模,很难达到80(!)以上的ranks

 

3、HPC 与云原生的融合

  • 弥合HPC和云原生工作负载之间的差距
  • 用一种方法,将熟悉的命令、工具和优先级模型引入到新的架构中

 

4、可能的模型

从Slurm的角度来看,可能的方法有:

  • "Over"
  • "Adjacent"
  • "Under"

4.1、"Over"

  • Slurm管理资源
  • 在批处理作业中临时创建的K8s集群
  • 在作业启动之前,K8s control plane不可用...
  • 除了测试/开发之外不用特别有用

4.2、"Adjacent"

  • 两个control plane重叠
  • 安装Slurm K8s调度器插件

              让Slurm优先考虑并安排 Slurm 和 K8s 工作负载

  • K8s作业通过kubelet运行

              拥有K8s的全部能力

  • Slurm作业通过Slurm运行

              高吞吐量,支持大规模MPI工作

  • POC(Proof-of-concept)已经开始工作

              通过"slurm-k8s-bridge" K8s调度程序插件

  • 局限性

              K8s调度只关心节点

  • 目前没有进一步的粒度可用

              正在努力做到这一点,但变更很难向上游推进
              Slurm调度插件忽略了亲和/反亲和以及其他K8s调度机制,因为它们没有直接建模到传统的HPC概念

4.3、"Under"

  • 在K8s环境中运行Slurm集群
  • K8s云原生提供商已经出现
  • 长期"login"节点(pod)提供传统用户体验
  • 自动缩放可用于将资源移入/移出 Slurm 的控制

 

优点

  • Slurm用户的传统体验
  • 允许更高的吞吐量和完整的MPI支持

缺点

  • K8s的工作负载超出了Slurm的范围
  • Slurm和K8s工作负载之间的优先级很难确定
  • K8s调度的所有限制均适用

 

 

标签:K8s,优先级,Slurm,调度,MPI,HPC,K8S
From: https://www.cnblogs.com/liu-shaobo/p/17611070.html

相关文章

  • k8s 学习笔记之安全认证
    访问控制概述Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。客户端在Kubernetes集群中,客户端通常有两类:UserAccount:一般是独立于kubernetes之外的其他服务管理......
  • 遇到问题--k8s--pod的状态为evicted
    遇到问题使用kubectlgetpods发现很多pod的状态为evicted。原因eviction,即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。多见于资源不足时导致的驱赶。更多详情参考kubernetes的eviction机制解决方案排查资源和异常原因,防止新的驱赶产生。使用......
  • k8s--kubernetes--argo----使用动态存储PVC---基于nfs 的storageclass
    PVC简介Docker中有volumes的概念,在Docker中,volume是对物理节点服务器node路径目录的一种映射,也就是我们可以把服务器的一个目录挂载给镜像使用。同样的,k8s创建的pod也可以挂载volume,而且不仅仅支持pod所在的服务器node的目录映射,也可以挂载其他网络存储的作为目录挂载。k8s支......
  • docker--k8s---终端terminal和普通程序以及jupyter notebook-创建永久的静态环境变量-
    终端terminal和普通程序linux系统的中主要有两种启用系统环境的情况,一种是用户登录,比如进入bash或者sh等命令行操作shell界面,一种是用户不登录,而是程序自动运行。根据两种情况,适用的创建永久的环境变量的方式就会有所不同。创建永久的静态环境变量静态环境变量是指内容不会变......
  • k8s 学习笔记之配置存储——ConfigMap&Secret
    配置存储ConfigMapConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。创建configmap.yaml,内容如下:apiVersion:v1kind:ConfigMapmetadata:name:configmapnamespace:devdata:info:|(这个|后面整个都是值)username:adminpassword:12......
  • hadoop组件---spark实战-----airflow----调度工具airflow部署到k8s中使用
    在之前的文章中我们已经了解了airflow和它的工作原理。hadoop组件—spark实战-----airflow----调度工具airflow的介绍和使用示例Scheduler进程,WebServer进程和Worker进程需要单独启动。Scheduler和WebServer可以跑在一个操作系统内,也可以分开,而通常Worker需要很多,如果是部署特定......
  • k8s---使用ingress配置域名转发时的traefik路径规则详解
    ingress中traefik的使用方式如下:apiVersion:extensions/v1beta1kind:Ingressmetadata:name:spark-client-testnamespace:defaultannotations:kubernetes.io/ingress.class:traefiktraefik.frontend.rule.type:PathPrefixspec:rules:-host:......
  • 【Azure K8S | AKS】在AKS中创建 StatefulSet 示例
    问题描述【AzureK8S|AKS】在AKS集群中创建PVC(PersistentVolumeClaim)和PV(PersistentVolume)示例【AzureK8S|AKS】进入AKS的POD中查看文件,例如PVCVolumeMounts使用情况【AzureK8S|AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小基于前三篇博文中使用的......
  • k8s 容器安全上下文
    容器安全上下文介绍kubernetes为安全运行pod及容器运行设计了安全上下文机制,该机制允许用户和管理员定义pod或容器的特权与访问控制,已配置容器与主机以及主机之上的其它容器间的隔离级别。安全上下文就是一组用来决定容器时如何创建和运行的约束条件,这些条件代表创建和运行容器时......
  • k8s 安装 nfs
    安装nfs服务yuminstall-ynfs-utils#配置nfs/etc/exports/data/nfs192.168.1.0/24(rw,no_root_squash)#/data/nfs*(rw,sync)(我的IP地址是192.168.1.23)#设置目录权限777chmod777/data/nfs#重启服务systemctlrestartnfs创建rabc.yamlapiVersion:v1kind:S......