本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
增加 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
\ --regionus-east-1
-
Get-ECSAttributeList (AWS Tools for Windows PowerShell)
Get-ECSAttributeList -TargetType container-instance -AttributeName ecs.awsvpc-trunk-id -Region
us-east-1