本文主要总结了slurm最新版本20.02.3中,slurm REST API的基本使用方法。

主要参考了slurm官网关于slurm REST APIslurmrestd的讲解和自己使用的经验。

目前,打算挖个坑写成一个小系列,让自己有写博客的动力。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

slurm REST API 是slurm 20.02版本中最新推出的功能,其接口符合 REST 设计标准的 API,方便我们基于接口调用slurm的功能。

slurm REST API 有Inet Mode和Listen Mode两种模式,本文主要针对Listen Mode进行讲解。

使用的集群slurm集群包括:1个管理节点slurmcltd(192.168.0.211)、1个备用节点slurmcltd(192.168.0.127)、1个登陆节点slurm-login(192.169.0.90)、2个计算节点slurmd(192.168.0.218、192.168.0.128)。

 

1 启动slurm REST API

首先,slurm在安装的时候,默认不安装slurm REST API,需要手动选择安装(slurm安装部分会在所有slurm功能讲解完后,单独写一篇博文)

使用slurm REST API不需要再slurm.conf等配置文件中进行配置。slurm REST API可以在管理节点、备用节点、登陆节点和计算节点中的任意节点启动。

在管理节点,启动命令:

调试方式启动:

slurmrestd -vvv 192.168.0.211:6688

后台启动:

slurmrestd 192.168.0.211 &

然后按Ctrl+d 登出即可

注意: v 的数量代表debug level,后面是本机的ip和某个未被占用的端口号。

 

slurm REST API的接口及参数

本来博主自己去翻slurm源码,辛辛苦苦的将slurm REST API的接口及参数整理出来,结果后面发现swaggerhub上面有现成的。这里放出

slurm REST API接口的链接,大家可以根据需要去查阅。

我就对每个接口提供最简单的案例,供大家参考。

2.1 postman配置

博主这里使用postman作为各个案例演示工具,但是需要在Headers中添加slurm认证的相关K-V才能够成功调用(同样java、python等小相关包也需要添加此Headers)。该功能应该是配合auth/jwt使用,但是博主装了几次没有成功,就放弃使用auth/jwt了。

虽然没有使用到auth/jwt,但是这两个KEY

  • X-SLURM-USER-NAME
  • X-SLURM-USER-TOKEN

是必填的。VALUE可以填任意值。

POST方法需要加Content-Type

GET  DELETE则不需要

2.2  GET /slurm/v0.0.35/diag/

slurm终端命令:sdiag

2.3  GET /slurm/v0.0.35/ping/

slurm终端命令:scontrol ping

2.4  GET /slurm/v0.0.35/jobs/

slurm终端命令:scontrol show job

截图没有截完整

2.5  GET /slurm/v0.0.35/job/{job_id}

slurm终端命令:scontrol show job 28

截图没有截完整

2.6  POST /slurm/v0.0.35/job/{job_id}

slurm终端命令:*

该命令就是查看任务是否还处于pending状态(略坑),environment是必填项。

2.7  DELETE /slurm/v0.0.35/job/{job_id}

slurm终端命令:scancel 29

吐槽返回的信息太简单了

2.8  GET /slurm/v0.0.35/nodes/

slurm终端命令:scontrol show nodes

截图没有截完整

2.9  GET /slurm/v0.0.35/node/{node_name}

slurm终端命令:scontrol show node cm-wsb-c4m8d200-2

2.10  GET /slurm/v0.0.35/partitions/

slurm终端命令:scontrol show partitions

2.11  GET /slurm/v0.0.35/partition/{partition_name}

slurm终端命令:scontrol show partition c16m30

2.12  POST /slurm/v0.0.35/job/submit

slurm终端命令:sbatch ***.sh

这应该是最有用的一个接口了,这也是参数最多的一个接口,具体参数可以从swaggerhub中的slurm REST API链接中查阅,并选择性填写。这里面有三个参数是必填项:

accont  提交任务的account,就算不用slurmdbd也需要填,但目前也只能填 root

environment   运行任务时使用的环境变量,主要指定 PATHLD_LIBRARY_PATH

script  对应着原来sbatch 提交脚本任务中的脚本内容。

以下为最简案例:

3 总结

slurm REST API 作为slurm20.02版本推出的重磅新功能,总的来说,使用体验一般。但其中最关键的任务提交功能功能还比较齐全,但缺失了用户权限限制,在后台slurmdbd中会发现,通过slurm REST API提交的任务,全部都是root用户,并且拥有root权限,如果放到开放环境中,这就是一件很危险的事情。

所以,希望在官方后续版本中,能够继续打磨slurm REST API功能。

 

转载请注明出处

觉得对你有帮助的话,可以点个关注,点个赞,3Q~

P.S. 其实博主已经解决了用户权限问题😜。

 

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