通過鏡像構建服務(ImageBuilder)匯入鏡像

更新時間:
Copy as MD

當您從其他雲平台、虛擬機器或物理機遷移上雲時,匯入的鏡像可能因缺少驅動或配置異常而無法正常啟動。本文介紹如何使用Elastic Compute Service的鏡像構建服務(ImageBuilder),在匯入鏡像的同時對其進行自動化檢測、修複、定製和分發,以確保鏡像在阿里雲環境的相容性和穩定性。

核心優勢

相較於常規的鏡像匯入方式,通過鏡像構建服務匯入鏡像為您提供了一個更強大、自動化的鏡像處理流水線,確保最終產生的鏡像是高品質且標準化的。其核心優勢體現在以下幾個方面:

  • 自動化修複:通過原始鏡像建立中轉執行個體,再通過執行個體進行離線修複,安裝雲上必要的一些組件。避免由於驅動缺失、配置異常帶來的執行個體啟動耗時間長度、初始化失敗等問題。

  • 自動安裝雲助手:通過鏡像構建修複鏡像時,可自主選擇是否安裝雲助手,協助您更高效地管理和操作執行個體。

  • 簡化匯入流程:支援自動檢測源鏡像中是否安裝NVMe驅動,並設定對應的鏡像管控屬性,減少建立執行個體時因NVMe約束導致失敗的可能性。

構建流程

鏡像構建服務通過一個自動化的多階段流程來處理鏡像。即使流程中的測試或分發階段失敗,在構建階段產生的目標鏡像依然可用。

流程階段

行為說明

注意事項

匯入

如果源鏡像是OSS中的檔案,系統會先調用常規的匯入鏡像功能,產生一個臨時的自訂鏡像。

構建完成後,匯入的原始鏡像會預設被刪除。如果需要在構建失敗時保留,可以指定ImportImageOptions.RetainImportedImage=true

準備

建立構建所需的臨機操作網路資源VPC、交換器、安全性群組(若無指定使用的安全性群組時建立)和一台中轉執行個體。

如果需要系統自動建立臨時的網路資源,需要確保有足夠的配額

