vCPU数とメモリサイズを指定してエラスティックコンテナインスタンスPodを作成する場合、特定のElastic Compute Service(ECS)インスタンスタイプが必要になる場合があります。たとえば、g6やc6などの第6世代ECSインスタンスファミリのみを使用してPodを作成したい場合があります。この場合、k8s.aliyun.com/eci-instance-generation
アノテーションを追加して、目的の世代のECSインスタンスファミリを指定できます。このトピックでは、Podの作成時に特定世代のECSインスタンスファミリを指定または除外する方法について説明します。
機能の説明
vCPU数とメモリサイズを指定してエラスティックコンテナインスタンスPodを作成する場合、システムはさまざまなECSインスタンスタイプを使用して作成をサポートし、vCPUとメモリの要件を満たし、十分なリソースを持つインスタンスタイプを自動的に選択します。この場合、k8s.aliyun.com/eci-instance-generation
アノテーションを追加して、特定世代のECSインスタンスファミリを指定または除外できます。
特定世代のECSインスタンスファミリを指定した場合、システムは指定された世代のECSインスタンスファミリからのみECSインスタンスタイプを選択します。指定された世代のECSインスタンスファミリのリソースが不足している場合、システムはPodを作成しません。
特定世代のECSインスタンスファミリを除外した場合、システムはエラスティックコンテナインスタンスでサポートされている他の世代の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インスタンスファミリを指定または除外できます。このシナリオでは、システムは市場価格と設定した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
アノテーションを追加します。