安裝 Amazon ECS 容器代理程式 - Amazon Elastic Container Service

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

安裝 Amazon ECS 容器代理程式

如果您想要在 Amazon ECS 叢集註冊 Amazon EC2 執行個體,而該執行個體並未使用以 Amazon ECS 最佳化 AMI 為基礎的 AMI,則可以使用下列程序手動安裝 Amazon ECS 容器代理程式。若要這麼做,您可以從其中一個區域 Amazon S3 儲存貯體或從 Amazon 彈性容器登錄公用下載代理程式。如果您從其中一個區域 Amazon S3 儲存貯體下載,您可以選擇性地使用 PGP 簽章驗證容器代理程式檔案的有效性。

注意

Amazon ECS 和 Docker 服務的 systemd 單位都有一個指令,要在啟動這兩個服務前等待 cloud-init 完成。在您的 Amazon EC2 使用者資料完成執行前,cloud-init 程序不會被視為完成。因此,透過 Amazon EC2 使用者資料啟動 Amazon ECS 或 Docker 可能會造成死鎖。若要使用 Amazon EC2 使用者資料來啟動容器代理程式,您可以使用 systemctl enable --now --no-block ecs.service

在非 Amazon Linux EC2 執行個體上安裝 Amazon ECS 容器代理程式

若要在 Amazon EC2 執行個體上安裝 Amazon ECS 容器代理程式,您可以從其中一個區域 Amazon S3 儲存貯體下載代理程式並進行安裝。

注意

使用非 Amazon Linux AMI 時,您的 Amazon EC2 執行個體需要 cgroupfs 支援 cgroup 驅動程式,以便 Amazon ECS 代理程式支援任務層級資源限制。如需詳細資訊,請參閱上 GitHub的 Amazon ECS 代理程式

每個系統架構最新的 Amazon ECS 容器代理程式檔案 (依區域) 列出如下,以供參考。

區域 區域名稱 Amazon ECS init deb 檔案 Amazon ECS init rpm 檔案
us-east-2 美國東部 (俄亥俄)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

us-east-1 美國東部 (維吉尼亞北部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

us-west-1 美國西部 (加利佛尼亞北部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

us-west-2 美國西部 (奧勒岡)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ap-east-1 亞太區域 (香港)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ap-northeast-1 亞太區域 (東京)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ap-northeast-2 亞太區域 (首爾)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ap-south-1 亞太區域 (孟買)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ap-southeast-1 亞太區域 (新加坡)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ap-southeast-2 亞太區域 (悉尼)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

ca-central-1 加拿大 (中部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

eu-central-1 歐洲 (法蘭克福)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

eu-west-1 歐洲 (愛爾蘭)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

eu-west-2 歐洲 (倫敦)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

eu-west-3 Europe (Paris)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

sa-east-1 南美洲 (聖保羅)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64

Amazon ECS aarch64 (aarch64)

us-gov-east-1 AWS GovCloud (美國東部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

us-gov-west-1 AWS GovCloud (美國西部)

Amazon ECS init amd64 (amd64)

Amazon ECS init arm64 (arm64)

Amazon ECS init x86_64 (x86_64)

Amazon ECS aarch64 (aarch64)

使用非 Amazon Linux AMI 在 Amazon EC2 執行個體上安裝 Amazon ECS 容器代理程式
  1. 使用允許存取 Amazon ECS 的 IAM 角色來啟動 Amazon EC2 執行個體。如需詳細資訊,請參閱 Amazon ECS 容器執行個體 IAM 角色

  2. 連線到您的執行個體。

  3. 在您的執行個體上安裝最新版本的 Docker。

  4. 檢查您的 Docker 版本,驗證您的系統符合最低版本需求。

    注意

    可靠指標的最低 Docker 版本是 Docker 版本 v20.10.13 及更新版本,該版本隨附於 Amazon ECS 最佳化 AMI 20220607 及更新版本中。

    Amazon ECS 代理程式版本 1.20.0 和更新版本已不支援 1.9.0 之前的 Docker 版本。

    docker --version
  5. 下載適用於您作業系統和系統架構的 Amazon ECS 代理程式檔案並加以安裝。

    對於 deb 架構:

    ubuntu:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.amd64.deb ubuntu:~$ sudo dpkg -i amazon-ecs-init-latest.amd64.deb

    對於 rpm 架構:

    fedora:~$ curl -O https://s3.us-west-2.amazonaws.com/amazon-ecs-agent-us-west-2/amazon-ecs-init-latest.x86_64.rpm fedora:~$ sudo yum localinstall -y amazon-ecs-init-latest.x86_64.rpm
  6. 編輯/lib/systemd/system/ecs.service檔案,並在[Unit]區段末尾新增下列行。

    After=cloud-final.service
  7. (選用) 若要將執行個體註冊到 default 叢集之外的叢集,請編輯 /etc/ecs/ecs.config 檔案並新增以下內容。以下範例會指定 MyCluster 叢集。

    ECS_CLUSTER=MyCluster

    如需這些和其他代理執行時間選項的詳細資訊,請參閱「Amazon ECS 容器代理程式組態」。

    注意

    您可以選擇性地將您的代理程式環境變數存放在 Amazon S3 中 (可在啟動時使用 Amazon EC2 使用者資料將其下載到您的容器執行個體)。針對敏感性資訊 (例如私有存放庫的身分驗證登入資料),此為建議選項。如需詳細資訊,請參閱在 Amazon S3 中存儲亞馬遜 ECS 容器實例配置在 Amazon ECS 中使用非AWS 容器映像

  8. 啟動 ecs 服務。

    ubuntu:~$ sudo systemctl start ecs

使用主機網路模式執行 Amazon ECS 代理程式

當執行 Amazon ECS 容器代理程式時,ecs-init 將使用 host 網路模式建立容器代理程式容器。對於容器代理程式容器,這是唯一支援的網路模式。

對於容器代理程式啟動的容器,這允許您封鎖對 Amazon EC2 執行個體中繼資料服務端點 (http://169.254.169.254) 的存取。這可確保容器不能從容器執行個體設定檔存取 IAM 角色憑證,並強制任務只使用 IAM 任務角色憑證。如需詳細資訊,請參閱 Amazon ECS 任務 IAM 角色

這也可讓容器代理程式不會在 docker0 橋接上爭奪連線和網路流量。