vCPU数とメモリサイズを指定してElastic Container Instance Podを作成する場合、特定のElastic Compute Service(ECS)インスタンスタイプが必要になる場合があります。たとえば、ecs.g6インスタンスファミリのみを使用してPodを作成したいとします。この場合、k8s.aliyun.com/eci-instance-familyアノテーションを追加して、目的のECSインスタンスファミリを指定できます。このトピックでは、Elastic Container Instance Podを作成するときに特定のECSインスタンスファミリを指定または除外する方法について説明します。
機能の説明
vCPU数とメモリサイズを指定してPodを作成する場合、システムは複数のECSインスタンスタイプを使用して作成をサポートします。システムは、vCPUとメモリの仕様要件を満たし、十分なリソースを持つECSインスタンスタイプを自動的に選択します。この場合、k8s.aliyun.com/eci-instance-familyアノテーションを追加して、特定のECSインスタンスファミリを指定または除外できます。
特定のECSインスタンスファミリを指定した場合、システムは指定されたECSインスタンスファミリからのみECSインスタンスタイプを選択します。指定されたECSインスタンスファミリのリソースが不足している場合、システムはPodを作成しません。
特定のECSインスタンスファミリを除外した場合、システムはElastic Container Instanceでサポートされている他のECSインスタンスファミリからインスタンスタイプを選択してPodを作成します。
k8s.aliyun.com/eci-instance-generationアノテーションと共にk8s.aliyun.com/eci-instance-familyアノテーションを使用して、ECSインスタンスタイプをよりきめ細かく制御できます。k8s.aliyun.com/eci-instance-generationは、特定の世代のECSインスタンスファミリを指定または除外します。
次の表に、指定または除外できるECSインスタンスファミリを示します。
アーキテクチャ | ECSインスタンスファミリの世代 | ECSインスタンスファミリ |
Arm | 8 | g8y、c8y、およびr8y |
x86 | 8 | g8i、c8i、r8i、hfg8i、hfc8i、およびhfr8i |
7 | g7、c7、r7、hfg7、hfc7、hfr7、およびg7ne | |
6 | g6e、g6、c6e、c6、r6e、r6、hfc6、およびhfg6 | |
5 | u1、g5、g5ne、c5、r5、ic5、hfc5、およびhfg5 | |
4 | sn2ne、sn1ne、se1ne、およびse1 |
ECSインスタンスファミリの詳細については、以下のトピックを参照してください。
注意事項
Podは、指定または除外されたECSインスタンスファミリに基づいて作成された場合、指定されたvCPUとメモリの仕様ではなく、実際に使用されたECSインスタンスタイプに基づいて課金されます。
重要Podの作成後、
kubectl describe podコマンドを実行して、PodのYAMLの詳細を表示できます。k8s.aliyun.com/eci-instance-specフィールドの値は、Podによって使用されるECSインスタンスタイプを示します。Podは、ECSインスタンスタイプに基づいて課金されます。特定のECSインスタンスファミリを指定または除外する場合、システムは、gn6iファミリなどのGPUアクセラレーテッドインスタンスタイプや、i2gファミリなどのローカルディスクを搭載したインスタンスタイプを含む、特定のインスタンスタイプを自動的に選択できません。特定のECSインスタンスタイプを使用してPodを作成する場合は、インスタンスタイプを直接指定します。詳細については、ECSインスタンスタイプを指定してPodを作成するを参照してください。
特定のECSインスタンスファミリを指定または除外する機能は、vCPU数とメモリサイズを指定してPodを作成する場合にのみ有効になります。ECSインスタンスタイプを指定してPodを作成する場合、この機能は有効になりません。
プリエンティブルな弾性コンテナインスタンスを作成する場合、システムは、指定または除外されたインスタンスファミリに基づいて、最適なECSインスタンスタイプを選択します。選択は、インスタンスファミリのソート順とインスタンスタイプの市場価格によって決定され、市場価格はソート順よりも優先されます。ECSインスタンスファミリに厳密な要件がある場合は、1つのインスタンスファミリのみを設定することをお勧めします。
構成の説明
k8s.aliyun.com/eci-instance-familyアノテーションの有効な値は、ECSインスタンスファミリです。次の点に注意してください。
Elastic Container Instanceでサポートされている複数のECSインスタンスファミリを構成できます。
重要第8世代ECSインスタンスファミリは、Armアーキテクチャのみをサポートしています。第8世代ECSインスタンスファミリを使用してPodを作成するには、nodeSelectorフィールドを指定して、PodをArmベースの仮想ノードにスケジュールする必要があります。第8世代ECSインスタンスファミリをx86アーキテクチャを使用するものと一緒に使用することはできません。第8世代ECSインスタンスファミリを個別に指定または除外する必要があります。詳細については、例5:ArmベースのECSインスタンスファミリを指定するを参照してください。
インスタンスファミリの前にマイナス記号(
-)を追加すると、Podの作成時にインスタンスファミリが除外されます。たとえば、
k8s.aliyun.com/eci-instance-family: "-ecs.c6, -ecs.c5"は、ecs.c6およびecs.c5インスタンスファミリが除外されることを指定します。システムは、指定されたインスタンスファミリをソート順に基づいて選択します。
たとえば、
k8s.aliyun.com/eci-instance-family: "ecs.c6, ecs.c5"アノテーションは、システムが優先的にecs.c6インスタンスファミリを使用することを指定します。vCPUとメモリの仕様要件を満たすecs.c6インスタンスファミリのリソースが不足している場合は、ecs.c5インスタンスファミリが使用されます。ecs.c5インスタンスファミリのリソースも不足している場合は、Podは作成されません。
k8s.aliyun.com/eci-instance-familyアノテーションを使用する前に、次のいずれかの方法でvCPUとメモリの仕様を指定する必要があります。
コンテナのlimitsまたはrequestsパラメータを構成します。limitsパラメータを構成することをお勧めします。
k8s.aliyun.com/eci-use-specsアノテーションをPodのメタデータに追加します。
