View a markdown version of this page

更新调度程序版本 AWS PCS 集群 - AWS 个

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

更新调度程序版本 AWS PCS 集群

使用以下步骤更新集群上的调度程序版本。有两种选择,具体取决于您是否可以容忍工作中断。有关在选项之间进行选择的更多信息,请参阅更新中集群的调度器版本 AWS 个

选项 1:滚动更新

当舰队继续运行时,控制器会更新。现有节点将继续使用之前的 Slurm 版本,直到它们被耗尽并被替换。更新后启动的新节点使用目标版本。正在运行的作业不会中断。

何时使用

  • 集群控制器使用的是 Slurm 版本 24.05 或更高版本。

  • 您可以提供同时包含当前版本和目标 Slurm 版本的 AMI。

步骤 0-检查起始状态

您的集群正在运行控制器版本 “A”(例如 24.11),并且您想迁移到版本 “B”(例如 25.11)。使用集群节点中的以下命令,确认队列中的所有计算节点都运行相同的主版本:

scontrol show nodes | grep "Version=" # Example output: # NodeAddr=compute-1 NodeHostName=compute-1 Version=24.11.7 # NodeAddr=compute-2 NodeHostName=compute-2 Version=24.11.7

确认计算节点上的 AWS PCS 代理版本。使用 Systems Manager 连接到节点并查看引导日志:

grep "PCS Agent version" /var/log/amazon/pcs/bootstrap.log | tail -1 # Example output: # /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Bootstrap starting with PCS Agent version: 1.3.2-1

滚动更新要求所有计算节点 AMI 上的 AWS PCS 代理版本 1.4.0 或更高版本。有关更多信息,请参阅 AWS PCS 代理版本

第 1 步 — 准备并推出双版本 AMI

构建或识别同时包含 Slurm 版本 A 和版本 B 以及最新 AWS 的 PCS 代理的 AMI。

  • 您可以使用最新的 PCS-ready DLAMI。这些 AMI 附带了最新的三个支持的 Slurm 版本。有关更多信息,请参阅 将 PCS-ready DLAMI 与 AWS 个

  • 您可以按照 Slurm 包和 AWS PCS 代理的安装步骤构建自定义 AMI。有关更多信息,请参阅 适用于 AWS PCS 的自定义 Amazon 机器映像 (AMIs)

  • 不能使用 AWS PCS 示例 AMI。此类 AMI 不是为生产而设计的,目前仅包含一个 Slurm 版本。

注意

如果您的 AMI 包含两个以上的 Slurm 版本, AWS PCS 会自动选择与控制器匹配的版本。安装其他版本不会导致问题。

AMI 准备就绪后:

  1. 调用UpdateComputeNodeGroup每个计算节点组以设置新的双版本 AMI。节点将被 AWS PCS 设置为耗尽状态,并将迁移到新的 AMI。

  2. 等待耗尽的节点完成任务,终止,然后使用新的双版本 AMI 替换为节点。通过以下方式检查集群中的所有 EC2 实例是否使用新 AMI:

    aws ec2 describe-instances \ --filters "Name=tag:aws:pcs:cluster-id,Values=cluster-id" \ --query "Reservations[].Instances[].[InstanceId,ImageId,State.Name]" \ --output table

步骤 2-更新集群控制器

scheduler.version设置UpdateCluster为版本 B 的情况下调用

AWS 管理控制台
  1. 打开 AWS PCS 控制台,网址为https://console.aws.amazon.com/pcs/

  2. 在导航窗格中,选择集群

  3. 选择要更新的集群,然后选择编辑

  4. 在 “集群详细信息” 下,从 “调度程序” 下拉列表中选择目标调度程序版本。

  5. 选择 “更新” 以提交版本更新。

  6. 监控集群状态。群集在更新UPDATING期间显示,并在ACTIVE完成后返回。更新通常会在 5-15 分钟内完成。

AWS CLI
aws pcs update-cluster \ --cluster-identifier cluster-id \ --scheduler version=25.11

等待集群返回ACTIVE。更新通常会在 5-15 分钟内完成。