檢測修複(當模板顯式指定了RepairMode 或者源鏡像不是公用鏡像時執行

若指定了RepairMode,則進入修複模式,按照修複項進行修複,並安裝雲助手,否則進入檢測模式,僅安裝雲助手。

如果發現鏡像為無效鏡像或者無法使用時,則會終止構建。

該階段會建立一台臨時執行個體,系統會將中轉執行個體的磁碟掛載到臨時執行個體,進行檢測和修複,會產生對應的執行個體費用。

構建

在中轉執行個體上,依次執行您在鏡像模板中定義的各個鏡像組件命令。所有命令執行完畢後,系統會基於當前中轉執行個體的狀態建立一個新的自訂鏡像,即最終的目標鏡像。

如果有構建命令失敗,則會終止構建。

如果源鏡像不攜帶雲助手,預設會在建立鏡像前卸載檢測修複階段安裝的雲助手,以保證鏡像一致性。若需要保留鏡像中的雲助手,可在鏡像模板中指定AdvancedOptions.RetainCloudAssistanttrue。

測試 (當鏡像模板中設定了測試模板時執行

驗證構建出的鏡像是否符合預期。如果模板中定義了測試流程,系統會使用上一步產生的目標鏡像建立一台新的測試執行個體,並使用雲助手執行測試組件中的命令。

如果有測試命令失敗,則會終止構建,並且狀態為測試失敗。
  • 安裝雲助手時會使用另一台臨時執行個體進行離線安裝,因此在測試階段最多會建立兩台執行個體,會產生執行個體費用。

  • 即使測試失敗,構建階段產生的目標鏡像也不會被刪除,您仍然可以使用,若不再使用需手動進行刪除。

分發(當鏡像模板中指定了需要共用的其它阿里雲帳號或者需要複製的其他地區時執行

將構建的鏡像複製到指定的地區,並在每個地區都共用給指定的阿里雲帳號。

如果因為一些未知原因共用或者複製失敗,狀態會變為部分成功,這意味著您構建的鏡像是可用的,但需要手動進行複製和共用。

無。

回收

釋放並刪除在整個構建過程中建立的所有臨時資源,包括執行個體、磁碟、網路資源和臨時源鏡像等。

重要

請勿手工使用臨時的網路資源建立新的執行個體,可能會導致資源清理失敗,或者影響您的業務。

如果清理失敗了,構建狀態會變為部分成功,建議根據構建日誌確認是否有殘留的資源。

使用須知

  • 費用:鏡像構建服務(ImageBuilder)本身免費。但構建流程會先匯入一個鏡像,再基於該鏡像進行修複,建立一個新的鏡像,因此整個過程中會產生2個鏡像,但匯入的原始鏡像會被刪除。流程中會自動建立和使用一些隨用隨付的臨時資源(如ECS執行個體、快照等),這些資源會產生費用。任務結束後,臨時資源會自動釋放。詳情請參考Elastic Compute Service定價頁

  • 許可權

    • 首次使用:系統會引導您建立名為AliyunServiceRoleForECSImageBuilder的服務關聯角色(SLR),以授予鏡像構建服務訪問您其他雲資源的許可權。您可以參考管理鏡像構建服務關聯角色添加許可權。

    • RAM使用者:如果使用RAM使用者操作,需要為其授予CreateImagePipelineStartImagePipelineExecutionDescribeImagePipelineExecutions許可權。

  • 配額:鏡像構建過程會臨時佔用您賬戶下的資源配額(如VPC、自訂鏡像、安全性群組、構建模板等)。請在執行任務前,前往Elastic Compute Service配額列表檢查並確保相關配額充足。

操作步驟

步驟一:準備並上傳鏡像檔案至OSS

為確保鏡像能被ECS服務訪問和處理,您需要先將鏡像檔案上傳到Object Storage Service。

  1. 請務必參考匯入鏡像必讀文檔,檢查並確保您的鏡像檔案滿足所有格式和配置要求,否則可能導致匯入失敗或執行個體無法啟動。

  2. 將準備好的本地鏡像檔案上傳到OSS Bucket中,並擷取該檔案的訪問URL。具體操作請參見上傳檔案

步驟二:在ECS控制台匯入自訂鏡像

  1. 訪問ECS控制台-鏡像。在頁面左側頂部,選擇目標資源所在的資源群組和地區。

  2. 鏡像頁面右上方,選擇匯入鏡像。

  3. 匯入前準備設定精靈頁面,確認匯入鏡像的準備工作已完成,單擊下一步,然後單擊繼續匯入

  4. 匯入鏡像檔案設定精靈頁面,勾選檢測後執行修複,勾選後會新增以下選項。

    • 修複後鏡像名稱:為最終產生的新鏡像設定一個易於識別的名稱,表明它是一個經過修複的、可用的鏡像。

      • 長度:2~128個字元。

      • 開頭:不能以特殊字元或數字開頭。

      • 允許字元:可包含小寫字母、數字以及特殊字元“.”、“_”、“-”。

    • 安裝雲助手:建議勾選。雲助手是實現ECS執行個體自動化營運和管理的關鍵組件。

    • 刪除源鏡像:建議勾選。系統會先將您的OSS檔案匯入為一個臨時的源鏡像,然後基於它構建出修複後的新鏡像。勾選此項可在任務成功後自動刪除該臨時源鏡像,節約鏡像配額和儲存成本。

  5. 資訊確認無誤後,單擊確定匯入

步驟三:查看構建任務與最終鏡像

單擊確定匯入後,系統將自動建立一個鏡像構建任務。整個過程比常規匯入耗時更長,請耐心等待。

  1. 過程解讀

    • 首先,在自訂鏡像列表中,您會看到一個狀態為建立中的鏡像,這是從OSS檔案直接匯入的臨時源鏡像。

    • 隨後,系統基於該源鏡像開始執行修複和構建流程。完成後,您會在列表中看到第二個鏡像,其名稱是您在修複後鏡像名稱欄位中填寫的這個鏡像是您應該使用的最終產物。在自訂鏡像列表中,修複後鏡像的名稱由您填寫的修複後鏡像名稱加上系統自動添加的尾碼(例如-fixed-1762827075379)組成。

    • 如果勾選了刪除源鏡像,任務成功後臨時源鏡像將被自動刪除。

  2. 查看任務

    • 您可以導航至執行個體與鏡像 > 鏡像構建 > 模板任務頁面。

    • 找到最新建立的任務,單擊任務ID可以查看詳細的構建階段、日誌和執行狀態。

  3. 取消任務

    • 如果需要終止任務需按以下步驟操作

      1. 在左側導覽列,選擇執行個體與鏡像 > 鏡像構建 > 鏡像模板。

      2. 找到對應的模板,點擊模板ID/模板名称,在模板構建歷史中查看對應的構建任務,點擊取消。

相關概念

  • 鏡像模板 (ImagePipeline)

    定義了整個鏡像構建的流程。它包括使用哪個源鏡像、執行哪些構建和測試步驟(通過鏡像組件定義)、以及如何分發(複製或共用)最終產生的鏡像。一個模板可以被重複執行。

  • 鏡像組件 (ImageComponent)

    定義了一系列在構建過程中需要在執行個體中執行的命令。一個組件通常對應一個獨立的功能單元,例如“安裝Nginx環境”或“執行安全基準檢查”等。鏡像組件中通過Action來定義具體的執行細節,可以參考鏡像構建服務命令