定義 Amazon ECS 用於任務的容器執行個體 - Amazon Elastic Container Service

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

定義 Amazon ECS 用於任務的容器執行個體

任務置放限制是 Amazon ECS用來判斷任務是否允許在執行個體上執行的容器執行個體規則。至少有一個容器執行個體必須符合限制條件。如果沒有符合條件限制的執行個體,則任務將會保持 PENDING 狀態。當您建立新服務或更新現有服務時,您可以為服務的任務指定任務放置限制條件。

您可以使用 placementConstraint 參數在服務定義、任務定義或任務中指定任務置放限制。

"placementConstraints": [ { "expression": "The expression that defines the task placement constraints", "type": "The placement constraint type to use" } ]

下表說明如何使用 參數。

Constraint type (限制條件類型) 可以在下列時間指定
distinctInstance

將每個作用中任務放在不同的容器執行個體上。

Amazon ECS會查看任務置放所需的任務狀態。例如,如果現有任務的所需狀態為 STOPPED, (但最後一個狀態不是),則即使distinctInstance置放受到限制,新的傳入任務仍可放置在相同的執行個體上。因此,您可能會在同一個執行個體RUNNING上看到最後狀態為 的 2 個任務。

重要

我們建議尋求其任務強大隔離的客戶使用 Fargate。Fargate 在硬體虛擬化環境中執行每個任務。這可確保這些容器化工作負載不會與其他任務共用網路介面、Fargate 短暫儲存體CPU、 或 記憶體。如需詳細資訊,請參閱 的安全概觀 AWS Fargate

memberOf

在滿足運算式的容器執行個體上放置任務。

使用memberOf限制類型時,您可以使用叢集查詢語言建立表達式,該語言定義 Amazon ECS可以放置任務的容器執行個體。此表達式可讓您依屬性分組容器執行個體。表達式會進入 的 expression 參數placementConstraint

Amazon ECS容器執行個體屬性

您可以將自訂中繼資料新增至容器執行個體,稱為屬性。每個屬性都有名稱和選用字串值。您可以使用 Amazon 提供的內建屬性ECS或定義自訂屬性。

以下章節包含範例內建屬性、選擇性屬性和自訂屬性。

內建屬性

Amazon ECS會自動將下列屬性套用至您的容器執行個體。

ecs.ami-id

AMI 用來啟動執行個體的 ID。此屬性的範例值為 ami-1234abcd

ecs.availability-zone

執行個體的可用區域。此屬性的範例值為 us-east-1a

ecs.instance-type

執行個體的執行個體類型。此屬性的範例值為 g2.2xlarge

ecs.os-type

執行個體的作業系統。此屬性的可能值為 linuxwindows

ecs.os-family

執行個體的作業系統版本。

若為 Linux 執行個體,有效值為 LINUX。對於 Windows 執行個體, 會以 WINDOWS_SERVER_<OS_Release>_<FULL or CORE> 格式ECS設定值。有效值為 WINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2022_COREWINDOWS_SERVER_20H2_COREWINDOWS_SERVER_2019_FULLWINDOWS_SERVER_2019_COREWINDOWS_SERVER_2016_FULL

這對 Windows 容器很重要, Windows containers on AWS Fargate 因為每個 Windows 容器的作業系統版本都必須與主機的作業系統版本相符。如果容器映像的 Windows 版本與主機不同,則容器不會啟動。如需詳細資訊,請參閱 Microsoft 文件網站上的 Windows 容器版本相容性

如果您的叢集執行多個 Windows 版本,您可以使用置放限制條件:,確保任務放置在在相同版本上執行的EC2執行個體上memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)。如需詳細資訊,請參閱擷取 Amazon ECS最佳化的 Windows AMI中繼資料

ecs.cpu-architecture

執行個體的CPU架構。此屬性的範例值為 x86_64ARM64

ecs.vpc-id

VPC 執行個體已啟動。此屬性的範例值為 vpc-1234abcd

ecs.subnet-id

執行個體使用的子網路。此屬性的範例值為 subnet-1234abcd

選擇性屬性

Amazon ECS可能會將下列屬性新增至您的容器執行個體。

ecs.awsvpc-trunk-id

如果此屬性存在,執行個體則具有一個幹線網路界面。如需詳細資訊,請參閱增加 Amazon ECS Linux 容器執行個體網路介面

ecs.outpost-arn

如果存在此屬性,則會包含 Outpost 的 Amazon Resource Name (ARN)。如需詳細資訊,請參閱上的 Amazon Elastic Container Service AWS Outposts

ecs.capability.external

若存在此屬性,執行個體將被識別為外部執行個體。如需詳細資訊,請參閱外部啟動類型的 Amazon ECS叢集

自訂屬性

您可以將自訂屬性套用至容器執行個體。例如,您可以定義名稱為 "stack" 且值為 "prod" 的屬性。

在指定自訂屬性時,必須考慮下列事項。

  • name 必須包含 1 至 128 個字元,而名稱可能包含字母 (大小寫)、數字、連字號、底線、正斜線、反斜線或句號。

  • value 必須包含 1 至 128 個字元,而且可能包含字母 (大小寫)、數字、連字號、底線、句號、@ 符號、正斜線、反斜線、冒號或空格。值不得包含任何前置或結尾空格。