在此操作期间,控制器短暂不可用:

  • 在计算节点上运行的作业将继续执行

  • 在更新完成之前,新的任务提交和调度程序命令不可用。

  • 自动扩展将暂停,直到集群恢复到ACTIVE为止。

更新后,计算队列处于混合状态:更新前运行的节点继续使用 Slurm 版本 Aslurmd;新节点使用 Slurm 版本 B,这是预料之中的。

注意

当队列仍包含版本 A 上的节点时,请勿添加特定于版本 B 的 Slurm 设置。配置已分发到所有节点;旧版本slurmd可能无法识别新参数。

如果集群在 30 分钟UPDATE_FAILED内未返回ACTIVE或未恢复,请联系 Supp AWS ort 寻求帮助。

第 3 步 — 清空仍在运行 Slurm 版本 A 的节点

识别并清空仍使用先前版本的节点。在群集的节点上,运行:

scontrol show nodes | grep "Version=" scontrol update NodeName=node State=DRAIN Reason="Slurm version update"

一旦耗尽的节点完成当前任务,它们就会终止并被 Slurm 版本 B 上的节点所取代。

第 4 步 — 在 Slurm 版本 B 上验证一致的舰队

确认所有节点报告版本 B。在集群的某个节点上,运行:

scontrol show nodes | grep "Version="

现在,所有节点都应报告 Slurm 版本 B。更新已完成。

选项 2: Full-fleet 回收

整个队列会在控制器更新之前终止,然后从具有目标 Slurm 版本的新 AMI 向上扩展。此过程更简单,但需要终止所有节点和正在运行的作业。

何时使用

  • 您不能为安装了两个 Slurm 版本的 AMI 提供。

  • 集群控制器版本为 23.11(选项 1 不适用于 23.11 集群)。

注意

一次性终止整个舰队会增加在缩减规模时出现容量不足错误的可能性。考虑使用预留容量或安排在非高峰时段。

步骤 0-检查起始状态

您的集群正在运行控制器版本 “A”(例如 24.11),并且您想迁移到版本 “B”(例如 25.11)。使用集群节点中的以下命令,确认队列中的所有计算节点都运行相同的主版本:

scontrol show nodes | grep "Version=" # Example output: # NodeAddr=compute-1 NodeHostName=compute-1 Version=24.11.7 # NodeAddr=compute-2 NodeHostName=compute-2 Version=24.11.7

确认计算节点上的 AWS PCS 代理版本。使用 Systems Manager 连接到节点并查看引导日志:

grep "PCS Agent version" /var/log/amazon/pcs/bootstrap.log | tail -1 # Example output: # /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Bootstrap starting with PCS Agent version: 1.3.2-1

在目标 AMI 上使用最新的 AWS PCS 代理。有关更多信息,请参阅 AWS PCS 代理版本

步骤 1-准备目标 AMI

构建或识别包含 Slurm 版本 B 和最新 AWS 的 PCS 代理的 AMI。

第 2 步 — 缩小整个机队的规模

记录每个计算节点组maxNodeCount的当前minNodeCount和 — 您将在步骤 4 中恢复这些节点。

for cng in $(aws pcs list-compute-node-groups --cluster-identifier cluster-id --query "computeNodeGroups[].id" --output text); do aws pcs get-compute-node-group \ --cluster-identifier cluster-id \ --compute-node-group-identifier "$cng" \ --query "computeNodeGroup.{Id:id,AmiId:amiId,Min:scalingConfiguration.minInstanceCount,Max:scalingConfiguration.maxInstanceCount}" \ --output table done
警告

以下操作将终止所有正在运行的节点及其上的作业。

0在每个计算节点组上设置minNodeCount为:maxNodeCount

aws pcs update-compute-node-group \ --cluster-identifier cluster-id \ --compute-node-group-identifier cng-id \ --scaling-configuration '{"minNodeCount": 0, "maxNodeCount": 0}'

在继续操作之前,请验证没有标记为aws:pcs:cluster-id与您的集群匹配的实例在运行:

