本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:使用 cloud-init boothook 运行早期启动操作
在启动模板"userData"中将此脚本作为的值提供。有关更多信息,请参阅 使用以下内容的 Amazon EC2 用户数据 AWS 个。
某些配置必须在启动序列的最开始、 AWS PCS 引导启动之前以及任何服务使用硬件之前运行。典型案例是当进程保存 GPU 时无法生效的 GPU 配置命令,例如启用 NVIDIA Multi-Instance GPU (MIG) 模式,以及需要重启才能生效的操作,例如更改 GPU ECC 模式。此阶段的重启是安全的,因为 AWS PCS的引导尚未开始。不要在启动过程的后期重启,例如从节点生命周期操作脚本中重新启动:在那里重启会中断 AWS PCS 的引导顺序。有关更多信息,请参阅 中节点生命周期操作的最佳实践 AWS 个。
要创建启动挂钩,请在用户数据中添加一个内容类型的text/cloud-boothook区块。该块包含脚本本身。boothook 是用户数据中最早可用的挂钩:在处理区块后,在诸如注册节点的 AWS PCS 用户数据块等cloud-config指令之前bootcmd和之前,立即cloud-init运行它。boothook 在每次启动时都会运行,包括它本身可能触发的重启,因此脚本必须是等效的:先检查当前状态,跳过已经完成的工作。有关更多信息,请参阅 cloud-init 文档
以下示例在所有 GPU 上启用 MIG 模式,并在每次启动时创建 MIG 实例。由于尚未启动 GPU 客户端,因此模式更改会立即生效,无需重启。
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" #!/bin/bash if ! nvidia-smi -i 0 -q | grep -A1 'MIG Mode' | grep -q 'Current.*Enabled'; then nvidia-smi -mig 1 fi if [ -z "$(nvidia-smi -L | grep MIG)" ]; then for i in 0 1 2 3 4 5 6 7; do nvidia-smi mig -i $i -cgi 9,14,19,19 -C done fi --==MYBOUNDARY==--
如果您的操作显示需要重启,请在状态更改后从同一个书签中重新启动。在下次启动时,指数等性检查会发现工作已经完成,因此节点继续正常进入 AWS PCS 引导。