vCPU とメモリを指定して Elastic Container Instance (ECI) Pod を作成する際、特定の基盤となるインスタンスが必要な場合 (例:ecs.g6 インスタンスファミリーのみを使用する場合) は、k8s.aliyun.com/eci-instance-family アノテーションを追加できます。本トピックでは、ECI Pod を作成する際に Elastic Compute Service (ECS) インスタンスファミリーを指定または除外する方法について説明します。
仕組み
vCPU とメモリを指定して ECI Pod を作成する場合、システムはさまざまな ECS インスタンスタイプを使用する可能性があります。システムは、vCPU とメモリの要件を満たし、かつ在庫があるインスタンスタイプを自動的に選択します。k8s.aliyun.com/eci-instance-family アノテーションを追加することで、ECS インスタンスファミリーを指定または除外して選択範囲を絞り込めます。
-
1 つまたは複数の ECS インスタンスファミリーを指定した場合、システムはそれらのファミリーからのみインスタンスタイプを選択します。指定したファミリーに一致する利用可能なインスタンスタイプがない場合、Pod の作成は失敗します。
-
1 つまたは複数の ECS インスタンスファミリーを除外した場合、システムはサポートされている他の 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 インスタンスタイプの詳細については、次のトピックをご参照ください:
使用上の注意
-
ECS インスタンスファミリーを指定または除外して作成された ECI Pod は、リクエストした vCPU とメモリではなく、プロビジョニングされた ECS インスタンスタイプに基づいて課金されます。
重要ECI Pod の作成後、
kubectl describe podコマンドを実行して詳細を確認できます。k8s.aliyun.com/eci-instance-specフィールドで、課金に使用される実際の ECS インスタンスタイプを確認してください。 -
ECS インスタンスファミリーを指定または除外する場合、システムは GPU インスタンスタイプ (例:gn6i) やローカルディスク付きのインスタンスタイプ (例:i2g) などの特定の専用インスタンスタイプを自動的に選択できません。これらのインスタンスタイプを使用するには、直接指定する必要があります。詳細については、「ECS インスタンスタイプを指定して Pod を作成する」をご参照ください。
-
この機能は、vCPU とメモリの要件を指定する場合にのみ適用されます。正確な ECS インスタンスタイプを指定する場合、このアノテーションは無視されます。
-
この機能を使用してプリエンプティブルインスタンスを作成できます。この場合、システムは設定内のインスタンスファミリーの順序と市場価格の両方を考慮し、価格を優先します。特定のインスタンスファミリーに厳密な要件がある場合は、1 つのみを設定することを推奨します。
設定
次のルールに従って、k8s.aliyun.com/eci-instance-family アノテーションの値を 1 つまたは複数の ECS インスタンスファミリーに設定します。
-
ECI でサポートされている ECS インスタンスファミリーのカンマ区切りリストを指定できます。
重要現在、第 8 世代のインスタンスタイプは Arm アーキテクチャでのみ利用可能です。Pod を作成する際は、nodeSelector を使用して Pod を Arm ベースのノードにスケジュールする必要があります。したがって、同じアノテーション値内で Arm ベースと x86 ベースのインスタンスファミリーを混在させることはできません。Arm ノードをターゲットにする場合は、他の Arm ベースのファミリーのみを指定または除外できます。設定例については、「例 5:Arm ベースのインスタンスファミリーを指定する」をご参照ください。
-
インスタンスファミリーの前にハイフン (
-) を付けて除外します。例:
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 ファミリーからインスタンスタイプを選択しようとすることを意味します。在庫がある適切なインスタンスタイプが見つからない場合、ecs.c5 ファミリーにフォールバックします。ecs.c5 ファミリーにも適切なインスタンスタイプがない場合、Pod の作成は失敗します。
k8s.aliyun.com/eci-instance-family アノテーションを使用する場合、まず vCPU とメモリを指定する必要があります。これには、次のいずれかの方法があります。
-
コンテナの
requestsまたはlimitsを定義します。limitsの使用を推奨します。 -
Pod メタデータに
k8s.aliyun.com/eci-use-specsアノテーションを追加します。