对 PCS 中的计算节点引导和注册问题进行故障排除 AWS - AWS PC

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

对 PCS 中的计算节点引导和注册问题进行故障排除 AWS

当计算节点无法引导或无法正确注册到您的 AWS PCS 集群时,您可能会遇到以下症状:

  • 工作还没开始

  • 您无法连接到中的实例 AWS Systems Manager

  • 实例意外关闭

  • 实例会不断被替换

这些故障可能是由 EC2 实例启动期间或 AWS PCS 计算节点引导过程中的问题引起的。本主题介绍帮助您解决 AWS PCS 节点引导过程中出现的问题的步骤。有关排除 EC2 实例启动故障的更多信息,请参阅亚马逊弹性计算云用户指南中的 Amazon EC2 实例启动问题疑难解答。

当 EC2 实例成功启动但在加入 AWS PCS 集群的过程中失败时,就会发生引导失败。引导过程包括两个主要阶段:

Slurm 在 PCS 上的工作原理 AWS

将 Slurm 的标准工作方式与 Slurm 在 PCS 上的工作方式进行比较可能会有所帮助。 AWS

标准 Slurm 作业处理

在标准 Slurm 作业处理中会执行以下步骤:

  1. 当您提交任务时,会slurmctld验证该任务并对其进行排队。

  2. 当资源可用时,slurmctld分配现有节点。

  3. slurmd守护程序在分配的节点上运行作业。

在 PCS 上处理 Slurm 作业 AWS

AWS PCS 作业处理中将执行以下步骤:

  1. 当您提交任务时,会slurmctld验证该任务并对其进行排队。

  2. 当需要更多容量时, AWS PCS 会使用计算节点组的启动模板来启动新的 EC2 实例。

  3. 新实例引导进入集群:

    1. 实例在 AWS PCS 中注册。

    2. 实例加入 Slurm 集群。

  4. 资源准备就绪后,slurmctld分配节点(包括新引导的节点)。

  5. slurmd守护程序在分配的节点上运行作业。

检索实例日志

解决计算节点引导问题的第一步是检索实例日志。您可以使用以下方法之一:

AWS CLI

使用以下命令从计算节点检索控制台输出:

aws ec2 get-console-output --region us-east-1 --instance-id i-1234567890abcdef0 --output text

us-east-1替换为您所在的 AWS 地区i-1234567890abcdef0和您的实例 ID。

AWS Systems Manager

如果您可以使用 Systems Manager 连接到实例,则可以直接查看引导日志文件:

  1. 使用 Systems Manager 连接到实例。有关更多信息,请参阅《S ystems Manager 用户指南》中的启动会话

  2. 查看引导日志文件:

    sudo cat /var/log/amazon/pcs/bootstrap.log
注意

如果在初始化阶段出现问题,则可能需要等待大约 20 分钟才能连接到实例。Systems Manager 和 SSH 服务仅在初始化完成后启动,或者在出现故障时引导执行达到超时时时启动。

从实例 ID 中检索VPC/Subnet/Security组

要解决计算节点的问题,您可能需要检索与您的实例关联的 VPC、子网和安全组的信息。如果您不知道自己的实例 IDs,请参阅在 AWS PCS 中查找计算节点组实例

AWS 管理控制台
获取 VPC、子网和安全组
  1. 打开 Amazon EC2 控制台

  2. 选择实例

  3. 实例表中,选择实例 ID。

  4. 在显示的实例摘要中找到该实例的 VPC ID 和子网 ID

  5. 在实例摘要中,选择安全选项卡。

  6. 在 “安全” 选项卡中找到 “安全”。

AWS CLI

使用以下命令检索您的实例的 VPC、子网和安全组信息:

aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --query 'Reservations[*].Instances[*].{InstanceId:InstanceId,VpcId:VpcId,SubnetId:SubnetId,SecurityGroups:SecurityGroups[*].GroupId}' --output table

节点注册问题

节点注册是计算节点在引导期间执行的第一个操作。该节点调用 AWS PCS API 端点向 AWS PCS 注册自己。注册失败通常会显示类似于以下内容的错误消息:

