本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中运行带有节点生命周期操作的自定义脚本 AWS 个
节点生命周期操作在计算节点生命周期的定义点运行自定义脚本。使用它们来装载文件系统、加入目录服务、安装软件或设置监控。您可以在计算节点组配置中定义脚本,并在计算节点组和集群中重复使用它们。
节点生命周期操作是 AWS PCS 在计算节点生命周期的特定时刻自动运行的脚本。您可以在计算节点组配置中定义脚本:每个脚本的存放位置(Amazon S3 或 HTTPS)、要传递的参数、运行的阶段、重启时何时重新运行以及失败时该怎么做。 AWS PCS 检索脚本,将其缓存在实例上,以其身份运行root,并将其输出写入专用日志文件。
节点生命周期操作提供:
-
可重用性 — 使用不同的参数引用来自多个计算节点组的相同脚本。
-
Per-script 错误处理 -终止节点、停止序列或在出现故障时继续。
-
API-native 配置 -通过定义和更新生命周期操作
UpdateComputeNodeGroup。配置更改会耗尽并替换现有节点。有关更多信息,请参阅 在中配置节点生命周期操作 AWS 个。
生命周期阶段
AWS PCS 目前支持两个阶段。在每个阶段中,脚本按照您定义的顺序运行。默认情况下,脚本仅在首次启动时运行;将其设置executionPolicyEVERY_BOOT为在重新启动时也重新运行。有关更多信息,请参阅 在中配置节点生命周期操作 AWS 个。
阶段 |
当它运行时 |
可用的服务 |
典型用途 |
|---|---|---|---|
节点 bootstrapped () |
在 AWS PCS 完成节点设置之后和 |
网络和亚马逊 S3 已启动,SSH、SSM、NTP(chrony)和 cron 处于活动状态以进行调试。 AWS PCS-managed 设置已完成(已配置、 Hyper-Threading 禁用 Slurm),因此您可以信赖它。Slurm 客户端命令尚不可用。 |
节点接受任务之前必须完成的任务,例如装载共享存储、配置网络或安装软件包。 |
节点就绪 ( |
|
|
需要 Slurm 运行的任务。 |
NodeReady 和任务调度窗口
nodeReady脚本在slurmd启动后运行,因此会有一个简短的窗口,调度程序可能会在nodeReady脚本完成之前将任务调度到节点。如果脚本必须在任何作业运行之前完成:
-
如果不需要 Slurm 命令,请将其移至
nodeBootstrapped舞台。 -
使用 Slurm 序言。
执行是如何运作的
首次启动时:
-
节点启动并调用 AWS PCS 代理
RegisterComputeNodeGroupInstance。 -
代理缓存生命周期配置并下载脚本。
-
AWS PCS 配置阶段运行(配置、 Hyper-Threading 禁用 Slurm 等)。
-
节点引导脚本按照您定义的顺序运行。
-
slurmd启动,节点向 Slurm 控制器注册。此时,该节点可以接受任务。 -
节点就绪脚本按照您定义的顺序运行。这些脚本在节点可以接受任务后运行,因此调度程序可能会在任务完成之前调度任务(参见生命周期阶段)。
重新启动时,相同的 nodeBootstrapped slurmd → nodeReady 序列运行。只有标记为EVERY_BOOT重新运行的脚本。跳过设置为FIRST_BOOT_ONLY(默认)的脚本。scriptCachingPolicy控制是否重新下载脚本。有关更多信息,请参阅 在中配置节点生命周期操作 AWS 个。
有关每个阶段的脚本数量、参数和脚本名称长度以及最大脚本大小的限制,请参阅 UpdateComputeNodeGroup AWS PCS API 参考文档。