构建自定义 Amazon ParallelCluster AMI - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

构建自定义 Amazon ParallelCluster AMI

重要

如果您构建自定义 AMI,则必须重复执行用于随每个新的 AMI 创建的步骤。Amazon ParallelCluster发布。

在继续阅读之前,我们建议您首先查看自定义引导操作部分以确定您希望进行的更改能否使用将来的内容写入脚本以及是否受这些支持Amazon ParallelCluster版本。

尽管构建自定义 AMI 并不理想,但仍然存在为构建自定义 AMIAmazon ParallelCluster是必要的。本教程将指导您完成针对这些场景构建自定义 AMI 的过程。

如何自定义 Amazon ParallelCluster AMI

可通过两种方式构建自定义Amazon ParallelClusterAMI。这两种方法之一是使用Amazon ParallelClusterCLI。另一种方法需要您在您的下方构建新的可用 AMIAmazon手动帐户。

构建自定义 Amazon ParallelCluster AMI

如果您已具有自定义 AMI 和软件,则可以应用Amazon ParallelCluster最重要的是。Amazon ParallelCluster依靠 EC2 Image Builder 服务构建自定义 AMI。有关更多信息,请参阅 。Image Builder 用户指南.

关键要点:

  • 该过程大约需要 1 个小时。如果有额外的话,这次会有所不同Build > Components 在构建时安装。

  • AMI 将使用主要组件的版本标记,例如内核、调度程序、EFA 驱动程序等,其中的一部分也将在 AMI 描述中报告。

  • 从开始Amazon ParallelCluster3.0.0 可以使用一组新的 CLI 命令来管理映像的整个生命周期,build-imagelist-imagesdescribe-imagedelete-image命令。

  • 此方法是可重复的,您可以重新执行它来保持 AMI 更新(例如操作系统更新),并在更新现有集群期间使用新映像。

步骤:

  1. 配置Amazon Web Services 账户凭据以便Amazon ParallelCluster客户可以拨打电话Amazon代表您执行 API 操作。所需的权限集记录在Amazon Identity and Access Management中的角色Amazon ParallelCluster3.x.

  2. 通过指定创建基本映像构建器配置文件InstanceType用于构建映像和ParentImage用作 AMI 创建的起点(请参阅映像配置对于其他可选的构建参数)。

    Build: InstanceType: <BUILD_INSTANCE_TYPE> ParentImage: <BASE_AMI_ID>
  3. 使用命令pcluster build-image构建Amazon ParallelCluster以您作为基础的 AMI 为起点:

    pcluster build-image --image-id IMAGE_ID --image-configuration IMAGE_CONFIG.yaml --region REGION
    警告

    pcluster build-image使用默认 VPC。如果默认 VPC 已被删除,则可能通过使用Amazon Control Tower要么Amazon登陆区域,则必须在映像配置文件中指定子网 ID。有关更多信息,请参阅 。SubnetId.

    有关其他参数,请参阅 pcluster Build-image 命令。之前的命令将执行以下操作:

    • 创建CloudFormation基于映像配置的堆栈。堆栈将创建所有 EC2ImageBuilder构建所需的资源。

    • 在创建的资源中,将有官方ImageBuilder Amazon ParallelCluster组件在其上面自定义ImageBuilder可以指定组件。

    • EC2ImageBuilder启动一个构建实例,在其中应用Amazon ParallelCluster食谱并安装Amazon ParallelCluster软件堆栈并执行必要的配置任务。

    • 该实例将被停止,并从中创建一个新的 AMI。

    • 另一个实例将从新创建的 AMI 启动。在测试阶段,EC2ImageBuilder将运行最终在中定义的测试ImageBuilder组件

    • 如果构建成功,则会删除堆栈。如果构建失败,堆栈将被保留以供检查。

  4. 您可以执行以下命令监控构建过程的状态,并在构建完成后检索 AMI ID。

    pcluster describe-image --image-id IMAGE_ID --region REGION
  5. 要创建集群,请在CustomAmi群集配置中的字段。

对 AMI 创建过程进行排查和监控

映像创建应该需要大约 1 个小时。您可以监控生成过程的状态,执行pcluster describe-image命令或者使用日志检索命令跟踪进度。

pcluster describe-image --image-id IMAGE_ID --region REGION

如前所述,build-image命令会创建Amazon CloudFormation堆叠构建映像所需的所有 EC2 资源,并启动 EC2 Image Builder 流程。

