本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
PCS 中的 Slurm REST API 常见问题解答 AWS
本节回答了有关 PCS 中的 Slurm REST API 的 AWS 常见问题。
- 什么是 Slurm REST API?
-
Slurm REST API 是一个 HTTP 接口,允许你以编程方式与 Slurm 工作负载管理器进行交互。您可以使用标准 HTTP 方法(例如 GET、POST 和 DELETE)来提交作业、监控集群状态和管理资源,而无需命令行访问集群。
- 我可以使用由生成的代币
scontrol token吗? -
不是,标准
scontrol token输出与 AWS PCS 不兼容。PCS Slurm REST API 需要包含包含特定身份声明的丰富的 JWT 令牌,包括用户名 (sun)、POSIX 用户 ID (uid) 和群组 ()。 IDsgids标准 Slurm 代币缺少这些必需的声明,因此会被 API 拒绝。 - 我能否从我的 VPC 外部访问 API?
-
不可以,只有在您的 VPC 中使用 Slurm 控制器的私有 IP 地址才能访问 REST API 终端节点。要启用外部访问,请实施诸如带有 VPC Link 的 Application Load Balancer、API Gateway 之类的 AWS 服务,或者建立 VPC 对等或 VPN 连接以实现安全连接。
- 为什么 API 使用 HTTP 而不是 HTTPS?
-
Slurm REST API 旨在成为集群私有网络中的内部终端节点。对于需要加密的生产部署,您可以在架构中更高级别实现 SSL/TLS 终止,例如通过 API 网关、负载均衡器或反向代理。
- 如何控制对 REST API 的访问权限?
-
配置集群的安全组规则,以限制对 Slurm 控制器上的 6820 端口的访问。将入站规则设置为仅允许来自可信 IP 范围或您的 VPC 内特定来源的连接,从而阻止对 API 终端节点的未经授权的访问。
- 如何轮换 JWT 签名密钥?
-
将您的集群置于没有活动实例的维护模式,然后通过 Secrets Manager 启动 AWS 密钥轮换。轮换完成后,重新启用队列。所有现有 JWT 令牌都将失效,必须使用 Secrets Manager 中的新签名密钥重新生成。
- 我需要启用 Slurm 记账功能才能使用 REST API 吗?
-
不,作业提交和监控等基本 REST API 操作不需要 Slurm 记账。但是,整个
/slurmdb端点都需要记账才能处于活动状态。 - 哪些第三方工具可以与 AWS PCS REST API 配合使用?
-
许多现有的 Slurm REST API 客户端都应使用 AWS PCS,包括适用于 Prometheus 的 Slurm Exporter,以及遵循标准 Slurm REST API SlurmWeb 格式的自定义应用程序。但是,依赖身份验证
scontrol token的工具需要修改才能满足 AWS PCS JWT 的要求。 - 使用 REST API 会产生任何额外费用吗?
-
不,启用或使用 Slurm REST API 功能不收取任何额外费用。您只需像往常一样为底层群集资源付费。
- 如何对 REST API 进行故障排除?
-
-
网络连接问题
如果您无法访问 API 终端节点,则在向集群控制器发出 HTTP 请求时,您将看到连接超时或 “连接被拒绝” 错误。
操作方法:验证您的客户端位于同一 VPC 中或网络路由正确,并确认您的安全组允许来自您的源 IP 或子网的 6820 端口上的 HTTP 流量。
-
Slurm REST 身份验证问题
如果您的 JWT 令牌无效、过期或签名不正确,API 请求将在响应的错误字段中返回 “协议身份验证错误”。
错误消息示例:
{ "errors": [ { "description": "Batch job submission failed", "error_number": 1007, "error": "Protocol authentication error", "source": "slurm_submit_batch_job()" } ] }操作方法:检查您的 JWT 令牌的格式是否正确、未过期,并使用来自 Secrets Manager 的正确密钥进行签名。验证令牌的格式是否正确且包含所需的声明,以及您使用的身份验证标头格式是否正确。
-
提交后 Job 无法运行
如果您的 JWT 令牌有效但包含不正确的内部结构或内容,则任务可能已进入带有原因代码的 pause
PDd () 状态。JobAdminHeadscontrol show job用于检查作业 — 你会看到<job-id>JobState=PENDING, Reason=JobHeldAdmin,和SystemComment=slurm_cred_create failure, holding job。怎么做:根本原因可能是 JWT 中的值错误。根据PCS文档,验证令牌的结构是否正确,并包含所需的声明。
-
工作目录权限问题
如果您的 JWT 中指定的用户身份缺少对作业工作目录的写入权限,则作业将因权限错误而失败,类似于
sbatch --chdir使用无法访问的目录。操作:确保您的 JWT 令牌中指定的用户对作业的工作目录具有相应的权限。
-
还在遇到问题吗?
-
查看 SchedMD 关于 REST API 规范的文档
。 -
查看 Slurm 控制器日志,了解有关错误的更多详细信息(有关更多详细信息,计划程序在 PCS 中 AWS 登录请参阅)。
-
-