本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建置自訂 AWS ParallelCluster AMI
使用 AWS ParallelCluster 命令列界面 (CLI) 或 API 時,您只需為建立或更新 AWS ParallelCluster 映像和叢集時建立 AWS 的資源付費。如需詳細資訊,請參閱AWS 所使用的 服務 AWS ParallelCluster。
此 PCUI 建立在無伺服器架構上,您可以在 AWS 免費方案類別中用於大多數情況。如需詳細資訊,請參閱PCUI成本。
重要
如果您建置自訂 AMI,則必須在每個新 AWS ParallelCluster 版本中重複用來建立自訂 AMI 的步驟。
在進一步閱讀之前,我們建議您先檢閱 自訂引導動作區段。判斷您欲進行的修改是否可以搭配未來的 AWS ParallelCluster 版本進行指令碼編寫和支援。
雖然一般情況下建置自訂 AMI 並不理想,但有些特定案例 AWS ParallelCluster 需要建置自訂 AMI for。本教學課程說明如何為這些案例建置自訂 AMI。
必要條件
-
AWS ParallelCluster 已安裝 。
-
AWS CLI 已安裝並設定 。
-
您有 Amazon EC2 金鑰對。
如何自訂 AWS ParallelCluster AMI
有兩種方法可以建置 custom AWS ParallelCluster AMI。這兩種方法之一是使用 AMI 建立新的 AWS ParallelCluster CLI。另一種方法需要您手動修改,以建置可在 下使用的新 AMI AWS 帳戶。
建置 custom AWS ParallelCluster AMI
如果您有自訂的 AMI 和軟體,您可以在其 AWS ParallelCluster 上套用 所需的變更。 AWS ParallelCluster 依賴 EC2 Image Builder 服務來建置自訂的 AMIs。如需詳細資訊,請參閱映像建置器使用者指南。
重點:
-
程序大約需要 1 小時。如果建置時間要安裝其他 Build /Components,則此時間可能會有所不同。
-
AMI 會加上主要元件的版本標籤。其中包括核心、排程器和 EFA 驅動程式。元件版本的子集也會在 AMI 描述中報告。
-
從 AWS ParallelCluster 3.0.0 開始,一組新的 CLI 命令可用來管理映像的生命週期。其中包括 build-image、list-images、describe-image 和 delete-image。
-
此方法可重複。您可以重新執行它以保持 AMIs 更新 (例如作業系統更新),然後在更新現有叢集時使用它們。
注意
如果您在 AWS 中國分割區中使用此方法,您可能會遇到網路錯誤。例如,當您從 GitHub 或作業系統儲存庫下載套件時,您可能會從 pcluster build-image
命令看到這些錯誤。如果發生這種情況,我們建議您使用下列其中一種替代方法:
-
遵循繞過此命令修改 an AWS ParallelCluster AMI的方法。
-
在另一個分割區和區域中建置映像,例如
us-east-1
,然後存放還原以將其移至中國區域。如需詳細資訊,請參閱《Amazon AMI 使用者指南》中的使用 S3 存放和還原 Word。 EC2
步驟:
-
設定您的 AWS 帳戶 登入資料,讓 AWS ParallelCluster 用戶端可以代表您呼叫 AWS API 操作。如需必要許可的清單,請參閱AWS Identity and Access Management 權限 AWS ParallelCluster。
-
建立基本建置映像組態檔案。若要執行此作業,請指定InstanceType要用來建置映像的 和 ParentImage。這些是用來建立 AMI 的起點。如需選用建置參數的詳細資訊,請參閱映像組態。
Build: InstanceType:
<BUILD_INSTANCE_TYPE>
ParentImage:<BASE_AMI_ID>
-
使用 CLI 命令從您提供做為基礎的 AMI 開始pcluster build-image建置 an AWS ParallelCluster AMI。
$
pcluster build-image --image-id
IMAGE_ID
--image-configurationIMAGE_CONFIG.yaml
--regionREGION
{ "image": { "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_IN_PROGRESS", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "region": "us-east-1", "version": "3.7.0" } }
警告
pcluster build-image
使用預設的 VPC。如果您使用 AWS Control Tower 或 AWS 登陸區域刪除預設 VPC,則必須在映像組態檔案中指定子網路 ID。如需詳細資訊,請參閱SubnetId。如需其他參數的清單,請參閱pcluster build-image命令參考頁面。上述命令的結果如下所示:
-
A CloudFormation 堆疊是根據映像組態建立。堆疊包含建置所需的所有 EC2 Image Builder 資源。
-
建立的資源包含自訂映像建置器 AWS ParallelCluster 元件可以新增至的官方映像建置器元件。若要了解如何建立自訂元件,請參閱 HPC for Public Sector Customer Workshop 中的自訂AMIs範例
。 -
EC2 Image Builder 會啟動建置執行個體、套用 AWS ParallelCluster 技術指南、安裝 AWS ParallelCluster 軟體堆疊,以及執行必要的組態任務。 AWS ParallelCluster 技術指南用於建置和引導 AWS ParallelCluster。
-
執行個體會停止,並從中建立新的 AMI。
-
另一個執行個體是從新建立的 AMI 啟動。在測試階段,EC2 Image Builder 會執行映像建置器元件中定義的測試。
-
如果建置成功,則會刪除堆疊。如果建置失敗,堆疊會保留並可供檢查。
-
-
您可以執行下列命令來監控建置程序的狀態。建置完成後,您可以執行它來擷取回應中提供的 AMI ID。
$
pcluster describe-image --image-id
IMAGE_ID
--regionREGION
# BEFORE COMPLETE { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?...", }, "imageId": "IMAGE_ID", "imagebuilderImageStatus": "BUILDING", "imageBuildStatus": "BUILD_IN_PROGRESS", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "region": "us-east-1", "version": "3.7.0", "cloudformationStackTags": [ { "value": "3.7.0", "key": "parallelcluster:version" }, { "value": "IMAGE_ID", "key": "parallelcluster:image_name" }, ... ], "imageBuildLogsArn": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/imagebuilder/ParallelClusterImage-IMAGE_ID", "cloudformationStackCreationTime": "2022-04-05T21:36:26.176Z" }
# AFTER COMPLETE { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..." }, "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_COMPLETE", "region": "us-east-1", "ec2AmiInfo": { "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z", "amiId": "ami-1234stuv5678wxyz", "description": "AWS 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", "tags": [ { "value": "2021.3.11591-1.el7.x86_64", "key": "parallelcluster:dcv_version" }, ... ], "architecture": "x86_64" }, "version": "3.7.0" }
-
若要建立叢集,請在叢集組態的 CustomAmi 欄位中輸入 AMI ID。
對 AMI 建立程序進行故障診斷和監控
影像建立會在 中完成約一小時。您可以執行 pcluster describe-image命令或日誌擷取命令來監控程序。
$
pcluster describe-image --image-id
IMAGE_ID
--regionREGION
此build-image命令會使用建置映像所需的所有 Amazon EC2 資源建立 a CloudFormation 堆疊,並啟動 EC2 Image Builder 程序。
執行 build-image命令後,可以使用 擷取 CloudFormation 堆疊事件pcluster get-image-stack-events。您可以使用 --query
參數篩選結果,以查看最新的事件。如需詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的篩選 AWS CLI 輸出。
$
pcluster get-image-stack-events --image-id
IMAGE_ID
--regionREGION
--query "events[0]"{ "eventId": "ParallelClusterImage-CREATE_IN_PROGRESS-2022-04-05T21:39:24.725Z", "physicalResourceId": "arn:aws:imagebuilder:us-east-1:123456789012:image/parallelclusterimage-IMAGE_ID/3.7.0/1", "resourceStatus": "CREATE_IN_PROGRESS", "resourceStatusReason": "Resource creation Initiated", "resourceProperties": "{\"InfrastructureConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"ImageRecipeArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/parallelclusterimage-IMAGE_ID/3.7.0\",\"DistributionConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"Tags\":{\"parallelcluster:image_name\":\"IMAGE_ID\",\"parallelcluster:image_id\":\"IMAGE_ID\"}}", "stackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "stackName": "IMAGE_ID", "logicalResourceId": "ParallelClusterImage", "resourceType": "AWS::ImageBuilder::Image", "timestamp": "2022-04-05T21:39:24.725Z" }
約 15 分鐘後,堆疊事件會出現在與映像建置器建立相關的日誌事件項目中。您現在可以使用 和 pcluster get-image-log-events命令列出映像日誌串流pcluster list-image-log-streams並監控映像建置器步驟。
$
pcluster list-image-log-streams --image-id
"3.7.0/1" ]IMAGE_ID
--regionREGION
\ --query 'logStreams[*].logStreamName'$
pcluster get-image-log-events --image-id
IMAGE_ID
--regionREGION
\ --log-stream-name 3.7.0/1 --limit 3{ "nextToken": "f/36295977202298886557255241372854078762600452615936671762", "prevToken": "b/36295977196879805474012299949460899222346900769983430672", "events": [ { "message": "ExecuteBash: FINISHED EXECUTION", "timestamp": "2022-04-05T22:13:26.633Z" }, { "message": "Document arn:aws:imagebuilder:us-east-1:123456789012:component/parallelclusterimage-test-abcd1234-ef56-gh78-ij90-1234abcd5678/3.7.0/1", "timestamp": "2022-04-05T22:13:26.741Z" }, { "message": "TOE has completed execution successfully", "timestamp": "2022-04-05T22:13:26.819Z" } ] }
繼續檢查 describe-image命令,直到您看到 BUILD_COMPLETE
狀態為止。
$
pcluster describe-image --image-id
IMAGE_ID
--regionREGION
{ "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..." }, "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_COMPLETE", "region": "us-east-1", "ec2AmiInfo": { "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z", "amiId": "ami-1234stuv5678wxyz", "description": "AWS 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", "tags": [ { "value": "2021.3.11591-1.el7.x86_64", "key": "parallelcluster:dcv_version" }, ... ], "architecture": "x86_64" }, "version": "3.7.0" }
如果您需要對自訂 AMI 建立問題進行故障診斷,請建立映像日誌的封存,如下列步驟所述。
視 --output
參數而定,可以將日誌封存在 Amazon S3 儲存貯體或本機檔案中。
$
pcluster export-image-logs --image-id
IMAGE_ID
--regionREGION
\ --bucketBUCKET_NAME
--bucket-prefixBUCKET_FOLDER
{ "url": "https://BUCKET_NAME.s3.us-east-1.amazonaws.com/BUCKET-FOLDER/IMAGE_ID-logs-202209071136.tar.gz?AWSAccessKeyId=..." }
$
pcluster export-image-logs --image-id
IMAGE_ID
\ --regionREGION
--bucketBUCKET_NAME
--bucket-prefixBUCKET_FOLDER
--output-file /tmp/archive.tar.gz{ "path": "/tmp/archive.tar.gz" }
封存包含與映像建置器程序和 AWS CloudFormation 堆疊事件相關的 CloudWatch Logs 串流。命令可能需要幾分鐘的時間才能執行。
管理自訂AMIs
從 AWS ParallelCluster 3.0.0 開始,在 CLI 中新增了一組新的命令來建置、監控和管理映像生命週期。如需命令的詳細資訊,請參閱叢集命令。
修改 an AWS ParallelCluster AMI
此方法包含透過在 official AWS ParallelCluster AMI 上新增自訂來修改 officialWord。base AWS ParallelCluster AMIs 會更新為新的版本。這些 AMIs 具有安裝和設定時, AWS ParallelCluster 運作所需的所有元件。您可以從其中一個作為基礎開始。
重點:
-
此方法比 build-image命令更快。不過,這是手動程序,無法自動重複。
-
透過此方法,您無法存取 CLI 提供的日誌擷取和映像生命週期管理命令。
步驟: