Slurm 20.02.3 slurmrest API 的基本用法(入门必看) No. 1-1
本文主要总结了slurm最新版本20.02.3中,slurm REST API的基本使用方法。主要参考了slurm官网关于slurm REST API、slurmrestd的讲解和自己使用的经验。目前,打算挖个坑写成一个小系列,让自己有写博客的动力。---------------------------------------------------------------------------
本文主要总结了slurm最新版本20.02.3中,slurm REST API的基本使用方法。
主要参考了slurm官网关于slurm REST API、slurmrestd的讲解和自己使用的经验。
目前,打算挖个坑写成一个小系列,让自己有写博客的动力。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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和某个未被占用的端口号。
2 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 运行任务时使用的环境变量,主要指定 PATH 和 LD_LIBRARY_PATH
script 对应着原来sbatch 提交脚本任务中的脚本内容。
以下为最简案例:
3 总结
slurm REST API 作为slurm20.02版本推出的重磅新功能,总的来说,使用体验一般。但其中最关键的任务提交功能功能还比较齐全,但缺失了用户权限限制,在后台slurmdbd中会发现,通过slurm REST API提交的任务,全部都是root用户,并且拥有root权限,如果放到开放环境中,这就是一件很危险的事情。
所以,希望在官方后续版本中,能够继续打磨slurm REST API功能。
转载请注明出处
觉得对你有帮助的话,可以点个关注,点个赞,3Q~
P.S. 其实博主已经解决了用户权限问题😜。
更多推荐
所有评论(0)