vCPU 数とメモリサイズを指定して Elastic Container Instance (ECI) Pod を作成する場合、特定の Elastic Compute Service (ECS) インスタンスタイプが必要になることがあります。例えば、g6 や c6 などの第 6 世代 ECS インスタンスファミリーのみを使用して Pod を作成したい場合があります。このような場合、k8s.aliyun.com/eci-instance-generation アノテーションを追加して、目的の世代の ECS インスタンスファミリーを指定できます。このトピックでは、Pod 作成時に特定の世代の ECS インスタンスファミリーを指定または除外する方法について説明します。
機能の説明
vCPU 数とメモリサイズを指定して Elastic Container Instance (ECI) Pod を作成すると、システムはさまざまな ECS インスタンスタイプを使用して作成をサポートし、vCPU とメモリの要件を満たし、十分なリソースを持つインスタンスタイプを自動的に選択します。この場合、k8s.aliyun.com/eci-instance-generation アノテーションを追加して、特定の世代の ECS インスタンスファミリーを指定または除外できます。
特定の世代の ECS インスタンスファミリーを指定した場合、システムは指定された世代の ECS インスタンスファミリーからのみ ECS インスタンスタイプを選択します。指定された世代の ECS インスタンスファミリーのリソースが不足している場合、システムは Pod を作成しません。
特定の世代の ECS インスタンスファミリーを除外した場合、システムは ECI がサポートする他の世代の ECS インスタンスファミリーから ECS インスタンスタイプを選択して Pod を作成します。
次の表に、Pod 作成時に指定または除外できる 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 インスタンスファミリーに基づいて作成された Pod は、実際に使用された ECS インスタンスタイプに基づいて課金されます。指定された vCPU 数とメモリサイズに基づいて課金されるわけではありません。
重要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 インスタンスファミリーを指定または除外して、プリエンプティブル ECI を作成できます。このシナリオでは、システムは市場価格と設定した ECS インスタンスファミリーの世代の順序に基づいて、最適な ECS インスタンスタイプを選択します。ECS インスタンスファミリーの世代に厳しい要件がある場合は、1つの世代のみを指定することを推奨します。
特定の世代の ECS インスタンスファミリーを指定または除外する機能は、vCPU 数とメモリサイズを指定して Pod を作成する場合にのみ有効になります。Pod 作成時に最初に ECS インスタンスタイプを指定した場合、この機能は有効になりません。
設定の説明
k8s.aliyun.com/eci-instance-generation の有効な値は、ECS インスタンスファミリーの世代です。次の点にご注意ください。
複数の世代を設定できます。有効な値は、Pod の作成に使用できる ECS インスタンスファミリーの世代です。
重要第 8 世代の ECS インスタンスファミリーは、Arm アーキテクチャのみをサポートします。第 8 世代の ECS インスタンスファミリーを使用して Pod を作成するには、nodeSelector フィールドを指定して Pod を Arm ベースの仮想ノードにスケジュールする必要があります。第 8 世代の ECS インスタンスファミリーを x86 アーキテクチャを使用するものと併用することはできません。Arm ベースの Pod を作成する場合、特定の世代の ECS インスタンスファミリーを指定または除外する必要はありません。例えば、第 8 世代の ECS インスタンスファミリーを除外する必要はありません。詳細については、「Pod を Arm ベースの仮想ノードにスケジュールする」および「Arm アーキテクチャの ECS インスタンスタイプ」をご参照ください。
ECS インスタンスファミリーの世代の前にマイナス記号 (
-) を付けると、その世代は除外されます。例えば、
k8s.aliyun.com/eci-instance-generation: "-5,-4"と指定すると、第5世代と第4世代の ECS インスタンスファミリーが除外され、第7世代または第6世代の ECS インスタンスファミリーが使用されます。システムは、指定された順序に基づいて世代を選択します。
例えば、
k8s.aliyun.com/eci-instance-generation: "6,5"アノテーションは、システムが優先的に第 6 世代 ECS インスタンスファミリーを使用することを指定します。必要な vCPU とメモリの仕様を満たす第 6 世代 ECS インスタンスファミリーのリソースが不足している場合、第 5 世代 ECS インスタンスファミリーが使用されます。第 5 世代 ECS インスタンスファミリーのリソースも不足している場合、Pod は作成されません。
k8s.aliyun.com/eci-instance-generation アノテーションを使用する前に、次のいずれかのメソッドを使用して vCPU 数とメモリサイズを指定する必要があります:
コンテナの limits または requests パラメーターを指定します。limits パラメーターを指定することを推奨します。
Pod のメタデータに
k8s.aliyun.com/eci-use-specsアノテーションを追加します。