增加 Amazon ECS Linux 容器執行個體網路介面 - Amazon Elastic Container Service

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

增加 Amazon ECS Linux 容器執行個體網路介面

注意

此功能不適用於 Fargate。

使用 awsvpc 網路模式的每個任務都會收到自己的彈性網路介面 (ENI),其會連接到託管它的容器執行個體。Amazon EC2 執行個體可連接的網路介面數量有預設限制,主要網路介面計算在內。例如,根據預設,c5.large 執行個體最多可連接三個 ENI。執行個體的主要網路界面計算在內,所以您可以再連接兩個 ENI 到執行個體。由於使用 awsvpc 網路模式的每個任務都需要 ENI,因此您通常只能在此執行個體類型上執行兩個此類任務。

Amazon ECS 支援使用支援的 Amazon EC2 執行個體類型來啟動ENI密度更高的容器執行個體。當您使用這些執行個體類型並開啟awsvpcTrunking帳戶設定時,新啟動的容器執行個體上會提供其他 ENIs。此組態可讓您在每個容器執行個體中安排更多任務。若要使用 主控台開啟功能,請參閱 修改 Amazon ECS帳戶設定。若要使用 AWS CLI 開啟功能,請參閱 使用 管理 Amazon ECS帳戶設定 AWS CLI

例如,具有 的c5.large執行個體awsvpcTrunking有 12 個的增加ENI限制。容器執行個體會有主要網路介面,而 Amazon ECS 會建立「幹線」網路介面,並將它連接到容器執行個體。因此,此組態可讓您在容器執行個體中啟動十項任務,而不是目前的兩項任務。

幹線網路介面由 Amazon ECS 全受管,當您在叢集中終止或取消註冊您的容器執行個體時,會將其刪除。如需詳細資訊,請參閱EC2 啟動類型的 Amazon ECS 任務聯網選項

考量事項

使用中ENI繼功能時,請考慮下列事項。

  • 只有 Amazon ECS 最佳化 AMI 的 Linux 變體,或其他 Amazon Linux 變體具有 或更新版本1.28.1的容器代理程式,以及 版本 1.28.1-2或更新版本的 ecs-init 套件,支援增加ENI的限制。如果您使用 Amazon ECS 最佳化 AMI 的最新 Linux 變體,將會滿足這些要求。目前不支援 Windows 容器。

  • 只有在啟用 之後啟動的新 Amazon EC2 執行個體才會awsvpcTrunking收到增加ENI的限制和幹線網路介面。無論採取何種動作,先前啟動的執行個體都不會收到這些功能。

  • Amazon EC2 執行個體必須關閉資源型 IPv4 DNS 請求。若要停用此選項,請在 Amazon EC2 主控台中建立新執行個體時清除啟用資源型 IPV4 (記錄) DNS 請求選項。若要使用 停用此選項 AWS CLI,請使用下列命令。

    aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
  • 不支援共用子網路中的 Amazon EC2 執行個體。就算使用也無法註冊到叢集。

  • 您的任務必須使用awsvpc網路模式和 EC2 啟動類型。使用 Fargate 啟動類型的任務一律會收到專用,ENI無論啟動多少,因此不需要此功能。

  • 您的任務必須在與容器執行個體相同的 Amazon VPC 中啟動。如果您的任務不在同一 VPC 中,則任務會因為屬性錯誤而失敗。

  • 啟動新的容器執行個體時,執行個體將轉換為 REGISTERING 狀態,同時為執行個體佈建幹線彈性網路介面。如果註冊失敗,執行個體會轉換到 REGISTRATION_FAILED 狀態。透過說明容器執行個體以檢視說明失敗原因的 statusReason 欄位,可對失敗註冊進行故障排除。然後可以手動解除註冊或終止容器執行個體。容器執行個體成功取消註冊或終止後,Amazon ECS 會刪除中繼線 ENI。

    注意

    Amazon ECS 會發出容器執行個體狀態變更事件,您可以監控執行個體是否轉換為 REGISTRATION_FAILED 狀態。如需詳細資訊,請參閱Amazon ECS 容器執行個體狀態變更事件

  • 容器執行個體終止後,執行個體將轉換為 DEREGISTERING 狀態,同時解除佈建幹線彈性網路介面。然後,執行個體會轉換為 INACTIVE 狀態。

  • 如果公有子網路中具有增加ENI限制的容器執行個體停止然後重新啟動,執行個體會失去其公有 IP 地址,而容器代理程式會失去其連線。

  • 當您啟用 時awsvpcTrunking,容器執行個體會收到使用 VPC 預設安全群組的額外 ENI ,並由 Amazon ECS 管理。

必要條件

啟動具有增加ENI限制的容器執行個體之前,必須先完成下列先決條件。

  • 必須先建立 Amazon ECS 的服務連結角色。Amazon ECS 服務連結角色為 Amazon ECS 提供代表您呼叫其他 AWS 服務的許可。這個角色會在您建立叢集,或在 AWS Management Console中建立或更新服務時,自動為您建立。如需詳細資訊,請參閱使用 Amazon ECS 的服務連結角色。您也可以使用下列 AWS CLI 命令建立服務連結角色。

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • 您的帳戶或容器執行個體 IAM 角色必須啟用 awsvpcTrunking 帳戶設定。建議您建立 2 個容器執行個體角色 (ecsInstanceRole)。然後,您可以為一個角色啟用awsvpcTrunking帳戶設定,並將該角色用於需要 ENI 中繼的任務。如需容器執行個體角色的相關資訊,請參閱 Amazon ECS 容器執行個體 IAM 角色

符合先決條件後,您可以使用其中一個支援的 Amazon EC2 執行個體類型來啟動新的容器執行個體,且執行個體會有更高的ENI限制。如需支援的執行個體類型清單,請參閱 支援增加 Amazon ECS 容器網路介面的執行個體。容器執行個體必須具有容器代理程式的 1.28.1 版或更新版本,以及 ecs-init 套件的 1.28.1-2 版或更新版本。如果您使用 Amazon ECS 最佳化 AMI 的最新 Linux 變體,將會滿足這些要求。如需詳細資訊,請參閱啟動 Amazon ECS Linux 容器執行個體

重要

Amazon EC2 執行個體必須關閉資源型 IPv4 DNS 請求。若要停用此選項,在使用 Amazon EC2 主控台建立新執行個體時,請務必取消選取 Enable resource-based IPV4 (A record) DNS requests (啟用資源型 IPV4 (A 記錄) DNS 請求) 選項。若要使用 停用此選項 AWS CLI,請使用下列命令。

aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
若要使用 檢視具有增加ENI限制的容器執行個體 AWS CLI

每個容器執行個體都有預設的網路界面,稱為幹線網路界面。使用下列命令,透過查詢 ecs.awsvpc-trunk-id 屬性來列出具有增加ENI限制的容器執行個體,這表示其具有中繼網路介面。

  • list-attributes (AWS CLI)

    aws ecs list-attributes \ --target-type container-instance \ --attribute-name ecs.awsvpc-trunk-id \ --cluster cluster_name \ --region us-east-1
  • Get-ECSAttributeList (AWS Tools for Windows PowerShell)

    Get-ECSAttributeList -TargetType container-instance -AttributeName ecs.awsvpc-trunk-id -Region us-east-1