

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

# 对 PCS 中的计算节点引导和注册问题进行故障排除 AWS
<a name="troubleshooting-compute-node-bootstrap"></a>

当计算节点无法引导或无法正确注册到您的 AWS PCS 集群时，您可能会遇到以下症状：
+ 工作还没开始
+ 您无法连接到中的实例 AWS Systems Manager
+ 实例意外关闭
+ 实例会不断被替换

这些故障可能是由 EC2 实例启动期间或 AWS PCS 计算节点引导过程中的问题引起的。本主题介绍帮助您解决 AWS PCS 节点引导过程中出现的问题的步骤。有关排除 EC2 实例启动故障的更多信息，请参阅《[亚马逊*弹性计算云用户指南》中的 Amazon* EC2 实例启动问题疑](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshooting-launch.html)难解答。

当 EC2 实例成功启动但在加入 AWS PCS 集群的过程中失败时，就会发生引导失败。引导过程包括两个主要阶段：
+ **节点注册** — EC2 实例调用 [RegisterComputeNodeGroupInstance](https://docs.aws.amazon.com/pcs/latest/APIReference/API_RegisterComputeNodeGroupInstance.html) AWS PCS API 操作向 AWS PCS 服务注册。失败可能是由于以下问题造成的：
  + Permissions
    + [错误的实例配置文件](#troubleshooting-compute-node-bootstrap-wrong-instance-profile)
  + Networking
    + [无法连接到 AWS PCS 端点](#troubleshooting-compute-node-bootstrap-connect-to-endpoints)
    + [AWS PCS 端点配置错误](#troubleshooting-compute-node-bootstrap-misconfigured-pcs-endpoint)
    + [没有公有 IP 的公有子网中的实例](#troubleshooting-compute-node-bootstrap-public-subnet-no-public-ip)
    + [公有子网中的多 NIC 实例](#troubleshooting-compute-node-bootstrap-multi-nic-public-subnet)
  + 集群密钥
    + [集群密钥已被删除或标记为删除](#troubleshooting-compute-node-bootstrap-cluster-secret-deleted)
+ **Slurm 集成** — 实例运行`slurmd`并加入 Slurm 集群。失败可能是由于以下问题造成的：
  + Permissions
    + [安全组配置](#troubleshooting-compute-node-bootstrap-security-groups)
    + [Slurmctld 无法 ping 计算节点](#troubleshooting-compute-node-bootstrap-slurmctld-ping-issue)
  + 自定义 AMI 设置
    + [缺少英伟达驱动程序](#troubleshooting-compute-node-bootstrap-missing-nvidia-drivers)
    + [ResumeTimeout 到达](#troubleshooting-compute-node-bootstrap-resume-timeout)

## Slurm 在 PCS 上的工作原理 AWS
<a name="troubleshooting-compute-node-bootstrap-how-slurm-works"></a>

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

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

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

1. 当资源可用时，`slurmctld`分配现有节点。

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

**在 PCS 上处理 Slurm 作业 AWS**  
 AWS PCS 作业处理中将执行以下步骤：

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

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

1. **新实例引导进入集群：**

   1. **实例向 AWS PCS 注册。**

   1. **实例加入 Slurm 集群。**

1. 资源准备就绪后，`slurmctld`分配节点（包括新引导的节点）。

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

## 检索实例日志
<a name="troubleshooting-compute-node-bootstrap-retrieve-logs"></a>

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

------
#### [ 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 用户指南*[》中的启动会话](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#start-ec2-console)。

1. 查看引导日志文件：

   ```
   sudo cat /var/log/amazon/pcs/bootstrap.log
   ```

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

------

## 从实例 ID 中检索VPC/Subnet/Security组
<a name="troubleshooting-compute-node-bootstrap-retrieve-vpc-info"></a>

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

------
#### [ AWS 管理控制台 ]

**获取 VPC、子网和安全组**

1. 打开 [Amazon EC2 控制台](https://console.aws.amazon.com/ec2)。

1. 选择**实例**。

1. 在**实例**表中，选择实例 ID。

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

1. 在实例摘要中，选择**安全**选项卡。

1. 在 “**安全” 选项卡中找到 “**安全**组**”。

------
#### [ 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
```

------

## 节点注册问题
<a name="troubleshooting-compute-node-bootstrap-registration-issues"></a>

节点注册是计算节点在引导期间执行的第一个操作。该节点调用 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.
```

### 错误的实例配置文件
<a name="troubleshooting-compute-node-bootstrap-wrong-instance-profile"></a>

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

```
<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 创建实例配置文件](getting-started_create-cng_instance-profile.md)。

### 无法连接到 AWS PCS 端点
<a name="troubleshooting-compute-node-bootstrap-connect-to-endpoints"></a>

如果您的计算节点位于私有子网中，请确保您已为 PC AWS S 配置了 VPC 终端节点，或者您的子网具有通往 NAT 网关的路由以进行互联网访问。有关更多信息，请参阅下列内容：
+ [使用 *Amazon Virtual Private Cloud AWS PrivateLink* 指南中的接口 VPC 终端节点访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。
+ [AWS PCS 的终端节点和服务配额](service-endpoints-quotas.md).
+ 在《*亚马逊虚拟私有云用户指南*[》中将您的 VPC 连接到其他网络](https://docs.aws.amazon.com/vpc/latest/userguide/extend-intro.html)
+ [AWS PCS 联网](working-with_networking.md)

### AWS PCS 端点配置错误
<a name="troubleshooting-compute-node-bootstrap-misconfigured-pcs-endpoint"></a>

如果您看到类似于以下内容的错误消息，请验证与您的 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)](vpc-interface-endpoints.md)。

### 没有公有 IP 的公有子网中的实例
<a name="troubleshooting-compute-node-bootstrap-public-subnet-no-public-ip"></a>

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

带有互联网网关的子网中的实例必须具有公有 IP 地址。要解决此问题，请选择以下选项之一：
+ 将 PCS 的 VP AWS C 终端节点添加到您的集群 VPC。这使实例能够与 AWS PCS 通信，而无需公有 IP 地址通过互联网网关。
+ 使用带有 NAT 网关的私有子网，这样就不需要公有 IP 地址。
+ 通过您的子网或启动模板启用自动公有 IP 地址分配，以便实例可以通过互联网网关联系 API。请注意，此选项对多网络接口实例无效。

### 公有子网中的多 NIC 实例
<a name="troubleshooting-compute-node-bootstrap-multi-nic-public-subnet"></a>

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

AWS 公有 IP 地址只能分配给使用单个网络接口启动的实例。有关 IP 地址的更多信息，请参阅《适用于 *Linux 实例的 Amazon EC2 用户指南》中的 “在实例*[启动期间分配公有 IPv4 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#public-ip-addresses)”。

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

### 集群密钥已被删除或标记为删除
<a name="troubleshooting-compute-node-bootstrap-cluster-secret-deleted"></a>

如果 Secr AWS ets Manager 中的 Slurm 共享密钥已被删除或标记为删除，则计算节点将无法注册，您的集群将受到损害。

AWS 当你创建集群时，PCS 会自动在 Secr AWS ets Manager 中创建 Slurm 共享密钥（名称格式:`pcs!slurm-secret-<cluster-id>`）。此密钥是集群中安全通信所必需的。有关更多信息，请参阅 [在 AWS PCS 中使用集群密钥](working-with_clusters_secrets.md)。

如果此密钥被删除或标记为删除，则新节点将无法加入集群，并且控制器或其他集群守护程序（例如`slurmd`和`slurmdbd`）在重新启动后可能无法重新加入集群。

要解决此问题，如果已删除的密钥仍在恢复窗口内，则可以将其恢复。有关详细说明，请参阅[恢复 S AWS ecrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_restore-secret.html)。

如果恢复窗口过期，则无法恢复密钥，也无法恢复受影响的 AWS PCS 集群。您需要使用相同的配置创建一个新集群。 AWS PCS 会自动创建新的调度程序密钥。

## Slurm 集群加入问题
<a name="troubleshooting-compute-node-bootstrap-slurm-issues"></a>

成功注册节点后，计算节点将尝试加入 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"] ----
```

### 安全组配置
<a name="troubleshooting-compute-node-bootstrap-security-groups"></a>

确认您的安全组配置正确，允许计算节点和 Slurm 控制器之间进行通信。安全组必须允许以下流量：
+ 用于`slurmd`与之通信的端口 6817 `slurmctld`
+ 端口 6818 用于 pin `slurmctld` g `slurmd`

有关安全组要求的更多信息，请参阅以下主题：
+ [为 AWS PCS 创建安全组](getting-started_create-sg.md)
+ [为 AWS PCS 创建启动模板](getting-started_create-cng_launch-templates.md)
+ [安全组要求和注意事项](working-with_networking_sg.md#working-with_networking_sg-requirements)

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

### 缺少英伟达驱动程序
<a name="troubleshooting-compute-node-bootstrap-missing-nvidia-drivers"></a>

如果实例启动正确，但作业未启动，并且您在实例日志中看到类似于以下内容的错误消息，则可能缺少 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-（可选）安装其他驱动程序、库和应用程序软件](working-with_ami_custom_install-software.md)。

### ResumeTimeout 到达
<a name="troubleshooting-compute-node-bootstrap-resume-timeout"></a>

如果计算节点及其 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)](working-with_ami_custom.md)。

### Slurmctld 无法 ping 计算节点
<a name="troubleshooting-compute-node-bootstrap-slurmctld-ping-issue"></a>

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

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

验证您的安全组是否包含所有必需的规则，如中所述[安全组要求和注意事项](working-with_networking_sg.md#working-with_networking_sg-requirements)。