增加 Amazon ECS Linux 容器實例網絡界面 - Amazon Elastic Container Service

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

增加 Amazon ECS Linux 容器實例網絡界面

注意

此功能不適用於 Fargate。

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

Amazon ECS 支援使用支援的 Amazon EC2 執行個體類型,啟動ENI密度更高的容器執行個體。當您使用這些執行個體類型並開啟awsvpcTrunking帳戶設定時,新啟動的容器執行個體會提供額外的 ENI。此組態可讓您在每個容器執行個體中安排更多任務。如需有關awsvpcTrunking帳戶設定的資訊,請參閱透過帳戶設定存取 Amazon ECS 功能

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

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

考量事項

使用ENI幹線功能時,請考慮下列事項。

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

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

  • 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
  • 不支援共用子網路中的 Amazon EC2 執行個體。就算使用也無法註冊到叢集。

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

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

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

    注意

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

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

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

  • 啟用後awsvpcTrunking,容器執行個體會收到一ENI個使用 VPC 預設安全群組的額外資訊,並由 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
  • 取得 ECs () AttributeListAWS Tools for Windows PowerShell

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