將外部執行個體註冊至 Amazon ECS 叢集 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將外部執行個體註冊至 Amazon ECS 叢集

對於您向 Amazon ECS 叢集註冊的每個外部執行個體,其必須安裝 SSM Agent、Amazon ECS 容器代理程式和 Docker。若要將外部執行個體註冊至 Amazon ECS 叢集,必須先將其註冊為 AWS Systems Manager 受管執行個體。您可以在 Amazon ECS 主控台上按幾下即可建立安裝指令碼。安裝指令碼包含 Systems Manager 啟用金鑰,以及安裝每個必要的代理程式和 Docker 的命令。必須在內部部署伺服器或虛擬機器上執行安裝指令碼,才能完成安裝和註冊步驟。

注意

在向叢集註冊 Linux 外部執行個體之前,請先在外部執行個體上建立 /etc/ecs/ecs.config 檔案,並新增您想要的任何容器代理程式組態參數。將外部執行個體註冊到叢集之後,您無法執行此操作。如需詳細資訊,請參閱Amazon ECS 容器代理程式組態

AWS Management Console
  1. https://console.aws.amazon.com/ecs/ v2 開啟主控台。

  2. 從導覽列中選取要使用的「區域」。

  3. 在導覽窗格中,選擇叢集

  4. Clusters (叢集) 頁面上,選擇要向其註冊外部執行個體的叢集。

  5. 叢集 上:name 頁面,選擇基礎設施索引標籤。

  6. Register external instances (註冊外部執行個體) 頁面上,完成下列步驟。

    1. 對於 Activation key duration (in days) (啟用金鑰持續時間 (以天為單位)),輸入啟用金鑰保持作用中的天數。在您輸入的天數到期之後,當註冊外部執行個體時,金鑰就不再有效。

    2. 對於 Number of instances (執行個體數目),輸入要使用啟用金鑰向叢集註冊的外部執行個體數。

    3. 針對執行個體角色,選擇要與外部執行個體建立關聯的 IAM 角色。如果尚未建立角色,請選擇建立新角色,讓 Amazon ECS 代表您建立角色。如需外部執行個體需要哪些 IAM 許可的詳細資訊,請參閱 Amazon ECS Anywhere IAM 角色

    4. 複製註冊命令。應該在您要將其註冊到叢集的每個外部執行個體上執行此命令。

      重要

      指令碼的 bash 部分必須以 root 身分執行。如果命令不是以 root 身分執行,則會傳回錯誤。

    5. 選擇關閉

AWS CLI for Linux operating systems
  1. 建立 Systems Manager 啟用對。這是用於 Systems Manager 受管執行個體啟用。輸出包含 ActivationIdActivationCode。在後續步驟中會使用它們。請務必指定您建立的 ECS Anywhere IAM 角色。如需詳細資訊,請參閱Amazon ECS Anywhere IAM 角色

    aws ssm create-activation --iam-role ecsAnywhereRole | tee ssm-activation.json
  2. 在您的內部部署伺服器或虛擬機器 (VM) 上,下載安裝指令碼。

    curl --proto "https" -o "/tmp/ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh"
  3. (選用) 在您的內部部署伺服器或虛擬機器 (VM) 上,使用指令碼簽章檔案透過以下步驟來驗證安裝指令碼。

    1. 下載並安裝 GnuPG。如需 GNUpg 的詳細資訊,請參閱 GnuPG 網站。若您的系統為 Linux,請使用套件軟體管理工具在 Linux 上安裝 gpg

    2. 擷取 Amazon ECS PGP 公有金鑰。

      gpg --keyserver hkp://keys.gnupg.net:80 --recv BCE9D9A42D51784F
    3. 下載安裝指令碼簽章。簽章是儲存在具有 .asc 副檔名的檔案中的 ascii 分離 PGP 簽章。

      curl --proto "https" -o "/tmp/ecs-anywhere-install.sh.asc" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh.asc"
    4. 使用金鑰驗證安裝指令碼檔案。

      gpg --verify /tmp/ecs-anywhere-install.sh.asc /tmp/ecs-anywhere-install.sh

      預期的輸出如下:

      gpg: Signature made Tue 25 May 2021 07:16:29 PM UTC gpg: using RSA key 50DECCC4710E61AF gpg: Good signature from "Amazon ECS <ecs-security@amazon.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: F34C 3DDA E729 26B0 79BE AEC6 BCE9 D9A4 2D51 784F Subkey fingerprint: D64B B6F9 0CF3 77E9 B5FB 346F 50DE CCC4 710E 61AF
  4. 在您的內部部署伺服器或虛擬機器 (VM) 上,執行安裝指令碼。在第一步中指定叢集名稱、區域和 Systems Manager 啟用 ID 和啟用代碼。

    sudo bash /tmp/ecs-anywhere-install.sh \ --region $REGION \ --cluster $CLUSTER_NAME \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE

    對於已安裝 NVIDIA 工作負載的 GPU 驅動程式的內部部署伺服器或虛擬機器 (VM),您必須將--enable-gpu旗標新增至安裝指令碼。指定此旗標時,安裝指令碼會驗證 NVIDIA 驅動程式是否正在執行,然後新增執行 Amazon ECS 任務所需的組態變數。如需在任務定義中執行 GPU 工作負載和指定 GPU 要求的詳細資訊,請參閱 在 Amazon GPUs 任務定義中指定 ECS

    sudo bash /tmp/ecs-anywhere-install.sh \ --region $REGION \ --cluster $CLUSTER_NAME \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE \ --enable-gpu