在执行之后build-image命令,可以检索CloudFormation使用堆栈事件pcluster get-image-stack-events(你可以使用--query参数以查看最新事件。有关筛选的详细信息,请参阅 Amazon Command Line Interface 用户指南中的筛选 Amazon CLI 输出

$ pcluster get-image-stack-events --image-id IMAGE_ID --region REGION --query "events[0]" { "eventId": "ParallelClusterImage-CREATE_IN_PROGRESS-2021-07-28T08:41:46.626Z", "physicalResourceId": "arn:aws:imagebuilder:eu-west-1:xxx:image/parallelclusterimage-myimage/3.1.2/1", "resourceStatus": "CREATE_IN_PROGRESS", "resourceStatusReason": "Resource creation Initiated", "resourceProperties": "{\"InfrastructureConfigurationArn\":\"arn:aws:imagebuilder:eu-west-1:xxx:infrastructure-configuration/parallelclusterimage-3cbb8760-ef7f-11eb-a4c0-02abee05253b\",\"ImageRecipeArn\":\"arn:aws:imagebuilder:eu-west-1:xxx:image-recipe/parallelclusterimage-myimage/3.1.2\",\"DistributionConfigurationArn\":\"arn:aws:imagebuilder:eu-west-1:xxx:distribution-configuration/parallelclusterimage-3cbb8760-ef7f-11eb-a4c0-02abee05253b\",\"Tags\":{\"parallelcluster:image_name\":\"myimage\",\"parallelcluster:image_id\":\"myimage\"}}", "stackId": "arn:aws:cloudformation:eu-west-1:xxx:stack/alinux2-image/3cbb8760-ef7f-11eb-a4c0-02abee05253b", "stackName": "myimage", "logicalResourceId": "ParallelClusterImage", "resourceType": "AWS::ImageBuilder::Image", "timestamp": "2021-07-28T08:41:46.626Z" }

大约 15 分钟后,堆栈事件将出现与 Image Builder 进程创建相关的日志事件条目。从这一刻起,就可以列出图像日志流并 Image Builder 过使用pcluster list-image-log-streamspcluster get-image-log-events命令。

$ pcluster list-image-log-streams --image-id IMAGE_ID --region REGION \ --query 'logStreams[*].logStreamName' [ "3.1.2/1" ] $ pcluster get-image-log-events --image-id IMAGE_ID --region REGION \ --log-stream-name 3.1.2/1 --limit 3 { "nextToken": "f/36295977202298886557255241372854078762600452615936671762", "prevToken": "b/36295977196879805474012299949460899222346900769983430672", "events": [ { "message": "ExecuteBash: FINISHED EXECUTION", "timestamp": "2021-07-29T16:11:47.429Z" }, { "message": "Document arn:aws:imagebuilder:eu-west-1:xxx:component/parallelclusterimage-test-c6200fa0-f072-11eb-b9ab-063c2565c5c1/3.1.2/1", "timestamp": "2021-07-29T16:11:47.570Z" }, { "message": "TOE has completed execution successfully", "timestamp": "2021-07-29T16:11:47.672Z" } ] }

继续查看describe-image命令直到你会看到BUILD_COMPLETEstatus。

$ pcluster describe-image --image-id IMAGE_ID --region REGION { "imageConfiguration": { "url": "https://parallelcluster-ae5a9f1a011e9d83-v1-do-not-delete.s3.eu-west-1.amazonaws.com/parallelcluster/3.1.2/images/alinux2-0729-r13st0t82cuwjvko/configs/image-config.yaml?Signature=..." }, "imageId": "alinux2-0729", "imagebuilderImageStatus": "AVAILABLE", "imageBuildStatus": "BUILD_COMPLETE", ... "ec2AmiInfo": { "amiName": "alinux2-0729 2021-07-29T13-45-08.518Z", "amiId": "ami-05fc2f48ba82e643b", "description": "Amazon ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1", "state": "AVAILABLE", }

如果您需要帮助来调试 AMI 创建问题,则可以创建映像日志存档。要启动此过程,请参阅以下步骤。

可以将日志存档到 S3 或本地文件中(取决于--output参数)。

$ pcluster export-image-logs --image-id IMAGE_ID --region REGION \ --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER { "url": "https://bucketname.s3.eu-west-1.amazonaws.com/BUCKET-FOLDER/myimage-logs-202109071136.tar.gz?AWSAccessKeyId=..." } $ pcluster export-image-logs --image-id IMAGE_ID \ --region REGION --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER --output-file /tmp/archive.tar.gz { "path": "/tmp/archive.tar.gz" }

档案包含CloudWatch记录与 Image Builder 进程相关的流和Amazon CloudFormation堆栈事件。请注意,命令执行可能需要几分钟时间。

管理自定义 AMI

从开始Amazon ParallelCluster3.0.0 在 CLI 中添加了一组新的命令,用于构建、监控和管理映像生命周期。请看看pcluster 命令有关 Image 相关命令的更多信息。

修改 Amazon ParallelCluster AMI

这种方法包括修改官员Amazon ParallelClusterAMI 通过在其上添加自定义。基地Amazon ParallelCluster此 AMI 具有新的版本,此 AMI 具有以下所需的所有组件:Amazon ParallelCluster在安装和配置后正常运行。您可以此为基础开始操作。

关键要点:

  • 这种方法比build-image命令但它是手动过程,不可重复。

  • 使用此方法,您将失去通过 CLI 提供的日志检索和映像生命周期管理命令的所有优势。

步骤:

  1. 查找与您使用的特定区域对应的 AMI。要找到它,你可以使用命令pcluster list-official-images命令使用--region参数来选择特定地区和--os--architecture参数以使用要使用的操作系统和架构过滤掉所需的 AMI。从输出中,您可以检索 EC2 映像 ID。

  2. 在 Amazon EC2/Images/AMI 控制台中,搜索检索到的 EC2 映像 ID,然后单击操作然后选择启动.

  3. 选择您的实例类型和属性,然后启动您的实例。

  4. 使用操作系统用户和您的 SSH 密钥登录您的实例。

  5. 根据需要自定义您的实例。

  6. 运行以下命令以准备实例来创建 AMI:

    sudo /usr/local/sbin/ami_cleanup.sh
  7. 停止实例。

  8. 从实例创建新的 AMI。

  9. 在中输入新的 AMI IDCustomAmi群集配置中的字段。