View a markdown version of this page

Slurm REST API 中的常见问题 AWS PCS - AWS 个

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

Slurm REST API 中的常见问题 AWS PCS

本节回答了有关 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) 和群组 ID ()。gids标准 Slurm 代币缺少这些必需的索赔,将被 API 拒绝。

我可以从 VPC 外部访问 API 吗?

不可以,只能使用 Slurm 控制器的私有 IP 地址在您的 VPC 内访问 REST API 终端节点。要启用外部访问,请实施诸如带有 VPC 链接的应用程序负载均衡器、API 网关等 AWS 服务,或者建立 VPC 对等或 VPN 连接以实现安全连接。

为什么 API 使用 HTTP 而不是 HTTPS?

Slurm REST API 旨在成为集群私有网络中的内部终端节点。对于需要加密的生产部署,您可以在架构的更高级别上实现 SSL/TLS 终止,例如通过 API 网关、负载均衡器或反向代理。

如何控制对 REST API 的访问权限?

配置集群的安全组规则,限制对 Slurm 控制器上的 6820 端口的访问。将入站规则设置为仅允许来自可信 IP 范围或您的 VPC 内特定来源的连接,从而阻止对 API 终端节点的未经授权的访问。

如何轮换 JWT 签名密钥?

在没有活动实例的情况下将您的集群置于维护模式,然后通过 Secret AWS s Manager 启动密钥轮换。轮换完成后,重新启用队列。所有现有的 JWT 令牌都将失效,必须使用 Secrets Manager 的新签名密钥重新生成。

我需要启用 Slurm 记账才能使用 REST API 吗?

不,任务提交和监控等基本 REST API 操作不需要 Slurm 记账。但是,整个/slurmdb端点需要账户才能处于活动状态。

哪些第三方工具可用于 AWS PCS REST API?

许多现有的 Slurm REST API 客户端都应与 AWS PCS 配合使用,包括适用于 Prometheus 的 Slurm Exporter SlurmWeb,以及遵循标准 Slurm REST API 格式的自定义应用程序。但是,依赖身份验证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 令牌格式是否正确、未过期,并使用密钥管理器的正确密钥进行了签名。验证令牌的格式是否正确且包含所需的声明,以及您使用的身份验证标头格式是否正确。

  • 提交后作业无法运行

    如果您的 JWT 令牌有效但包含不正确的内部结构或内容,则作业可能已进入带有原因代码的暂停 (PD) 状态。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 登录请参见)。