PCS 中的 Slurm REST API 常见问题解答 AWS - AWS PC

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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) 和群组 ()。 IDs gids标准 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 PD d () 状态。JobAdminHeadscontrol show job <job-id>用于检查作业 — 你会看到JobState=PENDING, Reason=JobHeldAdmin,和SystemComment=slurm_cred_create failure, holding job

    怎么做:根本原因可能是 JWT 中的值错误。根据PCS文档,验证令牌的结构是否正确,并包含所需的声明。

  • 工作目录权限问题

    如果您的 JWT 中指定的用户身份缺少对作业工作目录的写入权限,则作业将因权限错误而失败,类似于sbatch --chdir使用无法访问的目录。

    操作:确保您的 JWT 令牌中指定的用户对作业的工作目录具有相应的权限。

  • 还在遇到问题吗?

    1. 查看 SchedMD 关于 REST API 规范的文档

    2. 查看 Slurm 控制器日志,了解有关错误的更多详细信息(有关更多详细信息,计划程序在 PCS 中 AWS 登录请参阅)。