aws ec2 describe-instances \ --filters "Name=tag:aws:pcs:cluster-id,Values=cluster-id" \ --query "Reservations[].Instances[].[InstanceId,ImageId,State.Name]" \ --output table

步骤 3-更新集群控制器

AWS 管理控制台
  1. 打开 AWS PCS 控制台,网址为https://console.aws.amazon.com/pcs/

  2. 在导航窗格中,选择集群

  3. 选择要更新的集群,然后选择编辑

  4. 在 “集群详细信息” 下,从 “调度程序” 下拉列表中选择目标调度程序版本。

  5. 选择 “更新” 以提交版本更新。

  6. 监控集群状态。群集在更新UPDATING期间显示,并在ACTIVE完成后返回。更新通常会在 5-15 分钟内完成。

AWS CLI
aws pcs update-cluster \ --cluster-identifier cluster-id \ --scheduler version=25.11

等待集群返回ACTIVE。更新通常会在 5-15 分钟内完成。

如果集群在 30 分钟UPDATE_FAILED内未返回ACTIVE或未恢复,请联系 Supp AWS ort 寻求帮助。

步骤 4-更新计算节点组并恢复容量

对于每个计算节点组,设置新的 AMI 并恢复原来的最小和最大容量限制:

aws pcs update-compute-node-group \ --cluster-identifier cluster-id \ --compute-node-group-identifier cng-id \ --ami-id new-ami-id \ --scaling-configuration '{"minNodeCount": previous-min, "maxNodeCount": previous-max}'

集群向上扩展。所有新节点都使用最新的 AWS PCS 代理运行 Slurm 版本 B。

示例:跨多个版本更新

如果目标版本不在当前版本的兼容性窗口内,则必须将控制器移至一个或多个中间版本,一次更新一跳。在当前控制器版本的兼容性窗口中,每个跳都必须以支持的版本为目标。

由于在更新控制器之前会将队列选项 2: Full-fleet 回收缩放到零,因此当控制器在版本之间移动时,不会运行任何计算节点。因此,您的 AMI 可以直接使用最终目标版本——每次跳跃仅重复控制器更新(步骤 3)。

以下示例使用选项 2 程序将集群从 23.11 更新到 25.11。23.11 不在 25.11 的兼容性窗口之外,因此控制器分两跳更新(23.11 到 25.05,然后是 25.05 到 25.11,然后 25.05 到 25.11)。按照选项 2 的步骤进行操作,将步骤 3 拆分为每跳一个更新:

  1. 步骤 1-准备目标 AMI。使用最终版本 (25.11) 和最新的 AWS PCS 代理构建或识别 AMI。请参阅步骤 1-准备目标 AMI

  2. 第 2 步 — 缩小整个舰队的规模。记录当前容量(参见第 2 步 — 缩小整个机队的规模),然后将每个计算节点组设置为零。

    aws pcs update-compute-node-group \ --cluster-identifier my-cluster \ --compute-node-group-identifier my-cng \ --scaling-configuration '{"minNodeCount": 0, "maxNodeCount": 0}'
  3. 步骤 3a — 将控制器从 23.11 更新到 25.05。等待集群返回ACTIVE

    aws pcs update-cluster --cluster-identifier my-cluster \ --scheduler version=25.05
  4. 步骤 3b — 将控制器从 25.05 更新到 25.11。等待集群返回ACTIVE

    aws pcs update-cluster --cluster-identifier my-cluster \ --scheduler version=25.11
  5. 步骤 4-更新计算节点组并恢复容量。在每个计算节点组上设置 25.11 AMI 并恢复原始容量限制(参见步骤 4-更新计算节点组并恢复容量)。

    aws pcs update-compute-node-group \ --cluster-identifier my-cluster \ --compute-node-group-identifier my-cng \ --ami-id ami-0123456789abcdef0 \ --scaling-configuration '{"minNodeCount": previous-min, "maxNodeCount": previous-max}'
注意

每个控制器跳跃都必须位于前一个版本的兼容性窗口内。要查找有效的中间版本,请参阅版本兼容性。在步骤 3a 和 3b 中,队列保持为零,因此不需要中间 AMI 更新。