本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS PCS 中使用節點生命週期動作執行自訂指令碼
節點生命週期動作會在運算節點生命週期中定義的點執行自訂指令碼。使用它們掛載檔案系統、加入目錄服務、安裝軟體或設定監控。您可以在運算節點群組組態中定義指令碼,並在運算節點群組和叢集之間重複使用這些指令碼。
節點生命週期動作是 AWS PCS 在運算節點生命週期中特定時間點自動執行的指令碼。您可以在運算節點群組組態中定義指令碼:每個指令碼所在的位置 (Amazon S3 或 HTTPS)、要傳遞的引數、執行的階段、在重新開機時重新執行,以及在失敗時該怎麼做。 AWS PCS 會擷取指令碼、將其快取在執行個體上、執行為 root,並將其輸出寫入專用日誌檔案。
節點生命週期動作提供:
-
可重複使用性 — 參考來自具有不同引數之許多運算節點群組的相同指令碼。
-
依指令碼錯誤處理 — 終止節點、停止序列或繼續失敗。
-
API 原生組態 — 透過 定義和更新生命週期動作
UpdateComputeNodeGroup。組態變更會耗盡並取代現有的節點。如需詳細資訊,請參閱在 AWS PCS 中設定節點生命週期動作。
生命週期階段
AWS PCS 目前支援兩個階段。在每個階段中,指令碼會依照您定義的順序執行。根據預設,指令碼只會在第一次開機時執行;executionPolicy將其設定為 EVERY_BOOT,在重新啟動時也會重新執行。如需詳細資訊,請參閱在 AWS PCS 中設定節點生命週期動作。
階段 |
執行時 |
可用的服務 |
一般用途 |
|---|---|---|---|
已引導節點 ( |
在 AWS PCS 完成節點設定並在 |
網路和 Amazon S3 已啟動,且 SSH、SSM、NTP (chrony) 和 cron 已啟用除錯。 AWS PCS 受管設定已完成 (設定了 Slurm,停用了超執行緒),因此您可以依賴它。Slurm 用戶端命令尚無法使用。 |
在節點接受任務之前必須完成的任務,例如掛載共用儲存、設定聯網或安裝軟體套件。 |
節點就緒 ( |
在 |
|
需要執行 Slurm 的任務。 |
nodeReady 和任務分派視窗
nodeReady 指令碼會在 slurmd 啟動後執行,因此有一個短暫的時段,排程器可能會在nodeReady指令碼完成之前將任務分派至節點。如果指令碼必須在任何任務執行之前完成:
-
如果不需要 Slurm 命令,請將其移至
nodeBootstrapped階段。 -
使用 Slurm Prolog。
執行的運作方式
第一次啟動時:
-
節點開機, AWS PCS 代理程式會呼叫
RegisterComputeNodeGroupInstance。 -
代理程式快取生命週期組態並下載指令碼。
-
AWS PCS 組態階段會執行 (設定 Slurm、停用超執行緒等)。
-
節點引導指令碼會依照您定義的順序執行。
-
slurmd會啟動 ,而節點會向 Slurm 控制器註冊。此時,節點可以接受任務。 -
節點就緒指令碼會依照您定義的順序執行。這些指令碼會在節點可用於接受任務之後執行,因此排程器可能會在任務完成之前分派任務 (請參閱 生命週期階段)。
重新啟動時,相同的 nodeBootstrapped → slurmd → nodeReady序列會執行。只有標示為EVERY_BOOT重新執行的指令碼。設定為 FIRST_BOOT_ONLY(預設) 的指令碼會略過。scriptCachingPolicy 控制是否重新下載指令碼。如需詳細資訊,請參閱在 AWS PCS 中設定節點生命週期動作。
如需每個階段的指令碼數量限制、引數和指令碼名稱長度,以及指令碼大小上限,請參閱 AWS PCS API 參考中的 UpdateComputeNodeGroup。