<13>Nov 13 16:23:50 user-data: [2025-11-13T16:23:50.510+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Registering node to cluster <clusterId>
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.192+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Retriable exception detected.
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.193+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Response is [specific error message]
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.194+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Retrying in 31 seconds...
<13>Nov 13 16:24:18 user-data: [2025-11-13T16:24:18.192+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Retriable exception detected.
...
<13>Nov 13 16:25:18 user-data: [2025-11-13T16:25:18.195+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Registration timeout (600 seconds) reached. Exiting.
<13>Nov 13 16:25:18 user-data: [2025-11-13T16:25:18.200+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: ERROR: Error: (2) occurred on line 1 when running /opt/aws/pcs/bin/pcs_bootstrap_init.sh. Shutting down instance.

错误的实例配置文件

如果节点由于错误的实例配置文件而无法注册,您将看到以下错误:

<13>Nov 13 18:43:08 user-data: [2025-11-13T18:43:08.268+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Response is {
<13>Nov 13 18:43:08 user-data:   "__type": "com.amazon.coral.service#AccessDeniedException",
<13>Nov 13 18:43:08 user-data:   "Message": "User: arn:aws:sts::<accountId>:assumed-role/<roleName>/<instanceId> is not authorized to perform: pcs:RegisterComputeNodeGroupInstance on resource: arn:aws:pcs:<regionCode>:<accountId>:cluster/<clusterId> as either the resource does not exist, some policy explicitly denies access, or no policy grants access",
<13>Nov 13 18:43:08 user-data:   "nodeID": null
<13>Nov 13 18:43:08 user-data: }

验证与计算节点关联的实例配置文件是否具有pcs:RegisterComputeNodeGroupInstance权限。有关如何创建有效实例配置文件的更多信息,请参阅为 AWS PCS 创建实例配置文件

无法连接到 AWS PCS 端点

如果您的计算节点位于私有子网中,请确保您已为 PC AWS S 配置了 VPC 终端节点,或者您的子网具有通往 NAT 网关的路由以进行互联网访问。有关更多信息,请参阅下列内容:

AWS PCS 端点配置错误

如果您看到类似以下内容的错误消息,请验证与您的 AWS PCS VPC 终端节点关联的策略:

com.amazon.coral.security.AccessDeniedException: User: arn:aws:sts::xxx:assumed-role/<roleName>/<instanceId> is not authorized to perform: pcs:RegisterComputeNodeGroupInstance on resource: arn:aws:pcs:<regionCode>:<accountId>:cluster/<clusterId> as either the resource does not exist, some policy explicitly denies access, or no policy grants access

有关如何为 PC AWS S 配置 VPC 接口终端节点的更多信息,请参阅AWS 并行计算服务 使用接口端点进行访问 (AWS PrivateLink)

没有公有 IP 的公有子网中的实例

如果您的子网未启用自动分配公有 IP,并且您的路由配置使用互联网网关,则实例将无法与 AWS PCS API 通信。

带有互联网网关的子网中的实例必须具有公有 IP 地址。要解决此问题,请选择以下选项之一:

  • 将 PCS 的 VP AWS C 终端节点添加到您的集群 VPC。这使实例能够与 AWS PCS 通信,而无需公有 IP 地址通过互联网网关。

  • 使用带有 NAT 网关的私有子网,这样就不需要公有 IP 地址。

  • 通过您的子网或启动模板启用自动公有 IP 地址分配,以便实例可以通过互联网网关联系 API。请注意,此选项对多网络接口实例无效。

公有子网中的多 NIC 实例

如果您使用的实例类型具有多个网络接口,则必须使用私有子网(NICs)。

AWS 只能将公有 IP 地址分配给使用单一网络接口启动的实例。有关 IP 地址的更多信息,请参阅 Amazon EC2 Linux 实例用户指南中的在实例启动期间分配公有 IPv4 地址

多 NIC 实例类型需要子网中的 NAT 网关或内部代理才能访问 AWS PCS 终端节点。或者,您可以将用于 PC AWS S 的 VPC 终端节点添加到您的集群 VPC。

Slurm 集群加入问题

成功注册节点后,计算节点将尝试加入 Slurm 集群。节点slurmd上的守护程序与 Slurm 控制器联系,以便在集群中注册。Slurm 加入失败通常会显示类似于以下内容的错误消息:

<13>Nov  5 17:20:29 user-data: [2024-11-05T17:20:28+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: service[slurmd] (aws-pcs-slurm::finalize_slurm line 18) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'  
<13>Nov  5 17:20:29 user-data: ---- Begin output of ["/usr/bin/systemctl", "--system", "start", "slurmd"] ----  
<13>Nov  5 17:20:29 user-data: STDOUT:   
<13>Nov  5 17:20:29 user-data: STDERR: Job for slurmd.service failed because the control process exited with error code. See "systemctl status slurmd.service" and "journalctl -xe" for details.  
<13>Nov  5 17:20:29 user-data: ---- End output of ["/usr/bin/systemctl", "--system", "start", "slurmd"] ----

安全组配置

确认您的安全组配置正确,允许计算节点和 Slurm 控制器之间进行通信。安全组必须允许以下流量:

  • 用于slurmd与之通信的端口 6817 slurmctld

  • 端口 6818 用于 pin slurmctld g slurmd

有关安全组要求的更多信息,请参阅以下主题:

重要

在创建集群时与集群关联的集群安全组也必须在计算节点组安全组中进行配置,以允许计算节点与控制器通信。

缺少英伟达驱动程序

如果实例启动正确,但作业未启动,并且您在实例日志中看到类似于以下内容的错误消息,则可能缺少 NVIDIA 驱动程序:

<13>Dec  2 13:52:00 user-data: [2024-12-02T13:52:00.094+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_config_always.sh: INFO: nvidia-smi not found!  
...  
<13>Dec  2 13:54:10 user-data: Job for slurmd.service failed because the control process exited with error code. See "systemctl status slurmd.service" and "journalctl -xe" for details.  
<13>Dec  2 13:54:12 user-data: [2024-12-02T13:54:12.718+00:00] - /opt/aws/pcs/bin/pcs_bootstrap_finalize.sh: INFO: systemctl could not start slurmd!

如果您连接到实例并检查slurmd守护程序状态,则可能会看到类似于以下内容的错误:

$ systemctl status slurmd  
...  
fatal: can't stat gres.conf file /dev/nvidia0: No such file or directory

要解决此问题,请在您的自定义 AMI 上安装 NVIDIA 驱动程序。有关更多信息,请参阅 步骤 4-(可选)安装其他驱动程序、库和应用程序软件

ResumeTimeout到达

如果计算节点及其 EC2 实例因节点运行状况不佳而终止,则 AWS PCS 可能不支持 AMI 或可能存在网络问题。EC2 实例运行大约 30 分钟,直到到达 Slurm 并将该节点标记 ResumeTimeout 为。DOWN

如果实例无法正确启动且未在 AWS PCS 中注册(未RegisterComputeNodeGroupInstance调用 EC2 实例),请检查您的实例日志中是否有类似于以下内容的错误消息:

/opt/aws/pcs/bin/pcs_bootstrap_init.sh: No such file or directory

此错误表明 AWS PCS 引导软件不是 AMI 的一部分。要解决此问题,请确保您的自定义 AMI 包含 AWS PCS 引导软件。有关更多信息,请参阅 适用于 AWS PCS 的自定义 Amazon 机器映像 (AMIs)

Slurmctld 无法 ping 计算节点

如果实例正确执行了引导程序并已在 AWS PCS 中注册,但slurmctld无法看到它并向其提交作业,则该实例将在一段时间DOWN后设置为,然后终止。

这可能是由于安全组配置错误造成的。例如,如果已启用端口 6817 slurmd 以允许与之通信slurmctld,但缺少端口 6818 slurmctld 以允许 ping 通。slurmd

验证您的安全组是否包含所有必需的规则,如中所述安全组要求和注意事项