進行以下步驟向其他叢集註冊現有的外部執行個體

若要向其他叢集註冊現有的外部執行個體
  1. 停止 Amazon ECS 容器代理程式。

    sudo systemctl stop ecs.service
  2. 編輯 /etc/ecs/ecs.config 檔案,在 ECS_CLUSTER 行中,確保叢集名稱與要註冊外部執行個體的叢集名稱相符。

  3. 移除現有的 Amazon ECS 代理程式資料。

    sudo rm /var/lib/ecs/data/agent.db
  4. 啟動 Amazon ECS 容器代理程式。

    sudo systemctl start ecs.service
AWS CLI for Windows operating systems
  1. 建立 Systems Manager 啟用對。這是用於 Systems Manager 受管執行個體啟用。輸出包含 ActivationIdActivationCode。在後續步驟中會使用它們。請務必指定您建立的 ECS Anywhere IAM 角色。如需詳細資訊,請參閱Amazon ECS Anywhere IAM 角色

    aws ssm create-activation --iam-role ecsAnywhereRole | tee ssm-activation.json
  2. 在您的內部部署伺服器或虛擬機器 (VM) 上,下載安裝指令碼。

    Invoke-RestMethod -URI "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install.ps1" -OutFile “ecs-anywhere-install.ps1”
  3. (選用) Powershell 指令碼由 Amazon 簽署,因此 Windows 會自動對該指令碼執行相同的憑證驗證。您不需要執行任何手動驗證。

    若要手動驗證憑證,請用右鍵按一下該檔案,導覽到屬性,然後使用 Digital Signatures (數位簽署) 索引標籤取得更多詳細資料。

    僅在主機在憑證存放區中具有憑證時,此選項才可用。

    驗證應會傳回類似以下內容的資訊:

    # Verification (PowerShell) Get-AuthenticodeSignature -FilePath .\ecs-anywhere-install.ps1 SignerCertificate Status Path ----------------- ------ ---- EXAMPLECERTIFICATE Valid ecs-anywhere-install.ps1 ... Subject : CN="Amazon Web Services, Inc.",... ----
  4. 在您的內部部署伺服器或虛擬機器 (VM) 上,執行安裝指令碼。在第一步中指定叢集名稱、區域和 Systems Manager 啟用 ID 和啟用代碼。

    .\ecs-anywhere-install.ps1 -Region $Region -Cluster $Cluster -ActivationID $ActivationID -ActivationCode $ActivationCode
  5. 確認 Amazon ECS 容器代理程式正在執行。

    Get-Service AmazonECS Status Name DisplayName ------ ---- ----------- Running AmazonECS Amazon ECS

進行以下步驟向其他叢集註冊現有的外部執行個體

若要向其他叢集註冊現有的外部執行個體
  1. 停止 Amazon ECS 容器代理程式。

    Stop-Service AmazonECS
  2. 修改 ECS_CLUSTER 參數,以便叢集名稱與要註冊外部執行個體的叢集名稱相符。

    [Environment]::SetEnvironmentVariable("ECS_CLUSTER", $ECSCluster, [System.EnvironmentVariableTarget]::Machine)
  3. 移除現有的 Amazon ECS 代理程式資料。

    Remove-Item -Recurse -Force $env:ProgramData\Amazon\ECS\data\*
  4. 啟動 Amazon ECS 容器代理程式。

    Start-Service AmazonECS

AWS CLI 可用來在執行安裝指令碼之前建立 Systems Manager 啟用,以完成外部執行個體註冊程序。